AnchorWorks KPI Command Center · Build Walkthrough

Phase 0 complete · Phase 1 spine is live

We poured the foundation — and turned on your first live dashboard.

Today we did two things. We built the database that every future number will live in, shaped so it never needs a rebuild. And on top of it we lit up the Leadership dashboard — reading real numbers straight from that database, nothing typed in by hand. This page teaches you exactly what that means, and how the same foundation quietly serves all seven departments.

11
tables built for the ledger
9
reporting views (the calculators)
1
live dashboard shipped
0
numbers hardcoded

Read this first

The one idea the whole system is built on.

Capture everything from day one. Compute every number, never type it. Visualize in sequence.

Most companies bolt tracking on later — and discover the data they needed was never captured, and can't be reconstructed. We do the opposite. From the very first lead and the very first hire, every event is written to an append-only ledger: a record that is only ever added to, never edited. Dashboards don't store numbers — they read the ledger and calculate. Change the underlying data and every number moves on its own. That's the difference between a spreadsheet someone fudges and a system you can trust to sell the company on one day.

The mental model

Think of it like a bank. The ledger is the immutable record of what happened. The statements (your dashboards) are computed from it — you'd never let someone hand-edit a statement. When two systems disagree on a number, the field's designated owner wins (Stripe owns cash, GoHighLevel owns pipeline). One fact, computed once, shown at every altitude.

The architecture

Four layers, each with one job.

Data flows top to bottom. We built the middle two today; the outer two get wired as real sources and departments come online.

A · Collection Webhooks · GTM/pixels · pg_cron
Emits events — a page view, a booked call, a Stripe payment. It never stores the truth; it just reports what happened. Wires up as each real source connects.
B · Storage — the truth Supabase (Postgres) · built today
The append-only ledger. One row per event, IDs as keys, immutable. This is the foundation we poured in Phase 0.
C · Reconciliation SQL reporting views · built today
The calculators. SQL views compute every KPI from the raw rows — so a number is never hand-keyed, and a human can only correct data in one audited place.
D · Presentation Live dashboard · Phase 1 spine live
Read-only dashboards per department, reading straight from the views. The Leadership overview is live now; the rest follow in build order.

Phase 0 — what we built

The foundation: a warehouse-shaped database.

"Warehouse-shaped" means we built it today the way a $100M company's data warehouse is structured — so it scales up without ever being rebuilt.

1 · Raw tables — the append-only ledger

These are the source of truth. Every fact is one row, stamped with a stable ID and a set of dimension tags. Rows are never edited or deleted — corrections go somewhere else (below). That immutability is what lets any future dashboard look back at clean, complete history the moment it's built.

TableWhat it capturesOwner of the truth
raw_eventsThe universal log — every page view, opt-in, booked call, won deal, payment.GA4 / GTM
raw_ad_spendAd spend, impressions, video hook/hold, clicks, leads by channel.Meta / Google / YouTube
raw_paymentsCash in — payments, refunds, chargebacks.Stripe (cash truth)
raw_opportunities
raw_appointments
Pipeline stages, deal value, show / no-show.GoHighLevel
raw_clientsOnboarded / first-lead / hit-$100k / churned dates, MRR, health scores.Delivery + GHL
finance_snapshotsCompany figures with no event source yet — EBITDA, targets, goals.Finance (computed)

Every fact row also carries tags: departmentteam owner_idclient_id source_funnelutm_* — remember these; they're the trick behind serving all seven departments.

2 · Reporting views — the calculators

A view is a saved SQL query. It holds the formula, not the number. Ask the view for "Company MER" and it computes revenue ÷ marketing spend on the spot from the raw rows. This is why nothing can be faked — there's no cell to overwrite.

-- The whole formula for Marketing Efficiency Ratio lives in SQL, not in a cell:
create view v_company_kpis as
  select sum(cash)/sum(ad_spend) as mer,   -- 3,100,000 / 740,000 = 4.2×
         ebitda/revenue          as ebitda_margin
  from ...the raw ledger, netted against human corrections;

We shipped 9 views — company KPIs, the five department north-stars, the revenue curve, team output, plus sales & client-success detail. Each owns its formulas, taken straight from the model you and Chris locked in the prototype.

3 · The adjustments table — the only place a human writes

