Work / A professional services firm

Replacing an HR SaaS subscription with an in-house platform, built by agents overnight

A role-based HR platform holding employee records, directory, org chart and onboarding, built on Firebase and TypeScript with default-deny security, and delivered one issue per night by supervised coding agents behind a 4,700-assertion test gate.

Agentic workflowsHardening and securityTechnical consultancy

01 The problem

The firm was paying a per-seat subscription for an HR system that fitted its processes poorly, and wanted to own its people data and workflows instead. Employee records are the most sensitive data a company holds, so the build had to be secure by default and every change verifiable, while a small team kept the cost of delivery low.

02 What we built

A Firebase and TypeScript platform with hard security invariants: employee records are never readable by the client directly, every access goes through an audit-logged server layer, and the database rules default to deny. Features were specified as numbered issues with acceptance criteria. Coding agents built them overnight, one issue to one pull request, running the full emulator test battery before opening it. Humans reviewed and merged. Architecture decisions were recorded as ADRs and each module carries a specification the builders must honour.

03 The result

The full first version shipped: audit-logged records, role-aware navigation for HR admins, managers and employees, a directory, an org chart, add-a-person and onboarding flows, light and dark themes, and a seeded demo environment. Around 4,700 automated assertions gate every merge. The firm owns the code, the data model and the roadmap, with no per-seat fee.

Most teams either buy an HR system and bend to it, or build one and spend a year doing so. This project tested a third route: own the system, but have agents do the bulk of the building under strict rules.

Security first, by construction. Employee records live behind a server-side access layer that logs every read and write. Database security rules are default-deny, so a missing rule means no access rather than open access. These invariants are written into the repository’s working agreement, and a change that weakens them fails review regardless of what else it does.

The delivery model. Work is broken into numbered issues with acceptance criteria and a “ready” label. Each night a cloud coding agent claims the lowest unclaimed ready issue, builds it on its own branch, runs the full test battery against local Firebase emulators, and opens one pull request with the documentation updated. A second agent takes the next independent issues in parallel, with per-builder caps so the team never wakes up to more than it can review. Humans merge. Nothing merges without the battery passing.

Keeping agents honest. The repository’s own guidance file is the contract. It says how to claim work, what counts as done, which invariants cannot move, and how to record decisions. Architecture decision records are immutable once accepted. When the single-lane rule became the bottleneck, the change to multi-lane delivery was itself an ADR and a pull request, reviewed like any other.

What was built. The first version covers the core of a people system: records with audit, a staff directory, an org chart, manager and HR-admin views, onboarding with a demo seed, and a role-aware interface with light and dark themes. A follow-up UX iteration reshaped the navigation and home screen after real use.

What it proves. Agentic delivery is not a shortcut around engineering discipline. It depends on it. The clearer the specification, the stricter the test gate, the better the agents perform. The firm gets a system that fits, a codebase it owns, and a delivery pipeline that keeps working after the first version.

More work

All work →

Discuss a similar project.

Tell us what you are facing. The first conversation is free.

Start a conversation