A citizen portal built to be handed over
Public money, public scrutiny, and a hard requirement that the agency's own team could maintain the result. We built for the handover from the first commit.
- Accessibility
- WCAG 2.2 AA in CI
- Handover retainer
- None required
- Releases since handover
- All shipped in-house
- Decision records
- 46
The situation
The agency had been burned by systems it could not maintain: bespoke frameworks, absent documentation, and vendors who had become impossible to leave. The requirement this time was explicit — the delivered system had to be operable by four in-house developers of mixed experience, with no vendor on retainer.
What we did
We used boring, well-documented technology on purpose, and wrote the code the way the framework's own documentation would. Accessibility was tested in CI against WCAG 2.2 AA rather than audited at the end. Every architectural decision got a short decision record explaining what was chosen, what was rejected and why — the questions a maintainer asks two years later. For the last two months of the engagement the agency's developers wrote the features and we reviewed, rather than the other way round.
Where it landed
Delivered on schedule and handed over with no retainer. The agency team has shipped every release since without us. The decision records are, by their own account, the part they use most.
They were the first supplier who treated leaving as part of the job. Seven months in, they were reviewing our code instead of writing it, which is exactly what we asked for and never got before.
More work.
Twelve times the shipments, on the same infrastructure bill
A booking platform that fell over every Monday morning. We found the real bottleneck in three days, and spent the rest of the engagement making sure it could not come back.
- p95 at peak
- 8.4s → 310ms
- Peak throughput
- 12× capacity
A decade-old monolith, made changeable again — without a freeze
Eleven years of accumulated software, four PHP versions behind, and a regulated product that could not stop shipping. We modernised it in place, two weeks at a time.
- Change lead time
- 11 days → 0.8 days
- Clinical path coverage
- 0% → 94%
Tell us what is not working.
An hour on a call, no charge and no deck. We will tell you honestly whether this is work we are good at — and if it is not, who to talk to instead.
- Reply within
- One working day
- First call
- One hour, free
- Notice period
- One month, either way
- Based in
- Copenhagen & Odense