The hype is loud; shipping is the quiet part. Northerly is a full-stack engineering shop in Leeds. The discipline came before the AI — tests, types, small reversible changes — and the AI is designed in on top of it, with agents in our own delivery loop.
Create
Where it earns its place and where it doesn't. Model choice, prompt and eval design, and a working prototype early enough to change your mind about.
Implement
Retrieval, tool use, guardrails, observability and the eval suite that keeps it honest. The unglamorous half that decides whether it survives contact with real users.
Drive
Agents in the codebase, in review and in delivery. It's why a team this size ships like a bigger one, and why one of the three of us is an agent.
Claude for the model layer, MCP for tools, and an eval suite per feature. Nothing AI-shaped ships without one.
Strict everywhere. Bun where it's allowed to be, Node where it isn't.
Server-rendered by default. Client JS is a decision each time, not a starting position.
One schema, inferred all the way up. If the shape changes, the build tells you before the user does.
Every commit builds, type-checks and runs the tests. Main is always deployable.
AI made it cheap to build the wrong thing quickly. We write the eval first, so "it seems better" becomes a number somebody can check.
A change nobody can review is a change nobody can trust. Small, continuous, reversible — every time.
Most production bugs live at a boundary. Make the boundary say what it means and the class of bug goes away.
We pick the dull, well-understood option for anything load-bearing, and spend the novelty budget where it's actually visible.
Performance and accessibility are the same discipline wearing different hats: respect for the person on the other end of the connection.