Beauty
Appointments and staff commission for a hair salon
A hair salon books appointments per stylist and service, with different durations per service. Each stylist earns a commission on services and products sold, and the owner sees the commission owed per stylist at the end of the month without a spreadsheet.
Automatically generated draft
Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.
Section 01 · What has to work
The salon owner needs automated monthly stylist commission calculations derived from linked service and product sales without relying on manual spreadsheets.
Section 03 · Screens
Every screen, and what it is for.
- ›Booking Calendar — Client, books service and stylist, availability slot selection must be instant.
- ›Stylist Dashboard — Stylist, views daily appointments and personal commission earnings, appointment list must be instant.
- ›Checkout Register — Front desk, records service completion and product sales, total calculation must be instant.
- ›Owner Payouts — Owner, reviews monthly commission totals per stylist, summary aggregation must be instant.
- ›Service Catalog — Owner, manages services, durations, and base prices, list rendering must be instant.
Anything not on this list is not in version one. That is what keeps a fixed price fixed.
Section 04 · The data model
What it stores, and who can read a row.
appointments
id uuid, client_id uuid, stylist_id uuid, service_id uuid, start_time timestamptz, end_time timestamptz, status enum(booked, completed, cancelled)
Access · Stylists and owners read all; clients read their own appointments.
services
id uuid, name text, duration_minutes int, price numeric(10,2), commission_rate numeric(5,4)
Access · Anyone can read active services.
sales
id uuid, appointment_id uuid, stylist_id uuid, product_id uuid, amount numeric(10,2), commission_earned numeric(10,2), created_at timestamptz
Access · Stylists read their own sales; owners read all salon sales.
commission_payouts
id uuid, stylist_id uuid, period_month date, total_amount numeric(10,2), paid boolean
Access · Stylists read their own payouts; owners read all payouts.
Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.
Section 05 · States
booked → completed → reconciled → paid
Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.
Section 06 · Where this breaks
What bites products like this one.
Stylist schedules overlap when two clients book the same service duration simultaneously across different devices.
Use database-level exclusion constraints on stylist_id and time ranges to prevent double-booking.
Commission rates change mid-month, making historical payout calculations ambiguous and contested.
Snapshot the commission rate onto the sales record at the exact moment of checkout.
Section 08 · Deliberately left out
What version one does not do.
- ×Leave out online client payments for v1 — handling refunds and deposit disputes delays launch, add in v2 when cash flow demands it.
- ×Leave out tiered commission structures for v1 — flat rates keep the initial database logic simple, add tiers when stylists demand complex incentives.
This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.
Still open
What we would ask before quoting.
- Should commission be calculated on the gross service price or net price after discounts?
- Do stylists receive commission on products they personally sell, or a split across the whole salon?
Your product, not this one
Get this written for what you are actually building.
Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.
Next step
Find out if your idea fits in 10 working days.
Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.