See the product // full briefs, not teasers

This is what you get
from one export.

Two deep reads — which visits turn into regulars, and how the month is tracking against the goals you set — with the full scoreboard, every finding, and the file that produced them. Sample data throughout; yours replace it the moment you send one.

01

The next-level briefs

  • 01 · What leads to what

    Nobody else sells this. Which first visit predicts a return. Which offer buys loyalty vs a one-night stand. Rates that stay quiet until the sample can carry them.

    loop 09

    What leads to what

    replaces: nothing — no incumbent offers this at all

    Relates non-numeric facts to outcomes: which first service, and which staff member, actually predicts a second visit. Every rate is tested against the house average, with the margin widened for the number of groups examined — so most months it says very little, on purpose.

    10

    spending less

    75%

    discount return

    87%

    quiet-day return

    228

    min this replaces

    you send this

    salon_bookings.csv

    1,175 rows · 17 columns · 253 days · no cleanup asked for

    Booking ID,Booked On,Appointment Date,Client Name,Client Email,Client Phone,Loyalty ID,Loyalty Tier,Loyalty Points,Birthday,Member Since,Service,Provider,Quantity,Total Paid,Promo Code,Status4965,2025-11-01 00:00,2025-11-08 00:00,Ben Hume,ben.hume@gmail.com,612-555-1313,LC7313,Bronze,142,03-20-1973,2025-11-04,Balayage,Renata,1,$142.50,NEWCLIENT25,Completed4799,2025-11-08 00:00,2025-11-10 00:00,Ben Duarte,ben.duarte@outlook.com,612-555-1261,LC7261,Bronze,0,08-14-1998,2025-11-10,Balayage,Mika,1,$190.00,,No Show4560,2025-11-01 00:00,2025-11-11 00:00,Gus Ueda,,612-555-1188,,,,,,Colour,Del,1,$110.00,,Completed5098,2025-11-01 00:00,2025-11-11 00:00,Wren Alvarez,wren.alvarez@outlook.com,612-555-1360,LC7360,Bronze,65,05-13-1989,2025-11-04,Treatment,Josie,1,$65.00,,Completed

    + 1,171 more rows → 374 people

    you get this

    WHAT LEADS TO WHAT — Salon / clinic / appointment services

    374 clients across 253 days

    10 regulars are quietly spending less than they used to

    Rosa Pike (7 visits) — was $145.00 a visit, now $47.50 (-67%)

    Ada Quill (6 visits) — was $190.00 a visit, now $65.00 (-66%)

    Discount-acquired clients may come back less often — 75% against 83%, on too few to call

    First visit on an offer — 75% came back (95 of 127)

    First visit at full price — 83% came back (205 of 247)

    Clients who first came in on a quiet day come back more often — 87% against 76%

    First came in on a quiet day — 87% came back (123 of 141)

    First came in on a busy day — 76% came back (177 of 233)

    Do this 2

    • These are still coming, so this is a conversation at the chair rather than a win-back campaign.
    • A rush is only worth staffing for if the people in it return. This says whether yours do.

    1 more finding live in the sheet below — that is the rest of the product, not a truncated pitch.

    the full sheetOpen alone →
    python -m loops patterns salon_bookings.csv --pack services

    228 min · sample data

  • 02 · The month, against the plan

    Goals you set — never numbers we invent. Pace against your own months. Misses named before the quarter ends with a shrug.

    loop 10

    The month, against the plan

    replaces: month-end totals, comparisons, and where the goals stand

    Totals, last month, year to date, and what shifted underneath a flat total. Goals come from a file the owner writes — the one number this tool will not invent.

    93%

    of takings

    67%

    of new clients

    180

    services

    169%

    of return target

    you send this

    salon_bookings.csv

    1,175 rows · 17 columns · 253 days · no cleanup asked for

    Booking ID,Booked On,Appointment Date,Client Name,Client Email,Client Phone,Loyalty ID,Loyalty Tier,Loyalty Points,Birthday,Member Since,Service,Provider,Quantity,Total Paid,Promo Code,Status4965,2025-11-01 00:00,2025-11-08 00:00,Ben Hume,ben.hume@gmail.com,612-555-1313,LC7313,Bronze,142,03-20-1973,2025-11-04,Balayage,Renata,1,$142.50,NEWCLIENT25,Completed4799,2025-11-08 00:00,2025-11-10 00:00,Ben Duarte,ben.duarte@outlook.com,612-555-1261,LC7261,Bronze,0,08-14-1998,2025-11-10,Balayage,Mika,1,$190.00,,No Show4560,2025-11-01 00:00,2025-11-11 00:00,Gus Ueda,,612-555-1188,,,,,,Colour,Del,1,$110.00,,Completed5098,2025-11-01 00:00,2025-11-11 00:00,Wren Alvarez,wren.alvarez@outlook.com,612-555-1360,LC7360,Bronze,65,05-13-1989,2025-11-04,Treatment,Josie,1,$65.00,,Completed

    + 1,171 more rows → 374 people

    you get this

    THE MONTH — Salon / clinic / appointment services

    July 2026

    July 2026 — 180 services across 170 clients, $19,556.25

    31 trading days in this month.

    12 new clients whose first visit anywhere in this file was this month.

    Clients who had been in before: 93% against a target of 55% — met

    169% of the way there.

    This target came from you, not from this export.

    Takings: $19,556.25 against a target of $21,000.00 — missed

    93% of the way there.

    This target came from you, not from this export.

    Do this 2

    • Takings came in at 93% of target. Worth knowing why before the next month.
    • New clients came in at 67% of target. Worth knowing why before the next month.

    4 more findings live in the sheet below — that is the rest of the product, not a truncated pitch.

    the full sheetOpen alone →
    python -m loops month salon_bookings.csv --pack services --goals goals.example.json

    112 min · sample data

02

The rest of the set

Same engine, other questions — end of day, pre-shift, gaps, portfolio. Each opens as its own sheet. Sample data throughout; generated 2026-08-05.

  • loop 01

    End of day — a salon

    Whether the day was actually normal, who was new, and who has quietly stopped coming — the three things the takings total cannot tell you.

    Open the sheet →
  • loop 01

    End of day — a cafe

    The same loop on a café's checks. Every noun changed — guests, menu items, service — and not one line of the engine did.

    Open the sheet →
  • loop 02

    Pre-shift brief

    Who to greet by name, whose birthday it nearly is, and who is a few points from a reward they do not know they have earned.

    Open the sheet →
  • loop 05

    Gaps to fill

    The only loop that makes money rather than saving time. Ranked by each person's own rhythm, not by who is most memorable.

    Open the sheet →
  • loop 08

    All locations

    Silence by default: four sites in, two named. Each judged against its own Tuesdays, never against the chain average.

    Open the sheet →

What it proves

One file answers all of these. Vocabulary is a pack, not a fork. The engine stays quiet when the sample cannot support a claim — on purpose.

What it does not

These exports are ours — built to be awkward. No real business has sent a file yet. Minutes are arithmetic against assumed baselines until yours replace them.

Start free — send one export

Your first briefs come from your own file.

Prefer the packages? The loops maps each question to a level.