AMP Growth Challenge
← Location leaderboard

Four Wall

Ever/Body-Greenwich Village

Needs Support · <70%

Rebooking — Road to 80

Ranked by Growth (Period % vs. YTD baseline), since 2026-07-13.

YTD % (2026-01-01 – 2026-07-12)

6.8%

Period % (since start)

0%

Growth

-6.8 pts

Growth rank

#24

For reference only (not counted toward standings): 7% same-day / 12.5% 30-day over the 90 days before the program started.

How this is calculatedshow formula & sources
Same-day % = COUNT(guests whose next appointment was created the
             same calendar day as their payment, with a future start time)
           / COUNT(visits in the period)

YTD %      = same formula, over Jan 1 - Jul 12, 2026 (before program start)
Period %   = same formula, over 2026-07-13 forward (day over day)
Growth     = Period % - YTD %, in percentage points

Ranked by Growth, not raw Period %. Top 3 by Growth get access to
Shawna's non-cash reward list - pick exactly 1 per location, does not
stack across locations. Growth needs both a YTD and a Period figure to
rank; locations without enough Period data yet don't rank until they
have it - they aren't scored as zero.

Color band (informational, separate from ranking): green >=80%,
yellow 70-79%, red <70% on Period %.

Reporting sources

  • Invoices: Corral amp-organization → use_dataset(39)
  • Appointments (completed/confirmed/checked-in): Corral amp-organization → use_dataset(1106)

Known data gaps

  • Program start is backdated to Monday 2026-07-13 (2 days before this was built) so the leaderboard shows real accumulated days instead of hours — a fixed calendar anchor, not a sliding lookback.
  • Zenoti has duplicate center_name records for several locations (an old state-prefixed code alongside the current Brand-City name). YTD figures merge known duplicates by city match (see CENTER_ALIASES in scripts/build-data.mjs); H-MD-Chisholm Creek vs. H-MD Medical Spa is ambiguous and deliberately left unmerged — worth confirming against the master location list.

Reengagement Challenge

Lapsed = seen in the last 90 days, no future appointment. Dormant = not seen in 90+ days, no future appointment. Starting pool snapshotted 2026-07-15; Recovered counts pool members who now have a future appointment, tracked day over day.

Lapsed

138

Dormant

869

Starting pool

1007

Recovered to date

0

How this is calculatedshow formula & sources
Lapsed        = seen in the last 90 days, no future appointment
Dormant       = not seen in 90+ days, no future appointment
Starting pool = lapsed + dormant, snapshotted 2026-07-15 (frozen list)
Recovered     = COUNT(starting-pool patients who now have a future appointment)
Recovery rate = Recovered / Starting pool

Recovered is structurally 0 right now — the snapshot and the check
happen at the same instant. It moves once the daily refresh re-checks
that same frozen patient list on later days.

Reporting sources

  • Patient last-seen / last-appointment status: Corral amp-organization → zenoti_corp.transformed_guest_v

Known data gaps

  • This snapshot is dated 2026-07-15, not the program's 2026-07-13 start — lapsed/dormant status is a live-state query, and Zenoti can't retroactively tell us who was lapsed/dormant on a past date the way invoices/appointments can be queried historically.
  • Day-over-day recovery tracking needs the frozen starting-pool patient list stored persistently (some locations exceed 40,000 patients) and re-checked daily — not yet provisioned (recommended: Supabase, matching every other AMP repo's pattern)