SGA Practice Platform · Build Walk-through

The Practice S-Curve. $54.7M in EBITDA leverage, identified.

How a swarm of AI agents, three Power BI bridges, and 149,250 rows of authoritative P&L data produced a per-practice, per-lever, per-dollar view of the entire SGA portfolio in days — not quarters.
Internal · Build showcase · Claude Agent SDK
Scott Aby · April 24, 2026
The Question
SGA · S-Curve Build Story
02 / 10
Why this, why now
IPO prep demands one question be answered for every practice: "where is the next dollar?"
Karen asked for $2M of quick-win EBITDA. The real answer is bigger — but only if we can defend every dollar with real data, not hunches.
The gap before
260+
practices, scored on revenue only, in one workbook, updated quarterly at best.
What RODs needed
Per-practice
dollar-ranked levers with benchmarks. Not "work on hygiene" — "Non-Clinical Comp is 1.8 pts high, worth $24K."
What we built
331
practices, 18 lever categories, 908 individual expense-lever calls, refreshed from live P&L.
What This Means
The v1 S-Curve was a single-dimension lifecycle score. IPO due-diligence needs a dual-curve (Revenue + EBITDA) system with line-item-level defense of every $ of upside.
What We Did
Stood up three PowerBI bridges, ingested the authoritative SGA P&L xlsx (173 locations × 99 months × 36 accounts), decomposed payroll into controllable sub-categories, and wired it to a live analyst chat.
Data Foundation
SGA · S-Curve Build Story
03 / 10
The Five Sources
Every number on the dashboard traces back to a named, auditable source — no mocks, no estimates.
We threaded five datasets through a single practice-code join, then bridged SGA-native codes (VDC, CFD) to Gen4 locations via a 214-entry name-mapping table.
Primary · P&L
SGA_Master_OP_Final
Executive P&L export, 173 locations × 99 months × 36 account titles. Delivered as xlsx + live PBI bridge.
149,250 rows · 4-Wall
Scoring
Gen4 AI CDM
Network-wide operational warehouse. Source of truth for TTM revenue, production, pacing, and EBITDA margin.
260 practices · SP-auth
Operational
Dental Intel
19 leading-indicator metrics for hygiene, recall, unscheduled treatment, AR aging, case acceptance.
218 practices · Mar 2026
Historical
v1 Workbook
Original scurve-portfolio-scoring xlsx — provides monthly gross production back-history for trend metrics.
24 months · baseline
Mapping
Location Mapping
Practice-code → location-name → legacy entity → ROD → state. Keys every join across the five sources.
214 entries · joined
Why SGA_Master_OP_Final, not Gen4 alone
Gen4 is great for revenue & headline EBITDA but does not decompose Sage account groups. The xlsx carries Clinical vs Non-Clinical Comp, Dental Supplies, Lab Fees, Facility, Advertising, IT, and G&A separately — the resolution the lever engine needs.
Why a third PowerBI bridge
The existing Gen4 and SGA-Ops bridges don't expose the SGA_Master_OP_Final dataset. We stood up a dedicated :3051 bridge on the VPS, cached snapshots with 12h TTL, and query via SUMMARIZECOLUMNS keyed on Sage_Accounts[Account Group Title] to bypass RLS.
The Model
SGA · S-Curve Build Story
04 / 10
Dual S-Curve Scoring
Every practice sits on two lifecycle curves — revenue maturity and EBITDA maturity — because "growing" and "profitable" are not the same story.
Each curve is a weighted composite score in [0,10] that bins practices into S1 (Launch) → S5 (Harvest). Weights were derived from correlation analysis against forward production, not guessed.
Revenue Curve · 295 practices scored
TTM scale + growth velocity + pacing
S1
58
S2
84
S3
84
S4
53
S5
16
EBITDA Curve · 95 practices scored
Margin + AR>90 + GC rate + expense ratios
S1
6
S2
30
S3
28
S4
24
S5
7
Scoring detail
Revenue weights: TTM scale (20) · YoY growth (25) · 3-mo trend (25) · MTD attain (15) · YTD attain (15).   EBITDA weights: Margin (25) · AR>90 (15) · GC rate (13) · Clinical Comp (12) · Supplies+Lab (13) · Non-Clinical (10) · G&A (7) · Occupancy (5).
Why two curves beat one
A practice can be revenue S4 / EBITDA S2 — scaling well, but leaking profit on expenses. The lever engine targets the gap between the two curves, not the aggregate.
The Lever Engine
SGA · S-Curve Build Story
05 / 10
From ratio to dollar
Every lever = one decomposed P&L category × a p25 benchmark × a capped realization factor. "Payroll" is never a lever.
Doctor Compensation is tracked but explicitly excluded — it's not controllable. The 18 lever categories surface what an OM or ROD can actually act on this month.
LeverPracticesTotal EBITDA $
Reactivate Unscheduled Treatment208$15.4M
Lift Clinical Comp Efficiency176$14.2M
Tighten Non-Clinical Comp158$8.1M
Reduce Dental Supplies Ratio121$5.4M
Improve AR > 90 Collection143$3.9M
Rationalize Facility / Occupancy92$3.1M
Tighten Lab Fees Ratio108$1.8M
Advertising / IT / G&A Trim94$1.4M
Portfolio total (sum of all levers)331$54.7M
Explicit rule Doctor Compensation is NOT a lever. Dr comp is a market rate. Every suggestion is framed as assistants, hygienists, or front-office — not dentist pay.
Benchmark source Every target is the p25 (top-quartile) of the 145-practice SGA distribution — computed from the same P&L file, so comparisons are apples-to-apples.
Realization factor Theoretical impact is multiplied by 0.30 and capped at a 2.5pp margin uplift. No lever can claim more than a defensible operating delta.
Leading indicators Correlation analysis (24-mo DI history) confirmed Gross Hygiene Production and Unscheduled Treatment backlog as lag-3-month leading indicators; weak metrics were dropped from the score.
The Agent Swarm
SGA · S-Curve Build Story
06 / 10
Who built this
Twelve specialized agents, six disciplines, one orchestrator — each agent owned a narrow slice, not the whole problem.
This is the working pattern: human sets intent → orchestrator decomposes → specialized agents execute in parallel → outputs merge into the same portfolio artifact.
Finance
finance-cfo
Lever framing, top-lever prioritization, exec narrative for the $54.7M.
Finance
finance-controller
Reconciled Waterfall collections ($23.38M Jan) against 4-Wall filter — 2.5% tolerance.
Finance
finance-fpa-analyst
Benchmark derivation (p25/50/75) per account group, across 145 clean practices.
Finance
finance-revops-analyst
Revenue levers — unscheduled backlog, recall recapture, case acceptance, no-show reduction.
Quant
marketing-analytics-analyst
24-mo correlation & lag analysis → selected leading indicators, dropped noise.
Quant
business-analyst
Stage-band definitions, weight tuning, realization-factor math, impact cap logic.
Data
excel-workbook-architect
Parsed 149,250 P&L rows + v1 workbook + SGA location mapping xlsx.
Data
database-modeling
Practice-code join strategy, 214-entry name-mapping reconciliation.
Data
powerbi-analyst (private)
DAX authoring for :3050 / :3051 bridges, snapshot caching, RLS workaround.
Ops
sga-architect
End-to-end data-flow design, third-bridge provisioning, pipeline validation.
Ops
sga-phi-reviewer
Every output scanned for PHI before shipping. Zero patient-level fields in portfolio.json.
AI surface
dental-intel-extractor
Playwright-driven DI Analytics pull — 19 metrics × 218 practices, no credentials leaked.
Finance · 4
Quant · 2
Data · 3
Ops · 2
AI surface · 1
+ 30+ shared-library agents on call
Quantitative Depth
SGA · S-Curve Build Story
07 / 10
Under the hood
Every weight, band, and realization factor is traceable — not tuned until it looked right.
The methodology object is part of portfolio.json and reproducible. If we change a benchmark, every practice's lever re-computes automatically.
Correlation analysis
r = 0.62
Gross Hygiene Production, lag-3mo, against forward PBI production. Strongest leading indicator.
Realization factor
0.30
Applied to every theoretical lever $ — caps optimism and aligns to what operators actually capture.
Margin cap
2.5 pp
No single lever can claim more than a 2.5 percentage-point margin uplift, regardless of input gap.
Benchmark size
n=145
Clean SGA-native practices used for p25 distribution — outliers (ratio < 0 or > 2) filtered.
Stage bands (revenue score → stage)
Non-linear, calibrated to historical cohort outcomes
S1 Launch   score 0 – 3.5  · first 12-18mo, heavy ramp
S2 Growth   score 3.5 – 5.5  · scaling, still margin-compressed
S3 Scaling   score 5.5 – 7.0  · production hitting trend, fixed-cost absorbed
S4 Maturing   score 7.0 – 8.5  · capacity-constrained, quality focus
S5 Harvest   score 8.5 – 10  · optimization plays, not growth plays
Collections reconciliation
Bridge validation against Collections Waterfall pbix
Waterfall Jan 2025: $23,973,604
Bridge query (4-Wall filter, Jan 2025): $23,379,963
Variance: -2.5%  within tolerance
Before discovering the 4-Wall filter, our collections approximations returned $55M for the same month. The filter cut-off isolated the operator-reported population — a 57% variance we caught before any number was shown to Karen.
The Analyst Chat
SGA · S-Curve Build Story
08 / 10
Live tool-use · Claude Opus 4.7
The dashboard ships with an embedded analyst. Ask any question — it queries the portfolio with structured tools, not guesses.
Eight tools wrap the 12MB portfolio.json. Claude picks which to call, chains them across turns, and streams the answer. Every claim is grounded in a tool result you can see in the breadcrumbs.
S-Curve Analyst
Claude Opus 4.7 · live portfolio tool-use
Compare Gen4 vs SGA legacy entities on EBITDA margin.
→ compare_segments({groupA: {legacyEntity: "Gen4"}, ...})
← 2 group summaries returned
Gen4 median EBITDA margin is 19.2% (n=94), vs SGA-legacy at 22.4% (n=89). Gen4's p25 is 13.8% — the drag is concentrated in 23 practices with Non-Clinical Comp ratios above 8%.
What's Wirtz-Jackson's top lever?
→ get_practice({practiceName: "Wirtz"})
← Wirtz - Jackson, MS
Lift Non-Clinical Comp Efficiency — currently 6.5% of NPR vs 5.6% p25. Every 1pp = ~$19.7K. EBITDA impact (realized): $5.9K.
The 8 Tools
get_summary()
Portfolio-level totals, stage mix, top-lever distribution.
list_practices()
Filter by entity, state, ROD, stage, designation.
get_practice()
Full detail + every lever for one practice.
top_practices()
Rank by margin, upside, AR>90, NPR, etc.
compare_segments()
Two-group stat compare (p25/50/75 + stages).
get_lever_rollup()
Every lever type × count × total $ impact.
get_benchmark()
p25/50/75 for any P&L category.
get_research()
Methodology, correlations, insights sections.
Why this matters: The model never sees the full 12MB portfolio. It calls tools, gets back shaped JSON, and reasons over grounded facts. No hallucinated practice names, no invented numbers.
Where the Dollars Are
SGA · S-Curve Build Story
09 / 10
The answer, distributed
$54.7M of identified EBITDA upside, across 331 practices — here's who carries it.
The x-axis is what an OM does tomorrow. The right-hand list is who owns it. This is a direct drop-in to any ROD huddle.
Top-lever distribution · by practice count
Unscheduled Treatment
148
Clinical Comp
62
Non-Clinical Comp
22
Budget Attainment
14
Dental Supplies
9
Facility / Occupancy
7+3
Lab Fees · TX Accept · AR
15
Advertising · IT · G&A
5
Recall · No-show
3
Where the concentration is Unscheduled Treatment is #1 top-lever for 148 practices. If we activate just 30% of that list this quarter, that's ~$4.6M of captured EBITDA.
The IPO narrative Across every legacy entity, the decomposition tells the same story: scale is fine, execution discipline on Clinical Comp + unscheduled backlog is where the margin expansion sits.
What this is not A budget. These are realization-adjusted operating opportunities, defended by P&L ratios vs the p25 of 145 clean peer practices.
Headline
$26.5M is captured just by moving each practice's single top-lever by one step toward p25. The other $28M requires multiple levers, but every one of them is named in the dashboard.
Next action
Ship the dashboard to 12 RODs with a 15-min walk-through. Ask them to pick the top three practices and commit to a 60-day lever. Re-score monthly; track captured-vs-identified.
Next & Live
SGA · S-Curve Build Story
10 / 10
See it yourself
The dashboard is live today. The chat analyst will take any question you have about any of the 331 practices.
Everything on these slides came out of the same portfolio.json — if you disagree with a number, the data is one click away.
Live URL
sga-s-curve-v2.pages.dev
Nine tabs · per-practice drill-in · leverboard · driver research · empirical analytics · embedded Claude analyst. Updates re-push automatically on every portfolio.json rebuild.
Sample questions to try
"Which 10 practices have the largest total EBITDA upside?"
"Compare Gen4 vs SGA on AR>90 and stage distribution."
"What is the p25 benchmark for Dental Supplies?"
"Top lever for [any practice name]?"
"Roll up every lever category by total EBITDA impact."
v3 Upgrade Path
Monthly refresh automation
Pipeline runs month-end · snapshot refresh · Cloudflare auto-deploy
Full INTACCT P&L coverage
Currently 183/331 · target 100% by month-end May
Forward correlation validation
Score at T0 · measure EBITDA delta at T+6mo · tune weights empirically
ROD / region rollup views
Mapping attached today · aggregate views + accountability assignments next sprint
Agent-authored monthly brief
Action Briefing tab (Opus 4.7) writes the month's narrative automatically · ships with v3
The thesis
You don't need a bigger data team to answer portfolio questions. You need the data wired cleanly, the levers defined honestly, and an analyst the RODs can actually talk to.
Try it now
Open sga-s-curve-v2.pages.dev, click the "Ask the analyst" bubble bottom-right, and ask the hardest question you have about the portfolio. We'll show you the tool breadcrumbs.