Backend Engineer
Summary
Backend engineer owning data models, APIs, migrations, and deployments for client systems at a multi-stack software practice. Ships in Python (Frappe/ERPNext), TypeScript (Next.js), Elixir (Phoenix), Rust, and C++, building integrations between ERPNext, Stripe, Resend, and Postgres on self-hosted Coolify/Hetzner infrastructure.
This role writes the systems trade — the APIs, data layers, and integration pipes that make clients’ operations run. We’re not a single-stack shop. In the last twelve months we’ve shipped…
This role writes the systems trade — the APIs, data layers, and integration pipes that make clients’ operations run. We’re not a single-stack shop. In the last twelve months we’ve shipped production code in Python (Frappe/ERPNext), TypeScript (Next.js server-side), Elixir (Phoenix), Rust, and small amounts of C++.
Different problems want different tools. Someone who’s deep in two languages and willing to learn a third fits better here than someone who only writes one.
What you’d do
- Own backend features end-to‑end: data model, API, migration, deploy
- Build integrations between the moving parts: ERPNext <-> Stripe <-> Resend <-> Coolify <-> Postgres
- Make the design calls on new systems — language, data store, consistency model
- Write clean, idempotent, retryable code; small blast radii; receipts for every change
What we’d expect
- 5+ years shipping production backends, pragmatic about frameworks
- Deep in at least two of: Python, TypeScript, Elixir, Rust, Go
- Comfort with ERP‑shaped data (double‑entry, documents, workflows) OR with high‑performance systems — one of the two
- Strong SQL; instincts for idempotency, retries, and failure modes
Nice to have
- Open‑source contributions, especially to Frappe, Phoenix, or similar frameworks
- Experience sitting across the design table with the client, not behind an account manager
How we work
- Deployment on our own infrastructure (Coolify on Hetzner); you’ll touch the deploy side when relevant
Duration
Your own time
Stage 1 of 6
II
The first reading
Every application is read by a partner, not screened out by a filter.
A partner reads what you sent. You hear back within five working days — either an invitation to speak, an honest refusal with a short reason, or an ask for a specific thing we need to decide.
Duration
Within one week
Stage 2 of 6
III
The conversation
A proper meeting, not a screening call.
Two partners, you, a shared agenda sent twenty‑four hours in advance. We talk about the work you have done, how we would work together, and the questions you have brought with you.
Duration
Thirty minutes, by video
Stage 3 of 6
IV
A short piece of work
Role‑dependent. If it looks like work, we pay for it.
For technical and craft roles, a short brief returned in your own time. The brief is representative of what the house actually does — no synthetic puzzles. If the task reads as commercial‑length work, we pay you a day rate for the time.
Duration
Two to four hours · paid when commercial‑length
Stage 4 of 6
V
The final sitting
You meet all three readers of the house.
The three partners who run the practice sit with you. The decision is usually made in the room; where it is not, we tell you when to expect a reply.
Duration
Sixty minutes · video or in Cambridge
Stage 5 of 6
VI
The offer, in writing
Written terms, standard form, countersigned.
A short offer letter — role, start date, salary, holiday, notice. Signed by both sides. First day is usually within three weeks.
Duration
The same week
Stage 6 of 6
When you are ready