Raw logs are machine-only. When a human needs to correct something, they append a dated, reasoned entry to adjustments — and the reports net the raw data against it. You get a permanent audit trail: "what the machine saw" versus "what we corrected," and why. People who read the numbers can never quietly edit them.

The payoff

How one database serves all seven departments.

Here's the part worth internalizing. We do not build a spreadsheet per department or a tab per person — that's the trap that makes systems sprawl and rot. Because every row is tagged, the exact same rows roll up to any altitude just by filtering:

Company Department Team Individual rep

Filter the ledger to department = 'sales' and you have the Sales dashboard. Filter to one owner_id and you have that rep's scorecard. Same data, one formula, many lenses. Build once, filter many. That principle is what makes seven departments (and eventually every individual) cost almost nothing extra to add.

Ownership
Phase 4
The company as a capital asset — "is my capital compounding, and are we solvent?"
North star · Enterprise Value (EBITDA × multiple)
  • Are we solvent — how much runway?
  • Is acquisition efficient enough to scale?
  • Is enterprise value growing toward a sellable asset?
Leadership
Live now
The bridge — every department's health on one screen.
North star · Each dept vs target (attainment)
  • Which department is over- or under-performing?
  • Where do we reallocate attention or coach a leader?
  • Is team output healthy, separate from profit?
Marketing
Tile live
Turning spend into qualified leads and booked calls.
North star · Cost per lead · target $80
  • Which channel do we scale vs cut?
  • Is acquisition on target (CAC / CPL vs goal)?
  • Which creative / hook wins?
Sales
Tile live
Booked call → cash collected. SDR triage, then closer.
North star · Cash collected · target $400K
  • Is the pipeline healthy enough to hit revenue?
  • Which rep needs coaching?
  • Are show (≥75%) and close (≥20%) rates on target?
Client Success
Tile live
Keeping clients — the #1 risk is early churn.
North star · Net Revenue Retention · target 105%
  • Which clients are at churn risk right now?
  • Are we onboarding fast enough?
  • Is retention healthy (NRR, NPS)?
Program Delivery
Tile live
Actually getting clients to win — and cheaper each time.
North star · % of clients at $100k/mo · target 60%
  • Is delivery working (clients winning)?
  • Is it getting cheaper / faster per client?
  • Which engine do we deploy for this client?
Operations
Tile live
Keeping the machine — automations, hiring, throughput — healthy.
North star · Automation success rate · target 99%
  • Are our systems / automations healthy?
  • Is hiring / retention on track?
  • Where's the bottleneck?
Already feeding Leadership
Five of these seven already report their north-star into the live Leadership dashboard as a color-coded tile. Their full dashboards get built in sequence — but their number is captured and rolling up today.

Phase 1 — the spine, live

The Leadership dashboard, reading real data.

This is a screenshot of the running app. Every number on it was computed by the SQL views from the ledger — none of it is typed into the page.

AnchorWorks Leadership dashboard — dark, gold-accented, showing company MER, five department tiles, a MER gauge, a revenue-vs-target chart and team output bars
Live at localhost — Morning Ocean canvas, Bone numbers, gold earned sparingly.

Reading the screen — every element drives a decision

Hero stats + MER gauge
Is acquisition efficient enough to scale? Company MER 4.2× against a 5.0× goal (84% there), blended CAC, EBITDA margin, cash. The gauge fills and the number counts up on load.
The five department tiles
Which department needs attention? Each shows its north-star vs target and an attainment %. You read the whole company's health in one glance.
The colored dots & bars
Green / amber / red is the health language — hit target = green, within 90% = amber, below = red. Right now Client Success is the only amber tile (NRR 103% vs a 105% target).
Revenue vs target
Are we tracking to the month? Cumulative cash against the target line, with today marked. $3.1M against a $2.9M to-date target.
Team output bars
Is output healthy, separate from profit? SDR meetings, closer cash, onboardings, time-to-first-lead — the activity that produces the results above.
Gold, used sparingly
Gold is earned — under ~5% of the screen. It marks only the one number your eye should land on. If everything were gold, nothing would be.

The test that matters

How we proved it's real, not a mockup.

A beautiful dashboard with fake numbers is worthless — and it's the trap the plan explicitly warns about. So we tested it the only honest way: we reached into the database and changed one value, then refreshed the page. The tile moved on its own.

