Senior Back-end Engineer
Software Engineering
Waterloo, ON, Canada
USD 120k-160k / year + Equity
Full Time | Hybrid (Waterloo / Toronto)
Start date: Immediately upon hire
Full Role Description - https://docs.google.com/document/d/1Y4uiXYqMCPCGqycS6k8nm-9_EZVKWEyzcCaehNOVLJU/edit?usp=sharing
Application link - https://www.ourcommunitysafety.ca/undefined/online-reports/report/sr_back_end_eng_may_2026
Role intro: why this role existsRubicon is a Public Safety platform with a mission to strengthen community safety. We do this by making software tools that help connect people, partners, and police.
We’re a team of 11 and growing! We’re in the Goldilocks zone: real customers that love the product, real revenue that helps us grow sustainably, and a flat hierarchy where you can ship fast.
We want to accelerate product delivery (there’s so much to build!), and AI makes it easier than ever to ship code. AI also makes it easier than ever to create chaos in the codebase. We need someone who can help us use AI to move faster without sacrificing maintainability, security, or engineering judgment. Someone who works with the team to establish engineering processes that will scale with more human engineers and AI coding agents.
You’ll join a small, focused, high‑performing team that works directly with the founders. We offer competitive compensation - salary, performance-based bonus, and equity (we’re bootstrapped but growing like a startup). We want you to do the best work of your career here, so you should expect high autonomy, high expectations, and ownership.
What you’ll ownYou will predominantly work alongside the lead back-end engineer, and then interface with full-stack engineers. You’ll report to the founders (both of whom are also engineers), customers (911 call takers, officers, citizens, loss prevention teams, etc.).
General Split:
- 70% back-end development - APIs, databases, architecture, security
- 30% infrastructure / DevOps - AWS, CI/CD, observability, reliability
Back-end code development:
- Build and evolve a maintainable code base - API & Databases.
- Evolve coding & architectural standards over time - for both engineers and AI coding agents
- Adding AI harnesses (MD files, review layers, etc.) to accelerate speed of development with AI agents without sacrificing quality and understanding.
- Continuously work on improving security layers.
- Examining third-party libraries, tools, etc. (paid enterprise and open source) that improve the quality of code, quality of development process (i.e. quality of life for engineers)
Infrastructure
- Help maintain the Rubicon application on AWS, whether it is launching in new regions, adding new services, or self-hosting and integrating third-party applications
- Evaluate current usage of other cloud environments and maintain awareness of differences between the platforms
- Adding improvements for better alerting, observability, and automated recovery to minimize downtime
- Making enhancements that improve application speed, while reducing avoidable costs
- Being on call to bring services back up if they fail
DevOps (CI/CD)
- Make continuous improvements to CI/CD to simplify the process for the team so others can move faster, and create automated tests to help catch mistakes before they are released.
- Working on a permissioning system that can scale with applications in the platform and new permissions within each application.
- Working on Google Drive-like sharing feature for sensitive police data, so that access is tightly controlled, offers multiple sharing/access methods, and is all tracked for audit
- Working on integration of third-party applications like Search, sending, etc.
- Setting up infrastructure in new AWS regions, adding redundancy and automating/testing failover process
- 5+ years of professional back-end engineering experience (working in strongly typed languages like C, C++, Java, or Rust)
- 1+ year of Rust experience
- Experience deploying and supporting containerized applications on AWS
- Experience with AWS products. Particularly AWS ECS and AWS CloudWatch. RDS, VPC, and Amplify will be an asset.
- Strong database/API design experience
- Comfortable with CI/CD, observability, incident response, and production ownership
- You take ownership → Over your code and eventually over the back-end code in general. You understand the full structure of the system and how it works to become a subject matter expert for other teammates.
- You use AI responsibly → You build harnesses (MD files, testing frameworks, etc.) so that you have high confidence in AI-produced code. You outsource keystrokes to AI, but you never outsource understanding (because if something goes wrong, you know that AI can't be "blamed")
- You prefer to experiment by trying vs. theorizing → If you have an idea (new abstraction, re-factor, etc. - often it is a result of solving your own problem) you aren't afraid to try it quickly to see if it works. If it doesn't, you revert back; if it is considerably better, you can push to quickly adopt it.
- You like to dive deep → You pride yourself on taking deep dives on topics related to coding languages, infra, engineering design, AI, etc. This allows you to build knowledge for yourself and the team by pushing the limits of your understanding. However, you also know when to stop and move on so as not to overengineer.
- You push back against complexity → You seek to understand why something needs built and then work to define a straightforward path forward. Reusable components and common patterns keep your code readable and easy to maintain. You help keep discussions focused if you sense something is becoming overcomplicated or you have an idea about a less complex approach.
- You have top-notch async/written skills → You communicate your thinking clearly through your code, Slack messages/videos, and diagrams. You can summarize a problem, show options with tradeoffs, and give team members what they need to move development forward.
- You put in the effort →you don’t need heroic 80-hour weeks, but you do bring 40+ hours of focused work a week. In practice, that likely means an evening or two some weeks, and a day on a weekend every so often (for example, once a month) as we push toward launches. This is a startup, so the effort and pace are high, which is not for everyone. You consistently move projects from “almost there” to “in production,” and you treat follow-through (specs, QA, polish) as part of the job, not an afterthought.
- You level up people around you. → you like to share what you’ve learned, provide guidance to junior engineers, and participate in discussions to help founders and the team understand the processes and improvements you’ve put in place, so we can all buy in and follow.
We work in short, focused cycles with a strong bias toward shipping.
- Weekly cadence
We ship on a weekly cadence. If a project or milestone is bigger than a week, we break it into small, shippable slices that can be deployed and tested. If a project risks slipping, we cut scope rather than dragging it out so that every weekly cycle still ships value.
- Direction over rigid roadmaps
We keep a clear sense of where we’re heading, but we avoid hyper-detailed, long-term roadmaps. Every month, we reassess priorities based on what we’ve learned from customers and what’s happening in the field, then decide what’s next.
- Small, independent builders
We prefer a small team of people who love their craft over a large team with layers of management. You’ll work directly with founders and other engineers, with a lot of autonomy to shape solutions and see your work ship quickly.
- Ship minimal, high-quality first
Our goal is to get a minimal, high-quality version in front of users, then refine based on real feedback. As a back-end engineer, you’ll help define what that “minimum lovable” version looks like and ensure it’s coherent, polished, and usable.
- Close to our users
As a small team, our ICs have plenty of opportunity to meet end users (911 call takers, officers, crime analysts, etc.). There will be opportunities for you to visit police stations and observe how officers and staff use the system.
If you enjoy tight feedback loops, high ownership, and seeing your work in production every week (not every quarter), you’ll feel at home here.
Compensation & benefitsTotal compensation for this role is $120,000–$160,000. This includes up to a 15% bonus component based on personal and company performance, plus stock options (equity), which provide a long-term upside as the company grows.
Additionally, you will have 3 weeks of vacation + 1 additional week of company-wide vacation during the winter holidays.
A cherry on top:
- Unlimited Claude credits for coding
- Quarterly $50 credit towards hanging out with other Rubiconers in person (dinner, bowling, skiing, or activity of your choice)
- We aim for at least one annual company retreat for a multi-day hackathon.
We hope the detail in this doc gave you a good sense of who we are and what we’re working on. Our goal was to make it an efficient use of your time. If you found yourself nodding along while reading, we’d love to hear from you.
- Apply by June 30th (hear back by June 30th)
- Fill out the application and record a short informal video of yourself.
- Yes, we review all applications!
- Back-end interview session (hear back within 4 days)
- A 45-minute, rapid-fire conversation about your back-end knowledge and approach.
- Work on a paid project
- A 10-hour project that you’ll complete over a span of a week (we will accommodate your schedule if you are working). This will mimic what it is like to work Rubicon (this is a great time to evaluate whether we are a good fit for each other)
- Back-end review session (hear back within 5 days)
- A 45-minute chat with our team to discuss your decisions, implementation, and ideas for the future.
- Receive offer & get to know the team
- Chat with Rubicon members across the company. Talk through how we work, your offer, and any questions you have.