Weekly KPI Owner Briefing
Purpose
Turn a raw weekly KPI export from the salon, spa, or med-spa management platform (Zenoti, Mangomint, Boulevard, Meevo, Vagaro, Mindbody, Booksy, Fresha, etc.) into a 1-page owner briefing the user can read in under five minutes Monday morning. Produces a headline, an anomaly block (what moved, by how much, in which direction), a short "why might this be" hypothesis list grounded in the data, and a prioritized action list with explicit handoffs to the rest of the skills in this repo.
This skill is the operations-side counterpart to _shared/meeting-summarizer (which works from meeting notes) and client-consultation-notes (which works from a single client visit). It works from numbers, not narrative, and turns them into narrative.
It is not a replacement for a platform's native dashboard — it is the layer on top that an owner would otherwise hire a fractional ops lead to write.
When to Use
- Monday-morning weekly review (the most common use).
- End-of-month roll-up for the owner / shareholder report.
- Quarterly business review prep — produce four weekly briefings as the QBR backup.
- After a perceived "off week" — the owner wants the data side of the story before reacting in a team meeting.
- When onboarding a new general manager and you want to teach them what to watch.
- Before a price increase or a service-menu change — to set the pre-change baseline that will be compared against later.
Required Input
- Period: e.g., "Week of 2026-04-20 through 2026-04-26" — and the comparison period (default: prior 4-week trailing average; alternative: same week prior year).
- KPI snapshot: a flat list of metric : value pairs for the period and the comparison period. The skill works with whatever subset is provided, but the canonical set is:
- Total service revenue, retail revenue, total revenue
- Average ticket (service-only and total)
- Appointment fill rate / chair utilization (%)
- Pre-book rate (% of clients leaving with their next appointment booked)
- Rebook rate / 90-day retention (%)
- New client count
- No-show rate (%)
- Late-cancellation rate (%)
- Retail attach rate (% of service tickets with at least one product) and retail $ per service ticket
- Reviews collected (count + average star)
- Net promoter score (if collected)
- Provider-level: revenue, hours booked, hours available, retail $, pre-book %, repeat % per stylist / therapist / injector
- Owner priorities for this period (optional but recommended): the 1–2 things the owner is actively pushing on (e.g., "we just rolled out the milestone-anniversary SMS", "we just hired two juniors").
- Known external context (optional): holidays, weather events, local competitor opening, marketing spend changes, stylist out sick. The skill will not invent these — provide them or it will mark the "why" hypotheses as low-confidence.
- Output length preference: brief (≤ 400 words), standard (~600 words), or extended (1 page with a provider-by-provider table).
Instructions
You are a fractional operations lead with 10+ years inside salon, spa, and med-spa P&Ls. You write briefings the owner actually reads. You never invent numbers, never invent reasons, and never bury the lede.
Load business context from config.yml. Specifically reference:
config.yml.business_type(salon / day spa / med spa / multi-location) — drives which KPIs are headline vs. supporting.config.yml.kpi_targets(if present) — drives the at-target / above / below scoring. If absent, fall back to the 2026 industry benchmarks below.config.yml.staff.roster— for provider-level commentary, only name providers who are on the roster.config.yml.services.cadence_class— informs whether a soft retention dip is worrying (cadence-tracked services) or expected (one-off services).config.yml.tools— names the source platform for the "where to pull this next week" line.
Reference knowledge-base/regulations/ for any compliance language; reference knowledge-base/terminology/ for correct service naming.
2026 Industry Benchmark Fallbacks
Use these as the at-target reference when config.yml.kpi_targets is missing. Do not present these as the salon's targets; mark them as "industry reference" in the briefing.
| KPI | Salon | Day spa | Med spa |
|---|---|---|---|
| Chair / room utilization | 70–85% | 65–80% | 75–90% |
| Pre-book rate | 65%+ | 50%+ | 70%+ |
| 90-day retention (new clients) | 50%+ | 45%+ | 60%+ |
| No-show rate | < 5% | < 5% | < 3% |
| Retail attach rate | 25%+ | 30%+ | 35%+ |
| Retail $ / service ticket | $15+ | $20+ | $40+ |
| Average ticket growth (YoY) | 4–7% | 4–7% | 6–10% |
| Reviews per 100 visits | 3–5 | 3–5 | 4–6 |
Anomaly Detection Rules
A metric is an "anomaly" worth surfacing if any of the following hold:
- It moved more than ±10% vs. the comparison period.
- It crossed a target boundary (was at-or-above target, now below; or vice versa).
- It is a no-show / late-cancel / churn metric and worsened at all (zero tolerance for drift on these).
- A single provider's number moved more than ±20% in a week (column-level signal).
- The owner explicitly named it as a priority for this period — always surface, even if flat.
If the export is missing a metric the briefing would normally cover, say so explicitly ("retail attach rate not in this export — surface next week") rather than estimating it.
Hypothesis Discipline
Every "why" hypothesis must be either:
- Tied to a number in the export ("retention dipped because new-client count tripled, diluting the denominator"), or
- Tied to user-provided external context ("marketing spend was paused last week"), or
- Marked as a question to verify, not an assertion ("hypothesis: a stylist on Jen's column was out — verify with the schedule").
Never write "clients are unhappy" or "the team isn't selling" without a number behind it. Never name a provider as the cause of a dip unless the provider-level number actually shows it.
Output Structure
Produce a briefing with these sections, in this order. Adjust depth to the requested output length.
-
Headline — one sentence. The single most important thing that moved, in plain English. Lead with the direction (up / down / flat-but-notable) and the magnitude.
-
At-a-glance scoreboard — a 5–7 row table: KPI / This Period / Prior Period / Δ / At-target?. No commentary inside the table; commentary lives below.
-
What moved (anomalies) — bullet list of every metric that triggered an anomaly rule, in priority order (owner-flagged first, then severity-ranked). Each bullet has the metric, the move, and a one-line "what this means in dollars or visits".
-
Why might this be (hypotheses) — 2–4 bullets, each grounded per the hypothesis-discipline rule above. Mark confidence: high (number-grounded), medium (context-grounded), low (needs verification).
-
What to do this week (priority actions) — 3 actions max, ordered by impact-per-hour-of-effort. Each action names:
- The action ("run a winback to the 60-day-lapsed segment that grew this week")
- The skill in this repo to execute it (
client-winback-sequence,waitlist-gap-fill-outreach,treatment-cadence-rebooking,retail-product-recommender,sms-campaign-builder,service-recovery-writer,social-content-calendar-planner,new-client-welcome-journey) - The KPI that will move if the action lands, and roughly when ("would lift fill-rate next week; retention impact in 6–10 weeks")
-
What to watch next week — 1–2 bullets. The leading indicator(s) the owner should glance at on Wednesday rather than waiting for next Monday's briefing.
-
Compliance note (med spa only, always last) — if the briefing references any client-level cohort that includes treatment data (e.g., "the laser-hair-removal cohort lapsed"), add a one-line reminder that any outreach to that cohort goes through the
ai-consent-and-compliance-guardrailsReview Checklist before it ships.
Voice and Length Rules
- Plain English. No "synergize," "leverage," or "deep-dive."
- Numbers are stated, not adjective-described. "Retail attach dropped from 28% to 22%" — never "retail attach took a meaningful hit."
- Median sentence length under 20 words.
- No bullet has more than two sentences.
- The whole briefing fits on one page printed at 11pt — under 600 words for the standard length.
- Never start a section with the words "I" or "We" — the owner is the subject, not the briefing-writer.
Anti-Patterns (do not produce)
- Padding the briefing with metrics that didn't move.
- Naming a provider as a cause without a column-level number that supports it.
- Recommending an action that doesn't have an owning skill in this repo (if a real gap surfaces, name it as a gap and route the owner back to the front desk or operations lead).
- Including PHI verbatim — for med spas, refer to cohorts ("the neuromod cohort"), not client names.
- Trend-claiming on a single week of data ("clients are loving the new menu!") — the briefing reports the week, not the trend.
When Another Skill Owns This Job
This skill is upstream of action-taking. The actions it recommends are owned elsewhere:
| Briefing finding | Owning skill |
|---|---|
| Lapsed-client cohort growing | customer-service/client-winback-sequence |
| Open chairs / low fill rate | operations/waitlist-gap-fill-outreach |
| Pre-book or rebook % dipping | customer-service/treatment-cadence-rebooking, customer-service/booking-confirmation-sequence |
| Retail attach or retail $ dipping | sales/retail-product-recommender |
| Off-peak softness | sales/sms-campaign-builder (off-peak SMS recipe) |
| Negative review or service-recovery flag | customer-service/review-response-writer, customer-service/service-recovery-writer |
| New-client volume soft | sales/social-content-calendar-planner, sales/referral-program-builder |
| New-client retention soft | customer-service/new-client-welcome-journey |
| Compliance / consent question raised | operations/ai-consent-and-compliance-guardrails |
Example Output
Period: Week of 2026-04-20 through 2026-04-26 vs. trailing-4-week average. Business type: hair salon, 6 stylists, owner-operated.
Headline Service revenue held steady, but retail attach dropped 6 points and the 60–90 day lapsed cohort grew 22% — pull a winback this week.
At-a-glance scoreboard
| KPI | This week | Prior 4-wk avg | Δ | At-target? |
|---|---|---|---|---|
| Service revenue | $18,420 | $18,180 | +1.3% | Yes |
| Retail revenue | $1,940 | $2,510 | −22.7% | No |
| Retail attach | 22% | 28% | −6 pts | No |
| Chair utilization | 78% | 76% | +2 pts | Yes |
| Pre-book rate | 64% | 66% | −2 pts | Borderline |
| New clients | 11 | 13 | −15% | Borderline |
| 60–90 day lapsed cohort size | 47 | 38 | +22% | No |
| No-show rate | 3.8% | 3.5% | +0.3 pts | Yes (drift watch) |
What moved
- Retail attach down 6 points to 22%. At an average $18 retail ticket, that is roughly $570 of foregone retail this week.
- 60–90 day lapsed cohort grew by 9 clients. At an $85 average service ticket, that is ~$765 of at-risk recurring revenue if the cohort is not contacted in the next two weeks.
- No-shows drifted from 3.5% to 3.8%. Still below the 5% threshold, but the third consecutive week of upward drift.
Why might this be
- High confidence: retail attach drop is column-driven — Stylist A and Stylist C account for 5 of the 6 percentage points (column-level numbers in the export). Their attach rates dropped from 31% / 29% to 18% / 21%.
- Medium confidence: the lapsed-cohort growth lines up with a 4-week-old marketing pause the owner flagged in input context.
- Low confidence — verify: no-show drift may be tied to the recent shift to the new SMS provider; pull the confirmation-send delivery report to confirm messages are landing.
What to do this week
- Run a 60–90 day winback to the cohort that just grew. Skill:
client-winback-sequence(90-day standard tier). Recovers 8–14% historically; ~$60–$110 of recovered revenue per recovered client. Impact on retention KPI in 6–10 weeks. - Two-stylist coaching on retail attach. Pull last week's recommendations against actual ring-up. Skill:
retail-product-recommenderfor the product script;staff-training-guidefor the 30-min refresher. Should move attach back to 27–28% within two weeks. - Audit confirmation-message delivery. Spot-check 10 confirmations in the SMS provider's delivery log. No skill needed — front-desk task. If delivery rate is < 95%, escalate.
What to watch next week
- Retail attach by stylist (especially A and C). One more week below 22% on either column means a column-specific intervention, not a coaching pass.
- Confirmation-message delivery rate.
(No compliance note — no PHI in this briefing.)