Skip to content
PT
All work
LabIn development · public demo

Agendinha

Online booking for beauty salons, with an AI attendant on WhatsApp.

Role
Engineer, end to end
Period
2026 – Present
“Ateliê”, one of Agendinha's four salon-site templates, for the fictional demo salon Ondina.

Overview

Clients pick a service, a professional and a time slot, and pay by card, PIX or in person, without creating an account. Managers run the day, the calendar and the books. Each salon gets a site of its own; a salon is the base case used to build and validate it.

Clients can also book over WhatsApp, with an AI attendant that books, answers and hands the conversation to a person when it should.

What I built

  1. 01Postgres-first on Supabase, with no backend service: every write goes through a SECURITY DEFINER function, behind row-level security, and a test fails if the anonymous access surface changes.
  2. 02Reserve-first booking: the slot is held before the client is identified, with a TTL, immediate release and a cron sweep, while Realtime shows other people's reservations as they happen.
  3. 03Slots are derived at query time, never pre-generated; money is stored in integer cents; multi-employee staffing is built in.
  4. 04AI attendant on the official WhatsApp Cloud API, built on Claude, with voice notes transcribed by Whisper.
  5. 0513 scripted evals: a simulated client (another LLM) talks to the real attendant against a local database; code checks the bookings and tool calls, and an LLM judge grades the tone.
  6. 06Electronic service invoices (NFS-e) issued from the client's record by a service running in a Cloudflare Container.
  7. 07Every user flow tested end to end with Playwright on desktop, Android and iPhone viewports.

Stack

  • Next.js
  • React 19
  • TypeScript
  • Tailwind CSS
  • Supabase
  • PostgreSQL 17
  • WhatsApp Cloud API
  • Claude
  • Whisper
  • Cloudflare Containers
  • Vitest
  • Playwright

Want the details behind this?