A custom ERP for a digital and IT services agency
Mindrops designed and built an end-to-end ERP for project- and retainer-driven services firms that covers the work from first lead to final invoice. It unifies CRM, project and task delivery, timesheets, GST invoicing, recurring AMC contracts and finance into a single source of truth that replaces a patchwork of spreadsheets and disconnected tools.

At a glance
Mindrops designed and built a custom web-based ERP for a mid-sized digital and IT services agency, replacing spreadsheets and three or four disconnected tools. Nine integrated modules cover CRM, projects, tasks, timesheets, reporting, GST invoicing, payments, recurring AMC billing and admin, on a type-safe React 18, TypeScript, tRPC, Node/Express, Prisma and PostgreSQL stack.
The challenge
A mid-sized digital & IT services agency ran its business across spreadsheets, email threads and three or four disconnected tools. Sales lived in one place, project delivery in another, timesheets in a third, and invoicing in accounting software that knew nothing about the work being delivered.
- Fragmented systems — CRM, delivery, timesheets and billing lived in separate tools that didn’t talk to each other.
- No single source of truth — the same client existed three times, with different spellings, across three systems.
- Manual, error-prone billing — invoices were hand-built in spreadsheets; GST math and numbering were done by hand.
- Revenue leakage — AMC renewals were tracked in someone’s calendar; some simply lapsed, and untracked hours went unbilled.
- Reporting pain — answering “where did our time go?” or “what’s outstanding?” took days of manual consolidation.
- Weak governance — no consistent access control and no audit trail of who changed what.
The solution
A custom, web-based ERP organised around the natural flow of a services business. Every module is connected: a lead converts into a company and project, the project carries teams, milestones, tasks and logged hours, and that delivery data feeds finance — invoices, payments and recurring AMC billing.
Data is entered once and reused everywhere. A role-based permission model decides what each person sees, GST and legal entities are built in from the start, and every critical action is written to an audit log — all behind a fast, responsive React interface.
CRM & sales pipeline
A clean company and contact database feeds a visual leads pipeline — New, Qualified, Proposal, Negotiation, Won, Lost — with pipeline value, win-rate KPIs and activity history that carry straight through to delivery and billing.
Project management
Projects track status, priority and a Red-Amber-Green health signal, are staffed with role-specific allocations (TL / Dev / QA), and break into milestones with decisions, risks and weekly updates captured along the way.
Task management
Tasks move through Backlog → In Progress → Blocked → Done, typed and prioritised, with threaded comments, attachments and a full audit trail of every status change.
Timesheets & reporting
A fast day-fill experience captures hours by project and activity; a submit/reopen workflow locks data for billing, automated reminders chase missing entries, and reports show exactly where time goes.
Invoicing & finance
Invoices flow from Draft to Paid, issued from configured legal entities with GST and bank details, in multiple currencies, reconciled against payments with auto-calculated outstanding balances and PDF invoices.
AMC / recurring contracts
Annual Maintenance Contracts are tracked with billing cycles and status, linked to their tasks and invoices, and auto-drafted on schedule by a daily job — so renewals never slip through the cracks.
Results
The whole company now works from the same data, every day — leads, projects, hours and invoices linked, role-aware and auditable.
Systems
Before: the same client existed three times across three disconnected tools.
After: one connected record — data entered once and reused everywhere.
Billing & compliance
Before: invoices hand-built in spreadsheets, GST math done by hand.
After: GST-correct invoices issued from proper legal entities, tied to the work they bill.
Recurring revenue
Before: AMC renewals tracked in a calendar — some simply lapsed.
After: renewals surfaced and auto-drafted on schedule, closing the leakage.
Reporting & governance
Before: days of manual consolidation; no consistent access control or trail.
After: live dashboards and reports, role-based access and a full audit log.
One source of truth the whole team works from, GST-compliant invoicing from proper legal entities, recurring AMC billing and tracked hours that close revenue gaps, accountability through role-based access and a full audit trail, and faster decisions from live dashboards.
Client details are anonymised. The before/after positions describe the change in process delivered and have not been independently audited.
Technologies used
A React 18, TypeScript, tRPC, Node/Express, Prisma and PostgreSQL stack, type-safe from the database schema to the UI and chosen for long-term maintainability.
Type-safe stack
A React 18 + TypeScript single-page app talks to a Node/Express server over a type-safe tRPC layer (plus a small REST surface), backed by PostgreSQL via Prisma — type-safe from schema to UI.
Governance & security
Role-based access with own / team / all scopes per module, JWT auth with rate-limited login, validated and size-capped uploads, a system-wide audit log, and Sentry error tracking across client and server.
Automation & jobs
Scheduled jobs run the busywork — timesheet reminders, daily AMC invoice drafting, overdue-invoice detection and currency-conversion caching — while humans review and approve.
Frequently asked questions
What did Mindrops build for the services agency?
Which technologies were used?
How does the ERP handle GST and recurring billing?
What problem did the ERP solve?
Could Mindrops build a custom ERP for our business?
Contact us
Tell us how your services business runs today. Mindrops designs and builds custom ERP and internal platforms that mirror it — connected, role-aware and compliant.

