Youth sports events
Client build
GOSPORTS
An eight-layer financial framework turned into a live CFO dashboard, proven to the cent.
- Schema tables
- 36Schema tables
- Wages gate across 24 weekends
- Δ0Wages gate across 24 weekends
- Cell diffs on render parity
- 0Cell diffs on render parity
Executive summary
GOSPORTS runs tournaments across three regional markets, and ran its finances on spreadsheets that had grown past the point where anyone could vouch for them. Expenses were double-counted between reports. Reconciliation rows leaked into totals. A prior-year workbook carried a six-figure near-miss from a single reconciliation row read as an expense.
Digital Boutique rebuilt the finances as an eight-layer framework with a live CFO dashboard on top. Every dollar is entered once, every report is derived rather than re-keyed, and every total is proven to the cent by automated gates that run on each change.
The challenge
The failure mode of a spreadsheet-run finance function is not that it is wrong. It is that being right and being wrong look identical from the outside. Totals reconcile because someone made them reconcile; a plug figure and a genuine tie-out are indistinguishable in the delivered file.
The specific damage was structural. The same expense appeared in more than one report because the same figure was entered in more than one place. Reconciliation rows — which exist to explain differences, not to be spent — were being summed as if they were costs. The 1099 tracking had drifted from payroll reality because the two were maintained separately and nothing checked them against each other. One misread row had already produced a six-figure error.
None of that is fixed by more careful spreadsheet work. It is fixed by removing the conditions that allow it: entering each fact once, deriving everything else, and re-proving the totals automatically rather than trusting that someone checked.
Approach
Facts enter once. Markdown data contracts are the authoring layer, and a 36-table Postgres schema is the store — so the double-counting that came from parallel entry has nowhere left to originate.
The accounting rules were then made structural rather than procedural. Derived layers are views, so no total can drift from its inputs. Reconciliation rows are excluded from sums by construction, so the specific misreading that caused the six-figure near-miss is now impossible rather than merely discouraged. The roster table cannot hold PII, because the schema will not accept it.
Operationally it reduces to three buttons — Game Plan, Weekly Sweep, Weekend Close — with a numbered exception queue for anything requiring judgment and a vendor dictionary that learns from each ruling. Judgment calls become recorded decisions instead of tribal knowledge.
Verification runs continuously. CI re-proves the pipeline on every commit, and the tie-outs are absolute: annual expense and revenue grands tie to the cent, the per-weekend wages gate holds at Δ0 across all 24 weekends, and the balance check carries no plug figures. The original Excel deliverables still render from the database at zero cell diffs, which is what made the transition provable rather than asserted.
Decisions from the board now land as schema migrations with full verification behind them.
Proof
Launch guided demoProfile
- Product
- GOSPORTS
- Industry
- Youth sports events, multi-state
- Scope
- Financial architecture, CFO dashboard, verification pipeline, accountant and banking outputs
- Challenge
- Finances ran on hand-built spreadsheets: expenses double-counted between reports, reconciliation rows leaking into totals, and no way to trust a number without rebuilding it by hand.
Services delivered
- Facts-enter-once architecture
- Markdown data contracts as the authoring layer over a 36-table Postgres schema. Every figure is entered exactly once; every report is derived from it rather than re-keyed.
- Accounting laws as schema constraints
- The rules are structural rather than procedural. Derived layers are views only, reconciliation rows are excluded from sums by construction, and no PII can exist in the roster table — enforced by the schema rather than by discipline.
- Three-button operating workflow
- Game Plan, Weekly Sweep and Weekend Close. Every judgment call lands in a numbered exception queue, and a vendor dictionary learns from each ruling so the same decision is not made twice.
- Continuous verification gates
- CI re-proves the pipeline on every commit: smoke tests, seed tie-out, migration parity and schema-page gates. A change that breaks a total cannot merge.
- Render parity with delivered workbooks
- The original Excel deliverables still render — generated from the database, at zero cell diffs against the workbooks that were delivered by hand.
- Accountant and banking outputs
- The 1099 master list, itemized paycheck log, debt schedule and financial statement all generate on demand from live data rather than being assembled at year end.
Technical architecture
- Authoring
- Markdown data contracts as the human-facing entry layer
- Database
- Postgres, 36 tables — accounting invariants expressed as schema constraints
- Derivation
- Views only; no derived figure is ever stored or re-keyed
- Verification
- CI gates — smoke tests, seed tie-out, migration parity, schema-page checks
- Outputs
- Excel render pipeline, 1099 master list, paycheck log, debt schedule, financial statement
Results
- Schema tables
- 36Schema tables
- Wages gate across 24 weekends
- Δ0Wages gate across 24 weekends
- Cell diffs on render parity
- 0Cell diffs on render parity
Building something with this shape?
Start a conversation