Build notes
Build notes: what actually breaks
The parts of a multi-location automation that quietly fail when they get skipped. Most of them are invisible at two locations and unavoidable at twenty.
- Location identity is the whole data model. The POS calls it store 114, accounting calls it the LLC name, the scheduling tool calls it by street address, and the franchise agreement calls it a unit number. Pick one canonical location ID and map every system to it before writing a single report. Every rollup that is quietly wrong is wrong here first.
- Locations do not close out at the same time. A rollup that runs at midnight will pull one location that has already run end-of-day and another that has not. Stamp every location's figures with its own as-of time and show it on the report, rather than presenting a blended number that looks authoritative and is not.
- Time zones break the word yesterday. The moment an operator crosses a time zone, a daily report keyed to server time compares a full day at one location against a partial day at another. Compute each location's business day in its own zone, and never let the reporting host's clock decide what yesterday means.
- Territory boundaries are not clean polygons. Real territories overlap, split zip codes, and carry protected-radius clauses that contradict the map. Routing needs an explicit tie-break rule, a logged reason for every assignment, and a manual override, because the first disputed lead will be escalated to the franchisor and someone will ask why it went where it went.
- A franchisor usually cannot hold franchisee credentials. Any build that assumes one master login across a system will stall the first time legal reads it. Model access as per-location authorization the franchisee grants and can revoke, and make revocation a supported state rather than a crash.
- Locations change hands mid-year. When a unit transfers, the history belongs to the location, not the departing owner. If the data model hangs reporting off the owner record, every year-over-year comparison for that unit breaks on the transfer date and cannot be reconstructed later.
- API rate limits scale with location count, and your pilot will not show it. A nightly pull that is comfortable across 3 locations gets throttled across 30. Batch the calls, back off on 429s, and make partial failure resumable from day one, because the run that breaks is the one at the end of the quarter when everyone is looking at the report.
- Every system eventually has one location off-script. One general manager will keep a tool nobody else uses, and no amount of policy changes that this quarter. Build a fallback ingest path, a CSV drop or a parsed email, so that location still lands in the numbers. Excluding it produces a report the operator stops trusting.
Deciding who should build it? Our provider-type comparison applies to a franchise system as much as to a single trade: in-house hire, retainer agency, platform add-on, fixed-price build, and DIY cost very different amounts by year three, and the gap widens with every location you add.