The challenge
Cleopatra INK ran their permanent-makeup studio on three disconnected tools: a calendar app for bookings, a separate POS for in-studio payments, and a Google Sheet for artist commissions. Reconciling them at month-end took 12+ hours, the studio owner couldn't tell at a glance which artist was actually profitable, and disputes with artists over 'how much do I get paid for that touch-up?' were a recurring source of friction. Meanwhile, deposits were collected by hand on the phone — so no-shows hurt twice (once for the empty chair, once for the chargeback fight).
The ask was to compress the entire studio operation into one SaaS — public booking, secure deposits, in-studio payment, automated artist-earning splits, consent-form attachments, and an owner dashboard with revenue and artist performance — built specifically for the permanent-beauty workflow (deposit + balance, designer + artist roles, multi-touch services, referrals) instead of a generic salon CRM.
Our solution
We built Cleopatra INK as a single, multi-tenant SaaS in three coordinated surfaces: a public booking page, an in-studio operations console, and an artist self-serve portal — all powered by a Node.js + Express API, MongoDB Atlas, and a Stripe + Stripe Connect payment layer that owns the entire money flow.
The public booking page is the top of the funnel. A client picks a service (microblading, lip blush, eyeliner, removal, touch-up), picks an artist (with profile, portfolio, and reviews), picks a slot from live availability, fills the consent intake, and pays a deposit through Stripe Checkout — all in one mobile-friendly flow. A confirmation SMS goes out via Twilio with a magic-link reschedule URL, so the no-show rate drops without a phone call.
The in-studio operations console is what the front-desk and the artist actually use during the appointment. They see the day's schedule, the consent forms attached to each appointment, the deposit status, and a one-tap 'Take Payment' button that opens a Stripe Checkout for the balance. The moment the balance is paid, the system runs the commission split: the studio's house cut goes to the platform's main Stripe account; the artist's share goes directly to their connected Stripe Connect account; any product / room / referrer fees are subtracted before the split, all driven by per-service and per-artist commission rules the owner sets once and forgets.
The artist self-serve portal is what makes earnings disputes disappear. Each artist logs in to a portal that shows every appointment they performed, the gross amount, every fee or split, and the net amount paid out — with the date Stripe transferred it. There's no spreadsheet, no email, no end-of-month negotiation; the math is the ledger.
For the owner, a financial dashboard rolls up revenue by service, by artist, by location, and by date range, with a one-click export. A referral program tracks designer / artist referrals end-to-end so a designer who brings in a new client gets paid automatically. Consent forms, design files, and signed agreements live in S3 with time-bounded signed URLs — never exposed via raw object access.
Underneath it all: Stripe webhooks land idempotently into the Node.js API; deposits, balances, refunds, and Stripe Connect transfers are reconciled against a per-appointment ledger so the owner can prove every dollar at any time.
- Public mobile-first booking — service + artist + slot + consent intake + Stripe deposit, all in one flow
- Twilio SMS confirmation with a magic-link reschedule URL — no-show rate drops without a phone call
- In-studio operations console with the day's schedule, attached consent forms, and one-tap 'Take Payment'
- Automated artist-earning splits via Stripe Connect — house cut, artist share, room / product / referrer fees, all on the same charge, idempotently
- Per-service and per-artist commission rules — set once, forget; the math becomes the ledger
- Artist self-serve portal — every appointment, gross, every fee, net, paid-out date — earnings disputes have nowhere to live
- Designer + artist referral program with automatic referrer payout when a referred client first books
- Owner financial dashboard with revenue by service, artist, location, and date range, plus one-click export
- Consent forms, design files, signed agreements stored in S3 with time-bounded signed URLs only — no raw object access
- Per-appointment EarningsLedger with checksum reconciliation — the owner can prove every dollar at any time