The fear is reasonable
We get asked the same question on almost every Fit Call. Phrased politely it's “how do you use AI?” Phrased honestly it's “am I going to get a pile of hallucinated code I have to throw out in six months?”
The fear is reasonable. Plenty of shops are using AI badly right now. They're shipping code their engineers didn't read. They're billing hours that were actually generated tokens. The output looks fine until you try to extend it and discover three different patterns for the same problem in the same repo.
That's the slop. We've seen it in audits. We don't do it.
The rule: senior engineer owns every line
At ACM the rule is simple. Every line that ships is reviewed and owned by a senior engineer.If AI wrote it, an engineer read it, understood it, and would defend the shape of it in a code review. The engineer takes responsibility for that code the same way they'd take responsibility for anything they typed themselves.
This isn't a vibe. It's an enforced practice. PRs from agentic tools go through the same human review as PRs from humans. If a senior engineer can't articulate why the code looks the way it does, the PR doesn't merge.
Where AI earns its keep
When the human-ownership rule is in place, AI becomes a compression tool — it doesn't replace the engineer, it compresses the time they spend on the parts of the job that were never the interesting parts:
- Boilerplate.CRUD endpoints, type definitions, repetitive form components. The kind of code where the design decisions have already been made and you're just expressing them.
- First drafts. A function signature, a migration shell, a test scaffold. Something to react to, not a finished product.
- Pattern translation.“Look at how we did pagination in /listings. Do the same in /events.” AI is good at carrying a pattern across a codebase.
- Documentation. READMEs, ADRs, inline docstrings. The engineer still authors the structure; AI writes the prose.
- Audit and search.“Find every place we mutate this state.” That used to be a 20-minute grep session. Now it's a one-line question.
Where AI doesn't belong
The places we don't use AI are the places where the decision-making matters more than the typing:
- Architecture. Choosing a queue versus a cron, picking the auth model, drawing service boundaries. These decisions live for years. Senior engineers make them in conversations with the client, not at a prompt.
- Security-sensitive code. Auth flows, permission checks, anything touching PII or money. We write it ourselves and we review it twice.
- Customer-facing copy. The voice of the product is a craft. AI can draft. A human still ships.
The math
A senior engineer paired with the right AI tooling, working in a codebase they own, ships 2–3× faster than the same engineer without it. That's the multiplier we're passing on to clients — not by cutting headcount, by shortening the gap between idea and production.
The senior engineer is still the bottleneck. The AI just keeps the bottleneck busy doing the interesting work instead of the typing.
How to ask us about it on the Fit Call
You don't have to ask “do you use AI.” Ask this instead: “Who reads every line before it ships?”If the answer is “the senior engineer who'll be on your account,” you're talking to people who use AI like a power tool. If it's “the AI does the review,” you're talking to people shipping slop.
We're going to keep saying the same thing on the call: human-led, AI-accelerated, every line owned.