Built, not planned

The profitability platform, feature by feature.

Everything below exists in the product today — no roadmap items, no "coming soon" tiles. Service costing first, colour costing as one powerful part of it.

Service costing

The ticket

  • One ticket per visit covering haircuts, colour services, treatments, styling and retail.
  • Named bowls per ticket (Root, Toner, Gloss — your own preset list).
  • Pick shades from your backbar, enter grams; cost per gram comes from container size, density and wholesale cost.
  • Bowl price = cost × your markup. Per-brand markup overrides the salon default when a bowl is single-brand.
  • Salon-wide waste factor (0–10%) pads every bowl for tube residue.
  • Add-ons and tagged services with base prices roll into the ticket total.
  • Per-bowl processing timers with 20/30/45-minute presets and an overrun indicator.
  • Before/after photos attach to the session, stored privately per salon.
  • Completing a session locks the ticket, saves the formula and deducts inventory.
mixmargin · ticketBowls, grams, cost and price on one screen.
75g
Root bowl
mixmargin · clientsSearchable client list with CSV import and duplicate merge.

Clients & formulas

Know every gram. Know every dollar.

  • Every completed session lands on the client's timeline with products used, price and photos.
  • "Repeat last formula" clones the previous ticket's bowls into a new session.
  • Quote tool prices a service preset before you commit.
  • CSV import with duplicate detection, plus a merge flow for the duplicates you already have.
  • Free-text notes for allergies, target level and home care.

Product usage & inventory

A backbar that counts itself

  • 1,148 professional shades in the shared catalogue, importable into your own backbar in bulk.
  • Products carry role (colour, lightener, developer, additive), container size, unit, density and mix ratio.
  • Live cost per gram on every shade; unpriced shades show "?/g" and flag any bowl that uses them.
  • Stock levels with per-shade low-stock thresholds and brand-level rollup badges.
  • Receive stock by container count; completing sessions deducts the grams you mixed.
mixmargin · inventoryBrand rollups with low-stock counts and unpriced flags.
1 priced ?
Unpriced shade flagged

Overhead & expenses

Invoices, expenses and the ledger

mixmargin · financeInvoices generated from sessions, with issued totals and open balance.
  • Invoices generate straight from a completed session, with colour charges, add-ons and services as separate lines.
  • Draft → issued → partially paid → paid → overdue → void, with your own numbering prefix.
  • Salon and client details snapshot onto the invoice at issue time, so history stays accurate.
  • Printable invoice page plus PDF download.
  • Effective-dated tax codes and rates keep historical invoices at the rate that applied then.
  • Expenses with receipt upload, category splits, vendors and recurring templates.
  • Daily close with expected vs counted cash, lock and audited reopen.
  • Accountant export: a ZIP of CSVs across invoices, payments, expenses, inventory and journals.
  • Per-staff finance permissions with presets for front desk, bookkeeper, manager and read-only accountant.
mixmargin · invoiceColour charges arrive as separate invoice lines.
mixmargin · expenses

Receipt upload capture pending

Expenses and receipt upload — capture pending.
mixmargin · reportsThis week / month / quarter, computed from real sessions.

Profitability visibility

Where the money went

  • Product cost, revenue, profit and grams mixed for the selected range.
  • Grams by brand, sessions over time, top products by grams.
  • Revenue by service, average waste per stylist, and a low-stock list.

Small-team visibility

Your business, walled off

  • Owner and stylist roles; owners control pricing, team and finance admin.
  • Invite codes bring stylists into your salon workspace.
  • Every table is scoped to your salon by row-level security in the database, not just hidden in the UI.
  • Photos, receipts and invoice PDFs live in private per-salon storage.
  • Works on the salon floor: desktop sidebar, mobile bottom tabs, camera capture for photos.
mixmargin · settingsMarkup and waste factor set once, applied everywhere.
$10 → $15
50% markup, live example

Want to see it against your own numbers?