Finance & Project-Operations Platform for a Design Consultancy

One platform that replaced spreadsheets and chat for a two-company design consultancy, from timesheet to tax-ready ledger.

Freelance · Sole engineer and de-facto product owner · Feb 2026 – present · In production. Client-confidential: this page is anonymized, with no client name, live URL or real data.


At a Glance

AspectDetail
ProblemTimesheets, reimbursements, project cash flow, accounting and tax lived in spreadsheets and chat. Numbers drifted and closing the books was manual.
SolutionA single Go monolith with a React/TypeScript SPA: 14 modules from timesheet to financial statements.
My scopeRequirements (lo-fi and hi-fi PRDs), backend, frontend, accounting engine, CI/CD, client UAT, security assessment, operations.
ImpactNo dedicated finance hire needed, and a previously manual finance flow now automated for the finance consultant.
Scale of work14 PRDs, 100+ database migrations, ~580 commits in under eight months.
Skills shownProduct ownership, domain modelling (accounting and tax), multi-tenant access control, delivery automation, client management.

The Problem

A two-company design consultancy ran timesheets, staff allocation, reimbursements, project cash flow, accounting and tax across spreadsheets and chat. Numbers drifted between files, approvals lived in messages, and closing the books depended on manual reconciliation.

What I Built

Every module started as a lo-fi and hi-fi PRD, so the client approved the flow before code was written.

  • One ledger, two companies. Company-scoped access control keeps the two companies separate, with payment-term accruals, tax withholding and ledger period controls on top.
  • Accounting that holds up. Chart of accounts, multi-line journals, general ledger, balance sheet and profit and loss, and tax-to-journal integration, backed by heavy integration-test coverage.
  • Approval flows that match the business. Staff submit, admin and board approve, and every step leaves a trace.

Architecture

A deliberately simple deployment: one binary serves the API and the frontend, so there is one thing to build, ship and monitor.

LayerTechnology
BackendGo (chi, google/wire, pgx), PostgreSQL
FrontendReact, TypeScript (esbuild), served from the same binary
AuthGoogle OAuth, JWT
HostingCloud Run

Delivery Pipeline

Every change goes through the same automated path, from tests to a smoke-tested production deploy.

How I Worked With the Client

Product engineering here was as much process as code. Client feedback arrived over chat, so I turned it into a loop that could be audited.

  • Complaint register to UAT. Each complaint got an ID, a verdict based on evidence, and paired UAT cases with a sign-off template.
  • Contract scope tracking. Delivery was tracked against the contract's named outputs, with new requests kept separate from acceptance conditions.
  • Security. A black-box assessment of the demo environment was run in September 2026.

Impact

  • No dedicated finance and accounting hire needed. The company's admin can run day-to-day finance themselves, because the platform guides each flow.
  • Faster work for the finance consultant. The finance flow, previously fully manual, is automated, so the consultant gets to review and decide instead of re-keying and reconciling.

Screenshots

All figures and names are fictional seeded demo data.

Home: assigned projects and quick menu:

Home: assigned projects and quick menu

Project list with contract dates, tax type and schedule status:

Project list with contract dates, tax type and schedule status

Employee management with roles, positions, compensation type and tax category:

Employee management with roles, positions, compensation type and tax category

Petty cash book with deposits, operational spend and reimbursements, each approved by both board and admin:

Petty cash book with deposits, operational spend and reimbursements, each approved by both board and admin

Project cash flow: revenue, cost, net profit and margin per project:

Project cash flow: revenue, cost, net profit and margin per project

General journal with project-tagged, multi-line entries:

General journal with project-tagged, multi-line entries

Balance sheet generated from the ledger:

Balance sheet generated from the ledger

Mobile: the same journal:

Mobile: the same journal