Operations
99.2%
Automation success · target 99%
Operations
88.0%
Automation success · target 99%

We set automation success to 88% in the database → the tile dropped, turned red, attainment fell to 89%. Then we set it back. Nothing on the page knew the number ahead of time — it only knows how to ask. That's the guarantee: when real data flows in, the dashboards are already correct.

Discipline

The rules from the repo — and that we kept every one.

Build in phase order — never ahead. We built Phase 0 (schema) then the Phase 1 spine only. No jumping to department dashboards the business isn't ready for.
Read live from Supabase — nothing hardcoded. Data is fetched in exactly one file; components render whatever the views return. Proven with the mutation test.
One design source — gold is earned (≤5%). Every color, font and radius comes from the locked tokens.css. No invented values.
Decision-first — no vanity metrics. Every tile answers one of the dashboard's 2–3 decisions. If a number doesn't inform a decision, it's not on the screen.
Warehouse-shaped from day one. Append-only raw tables, IDs as keys, reconciled reporting — so scaling up is a lift-and-shift, not a rebuild.
Secrets in .env, work on a branch → PR. No keys committed. Everything shipped on phase-1-leadership-spine as PR #1 for Chris to review and wire live.

Where we are

Done today, and the sequence ahead.

Two axes, never confused: data capture is day-one and universal; dashboards are built in sequence.

Phase 0 · done

Day-One Foundation

The Supabase ledger, reporting views, and the tag scheme every department reads from.

Phase 1 · live (spine)

Leadership Overview

Data flowing, the company's health visible, five departments rolling up. The pipes are proven.

Phase 2 · next

Acquisition & Sales

Funnels → strategy session → triage → close. CPL, show/close rates, cost-per-booked-call — the metrics that decide if the business works.

Phase 3

Churn Defense

Client Success (health score, NRR) + Program Delivery (% at $100k, time-to-first-lead). Built the moment there are clients to keep.

Phase 4

Everything else

Ownership, Operations, and per-rep granularity — each built as the leader who'll use it comes on.

Immediate next steps

① Chris points the app at the cloud Supabase and swaps the sample data for real ingestion — no app changes, the views are the contract. ② Then your pick: the "chat with your KPIs" AI panel (a stub today), or the Sales dashboard.

Learn the numbers

The KPIs, in plain English.

Know these cold and you can read any screen in the system.

MER — Marketing Efficiency Ratio
revenue ÷ marketing spend
Every $1 of ad spend returns $X of revenue, blended across all channels. The most reliable acquisition number because it needs no per-campaign attribution.
Target · 3.0–5.0×
Blended CAC
acquisition cost ÷ new customers
What it fully costs to acquire one client. Watch it against lifetime value, not in isolation.
Target · ≤ $1,000 (ceiling $2k)
LTGP : CAC
lifetime gross profit ÷ CAC
The master efficiency ratio — profit per client over their life vs cost to win them. Above 3:1 is healthy; the model runs ~71:1.
Target · ≥ 6 : 1
CFA — Client-Financed Acquisition
setup gross profit ÷ CAC ≥ 2
If the upfront fee's profit more than covers the cost to acquire, growth self-funds — you're not borrowing to grow.
Status · 11× — PASS
Rule of 40
growth % + EBITDA margin %
The investor's shorthand for a healthy, sellable company — growth and profit together should clear 40.
Target · ≥ 40
NRR — Net Revenue Retention
(base + expansion − churn) ÷ base
Does existing-client revenue grow on its own? Above 100% means you'd grow even with zero new sales. Acquirers pay a premium for it.
Target · ≥ 105%
Client Health Score
30·results + 25·compliance + 15·engagement + 15·sentiment + 15·financial
The Client Success "emotion meter" — a single 0–100 read (green/amber/red) predicting churn before it happens.
Green · ≥ 80
Show & Close rate
held ÷ booked · won ÷ held
The two conversion gates of the sales engine — did they show up, and did the closer close.
Target · show ≥75% · close ≥20%
% at $100k/mo
clients at $100k ÷ active clients
Program Delivery's north star — the share of clients actually winning at the level that triggers graduation.
Target · ≥ 60%
Time-to-first-lead
first-lead date − onboarded date
How fast a new client sees a result. The single biggest insurance against early churn.
Target · ≤ 30 days