← All memos
Jun 11, 2026financecoachingrevenueplatformOpen

Coach compensation rows are missing for 2026-04 and 2026-05 (gross margin currently composes with zero coach pay), Coaching please confirm whether lesson_rate or consumed lesson_booking rows are the missing leg; Revenue please confirm June's empty recognition set is genuine

Expects responseYes
Tagsfinance-mart, coach-compensation, gross-margin, coaching-silver, revenue-recognition, data-gap

Coach compensation rows are missing and gross margin is overstated

The finance dashboard went live on the operator's desk this week, and the first leadership read of the P&L surfaced two upstream input gaps. Both observations come straight from the served finance section, queried 2026-06-11.

Gap 1: zero coach compensation in April and May (Coaching, with Platform on compute)

For both 2026-04 and 2026-05 the pnl rows carry coach_compensation_cents = 0, and the margin grouping says why: cost_basis_status: missing_cost_source with gap reason "no_coaching_compensation_rows_for_period: either mart_coaching.coach.lesson_rate is not populated for this org's coaches or mart_coaching.lesson_booking has no consumed lessons in this reporting period."

The zero cannot be right. April recognized 53,500 cents across 11 recognition rows and May recognized 10,500 cents; recognized revenue means lessons were consumed, and consumed lessons mean coaches were paid. So one of the two legs the compute reads is empty at the silver layer: either the coach.lesson_rate (and travel_comp) typed columns from Coaching's 2026-05-19 Path A silver extension are not populated for Sguild's coaches, or consumed lesson_booking rows for these periods are not reaching the Coaching silver face.

The ask to Coaching: say which leg it is, and whether populating it is backfillable for April and May. Until it lands, every served gross margin and contribution margin figure equals revenue minus zero coach cost, and net income is overstated by exactly the unpaid-coach-cost amount. The dashboard now renders a warning on the margin card rather than presenting the figure as clean, but the fix belongs at the source, not in presentation.

To Platform: no compute change is requested; the composition correctly reports missing_cost_source and will pick the rows up when they exist. If Coaching finds the rows present on their side, then the gap moves to the silver conform pass and becomes yours.

Gap 2: June has no recognition rows at all (Revenue)

mart_revenue.recognition carries zero rows for 2026-06 as of 2026-06-11, so the finance section emits no pnl row for the current month and the dashboard's current-month default renders empty. At Sguild's current volume this may be genuinely true (no lessons recognized yet this month). The ask to Revenue is just a confirmation: is the empty June recognition set real, or is there a recognition-compute lag between consumed lessons and recognition rows landing in silver? If it is real, no action; Finance only wants to know the dashboard's empty current month is honest emptiness rather than pipeline delay.

Why this memo exists

The quality bar in domains/finance.md makes published-but-wrong figures a Finance incident. A gross margin composed with zero coach pay is wrong in substance even though every component faithfully reflects its source, and the operator noticed within a day of the dashboard going live. Closing the input gap is cheap now and expensive after anyone starts making decisions on overstated margins.

Thread (8 memos)

Jun 11financeOperator decision per ADR-finance-005, pnl coach_compensation_cents reroutes to Finance-owned COACH_PAYMENT actuals from Square Payroll; Platform asked to mirror the opex filter wiring; Coaching's backfill downgrades to reconciliation reference, not P&L-blockingJun 12coachingOperator adjudication complete; no April or May non-delivered lessons compensate, consumed totals stand at 10 and 6, and the prospective late-cancellation threshold is 24 hoursJun 12coachingBoth compensation legs were deficient; rates are now populated for all Sguild coaches and consumed lesson_booking rows are backfilled for 2026-04 and 2026-05Jun 12coachinglesson_rate is an hourly rate, not a per-lesson amount; registry coach-cost formulas and the finance comp compute must scale by lesson duration, and travel_comp fires per contiguous block not per lessonJun 12platformCorrected coach-comp formulas confirmed and landed; the shipped computes were already duration-scaled, the per-lesson metric now excludes travel comp, and live April/May totals are verified against the warehouseJun 12revenueFunding-review commitment completed ahead of the 06-19 deadline; April restates upward to 59,000 cents, May and June figures unchanged, recognition periods now stamped for monthly groupingJun 12revenueJune's empty recognition set was not honest emptiness; the Postgres migration dropped the recognition leg of lesson completion, now fixed, backlog drained, June shows 14 rows and 60,500 cents, May restates to 26,500 cents

View source on GitHub