Clickable mockup of all 6 tabs in the V1 system. Click between tabs to feel how the dashboard would be used. Numbers are illustrative; structure and field names match the brief exactly.
This mockup represents Gray's starting position. Push back on any tab structure, any metric, any panel. The brief's reasoning is in the .docx companion — read it before reacting to this.
| Step | Total | Today | Last 3d | Last 7d | Last 28d |
|---|---|---|---|---|---|
| Apps started / leads | 47 | 2 | 8 | 14 | 47 |
| Total applications deduped 72h | 29 | 1 | 5 | 9 | 29 |
| Qualified target | 17 | 1 | 3 | 5 | 17 |
| Disqualified | 12 | 0 | 2 | 4 | 12 |
| Calls booked deduped appt_id | 17 | 1 | 3 | 6 | 17 |
| Unique leads who booked | 16 | 1 | 3 | 6 | 16 |
| Calls taken CRM workflow pending | — | — | — | — | — |
| Qualified calls taken CRM workflow pending | — | — | — | — | — |
| App → booking % | 58.6% | 100% | 60.0% | 66.7% | 58.6% |
| App → qualified % | 58.6% | 100% | 60.0% | 55.6% | 58.6% |
| Qualified → booking % | 94.1% | 100% | 100% | 120% | 94.1% |
After applying the dedup fixes (§6a in the brief): App count dropped from 31 to 29 (2 same-email-within-72h duplicates). Booking count dropped from 20 to 17 (2 double-webhook fires + 1 rebook collapsed). Qualified → booking is now 94% instead of the impossible 111% you've been seeing.
Calls Taken rows are intentionally blank, not zero — the CRM workflow that populates the attended column hasn't been wired yet. The dashboard distinguishes "not implemented" from "zero this week."
| Variant | Status | Traffic | Conversions | Conv rate | Lift vs control | Confidence |
|---|---|---|---|---|---|---|
| LP-A (control) | live | 412 | 47 | 11.4% | — | — |
| LP-B (challenger) | live | 398 | 61 | 15.3% | +34.2% | Yellow · 13d, 61 conv, 34% lift |
| LP-C (challenger) | live | 405 | 38 | 9.4% | −17.5% | Yellow · 13d, 38 conv, neg lift |
Confidence thresholds (recalibrated for HB volume): 🟢 ≥80 conv/arm + ≥14d + ≥25% lift · 🟡 ≥40 conv/arm + ≥10d + ≥15% lift · 🔴 below either.
These variants don't exist yet. HB is on a single LP today. This is what the dashboard would look like once Daniyal builds the variant routing layer (Vercel cookie-based) and we ship LP-B and LP-C.
| Variant | Apps | Meta-qual rate | CRM-qual rate | Delta | Signal |
|---|---|---|---|---|---|
| LP-A | 47 | 68% | 61% | 7pp | Healthy |
| LP-B | 61 | 82% | 52% | 30pp | Tighten form, don't kill variant |
| LP-C | 38 | 71% | 64% | 7pp | Healthy |
When Meta-qualified rate is materially higher than CRM-qualified rate, the LP is letting "looks-qualified" leads through but the form isn't filtering them. That's a form-tightening signal, not a creative kill signal. LP-B is winning on raw conversion but its qualification quality is the worst — investigate before crowning it.
| Week | Spend | Apps | Qualified | Booked | Closed | Revenue | ROAS |
|---|---|---|---|---|---|---|---|
| 2026-05-18 | $2,140 | 9 | 5 | 6 | 1 | $6,000 | 2.8× |
| 2026-05-11 | $2,080 | 7 | 5 | 5 | 1 | $5,000 | 2.4× |
| 2026-05-04 | $2,200 | 7 | 4 | 3 | 0 | $4,000 | 1.8× |
| 2026-04-27 | $2,000 | 6 | 3 | 3 | 1 | $5,200 | 2.6× |
| Date | Change type | What changed | Hypothesis | Result |
|---|---|---|---|---|
| 05-10 | formal_test | LP-B headline: pain-led → outcome-led | Outcome framing converts higher for warm traffic | In flight · Day 13 · 61 conv |
| 05-08 | form_logic | Added income-floor question to application | Filter unqualified before they hit CRM | DQ rate ↓ 8pp · Won |
| 05-03 | single_variant_launch | LP-C launched (testimonial-first hero) | Social proof at fold lifts CTR | In flight · Day 20 · negative trend |
| 04-28 | rollback | Reverted CTA color (orange → brand) | Orange CTA hurt brand congruence | −12% CTR confirmed · Rolled back |
| 04-20 | fix | Pixel double-firing on /apply | Inflated app_start counts | Resolved · counts now accurate |
| Hypothesis | Node | Pred. lift | Confidence | Priority | Status |
|---|---|---|---|---|---|
| Hero video → static image w/ outcome callout | LP | +18% | High | 9.2 | approved |
| Reduce app fields from 11 → 7 | App | +22% | Medium | 8.4 | proposed |
| Add call-prep video to TY page (lift show rate) | TY | +15% | Medium | 7.1 | proposed |
| Income qualifier earlier in flow | App | +10% | High | 6.8 | in_flight |
| Button copy: "Apply now" → "Get my plan" | LP | +4% | Low | 2.1 | Too small for HB volume tier |
Sorted by predicted_lift × confidence. The last row demonstrates the volume-tier guidance widget: at HB's 2K-10K monthly LP views, a 4% predicted lift won't reach yellow confidence within a reasonable test window. Flagged automatically.
| Node ID | Type | Name | Parent | Variant of | Test method | Active |
|---|---|---|---|---|---|---|
hb_dto_lp | lp | DTO landing (control) | — | — | — | ✓ |
hb_dto_lp_b | lp | LP-B outcome headline | hb_dto_lp | hb_dto_lp | Vercel split | ✓ |
hb_dto_lp_c | lp | LP-C testimonial-first | hb_dto_lp | hb_dto_lp | Vercel split | ✓ |
hb_dto_app | application | DTO application (single) | hb_dto_lp | — | — | ✓ |
hb_dto_cal | calendar | DTO calendar (GHL iframe) | hb_dto_app | — | — | ✓ |
hb_dto_ty | ty | DTO thank-you | hb_dto_cal | — | — | ✓ |
| — | — | 20+ placeholder rows reserved for future variants | — | — | — | — |
active = TRUE. No schema changes needed when adding variants — Tabs 1, 2, 3 read from this dynamically. Test method tracked per variant so the dashboard knows how to interpret the data (URL split vs Meta A/B vs duplicate campaign — see §8 of the brief).
New: Benchmark / Target / Current panel at the top of Tab 1. This is the framing that anchors everything — we're not measuring absolute performance, we're measuring against a contractual baseline. Switches with the "Optimizing for" toggle.
Tab 1 now shows real deduped numbers (29 apps not 31, 17 bookings not 20). Reflects what would happen if you shipped the §6a quick-fix formulas today. Also: "Calls Taken" rows are dashes not zeros, because the CRM workflow isn't wired — distinguishes "not implemented" from "no data this week."
Tab 2 added test_method context — Vercel split vs Meta A/B vs duplicate campaign. The dashboard knows how the data was generated so you know how to interpret it.
Tab 5 includes volume-tier guidance. The last row demonstrates the auto-flag for tests whose predicted lift is too small to ever reach confidence at current volume — prevents wasted test cycles on headline-only tests.
Tab 6 added test_method column. Per-variant tracking of how the test is being run, so when you look back at a result you remember whether it was a clean URL split or a confounded campaign duplicate.
(1) The Benchmark/Target/Current panel design — does this framing feel right or is it busy? (2) Tab 2 still doesn't exist for real because you have no variants yet — should the mockup show it as "future state" more explicitly? (3) The dedup fix formulas in §6a of the brief — try them on a copy of the sheet before sending, so we know they actually work before promising Daniyal they will.