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.

Profile

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