The brief
A mid-sized operations team was running their entire workflow on a network of 40+ interlinked Google Sheets. Every month-end close took two full weeks. Half the team's time was spent manually copying numbers between sheets, reconciling differences, and chasing down errors. The CFO wanted out.
The audit
We spent a week shadowing the team. Three findings shaped the project:
- The data model was actually simple — five core entities, a handful of relationships — but expressed across dozens of denormalised spreadsheets.
- 80% of the manual work was data entry that could be automated by connecting to source systems directly.
- The team was deeply attached to specific spreadsheet conventions. A successful replacement had to honour those conventions, not impose new ones.
What we built
A custom internal application — boring stack, ruthlessly scoped. Three modules:
- Source integrations. Direct connections to the three upstream systems (CRM, ERP, billing) that fed the spreadsheets. Data flows in automatically.
- Workflow UI. A spreadsheet-like interface for the team's day-to-day work — keyboard shortcuts, bulk edit, filters — that felt familiar but enforced data integrity behind the scenes.
- Reporting and close. Automated month-end close, audit trails, and reporting outputs that match the formats the CFO and external auditors expected.
Stack: TypeScript on Node, Postgres, Next.js on Cloudflare Pages. Auth via the company's existing SSO. Nothing exotic.
The outcome
- Month-end close went from 14 days to 4 days.
- Manual data entry dropped by an estimated 70%, freeing roughly 1.5 FTE of team capacity.
- Audit reconciliation issues — previously a quarterly fire drill — dropped to near-zero.
- The team's NPS for the tool was 9+ within six weeks. (Adoption is much easier when the team helped design it.)
What this isn't
This isn't a story about disrupting spreadsheets or replacing humans. The team didn't shrink. They just stopped doing the boring part of the work. The CFO redeployed the time gain into analytical work that had previously been on the backlog for years. That, more than the headline efficiency number, is what the project bought.