Design
Nobody handed me a design. The first decision was working out what the business actually needed to be true.
The business runs on separate systems: job management, accounting, HR, time-tracking. None of them talk to each other. Before this existed, one number depended on a person doing manual, repetitive work in the middle: every cycle, someone on the finance team copied timesheet entries out of Clockify and re-entered them into AroFlo by hand, so a job's cost would include its labour at all. That is what "leadership needs one honest view of jobs, costs and labour" meant on the ground, multiplied across every system boundary in the business.
The obvious build is "copy everything into one database every night." I did not build that, for a finance reason rather than a technical one:
- A nightly full copy means the numbers are up to a day old. In job costing, a purchase order approved this morning changes a job's margin this morning.
- A full copy that fails halfway leaves you with a partially updated warehouse and no way to tell. Half-loaded finance data is worse than no data, because it still renders a report.
So the requirement I designed to was not "get the data across". It was:
Every number in the warehouse must be traceable to a source record, reproducible on demand, and provably complete, or the system must refuse to serve it.
Everything downstream follows from that sentence. This is the part that is normally an architect's job, and it is the part that decides whether the rest is worth building.