• AI project
  • SaaS
  • My own product
  • PWA

ClippCut: a scheduling SaaS built from scratch, with an AI assistant

I came up with ClippCut for people who work by appointment and still keep their schedule in a notebook and on WhatsApp. I built the whole product, from the brand to the database, plus an assistant that tells the owner, in Portuguese, how much the business has made.

Role
Founder: product, design and code
Year
2026
Platform
Web and installable app (PWA)
Status
Live
3
Repositories: the app, the website and the WhatsApp gateway, all written by me.
179
Database access tests make sure each business sees only its own data.
6
Segments with their own page: barbershops, salons, clinics, pet shops, tattoo studios, and personal training and yoga.
0
Calculations done by the AI. The assistant understands the question; the number comes from the database.

The product

The schedule lived in a notebook and on WhatsApp

Small barbershops, salons, clinics and studios book appointments by message, in the middle of serving a customer.

The barber stops a haircut to answer “any openings?”, writes down who confirmed in a notebook and only finds out how much they made when closing the month’s books. Whoever cancelled gets crossed out on a page nobody looks at again.

ClippCut gives each business a booking page: a link with services, prices and open slots, made for an Instagram bio. Customers book on their own and get the confirmation on WhatsApp. The owner sees the team’s schedule, products and reports in a dashboard that installs on the phone like an app.

I started with the data model. Every business is a company, including people who work alone, and permissions depend on each person’s role in the company (owner, admin or staff). For each login, the database returns only the rows that belong to that company.

  • Brand and website
  • App design
  • Front-end
  • Database and security
  • AI in the product
  • Booking page

    Services, prices and open slots in one link. Duration protects the schedule: a 1h30 service only shows up where 1h30 fits.

  • Confirmation on WhatsApp

    Every booking goes into a queue in the database. Every two minutes, a dispatcher sends the messages through a gateway of our own, retrying when a send fails.

  • Teams

    One schedule per professional, and the customer chooses who they want to see. Staff see their own numbers; the owner sees everyone’s.

  • Reports with two revenue figures

    Forecast (what is confirmed in the schedule) and realized (what was actually served), side by side, so nobody confuses a promise with cash in hand.

Where AI comes in

An assistant that understands the question and leaves the math to the database

The answer always shows the same number as the reports screen.

In the dashboard, the owner asks in plain Portuguese: “how much did I make last month?” or “how many people came in on the 22nd?”. ClippCut already had those answers. They come from the same database functions that build the reports, with the rules for time zones and for forecast and realized revenue.

That is why the project’s rule was that the AI never calculates. If the model added things up on its own, it would become a third source of truth, able to contradict the number the person has just seen on the screen next to it. A single mismatch would be enough for nobody to trust the feature again.

I ruled out letting the model write SQL: appointment notes are free text written by customers, and any query that forgot a status filter would come back with revenue different from the report.

  1. 1 · AI

    Interpret

    The model receives the question, today’s date in the business’s time zone and a closed catalog of queries. It returns only a JSON: which query and which period.

  2. 2 · Database

    Execute

    An Edge Function turns the period into dates and calls the Postgres function with the login of whoever asked. Access rules apply just as on any other screen.

  3. 3 · AI

    Write

    The model receives the values already formatted in reais and only writes the sentence. Alongside it goes a card with the data and a “See in report” shortcut.

ai-chat · step 1
// “how much did I make last month?”
{
  "ferramenta": "metricas_periodo",
  "periodo": { "tipo": "mes_passado" }
}
Everything the first call can return (the product’s own field names). The rest is code.

Three calls instead of function calling. The free models on OpenRouter have uneven support for tools, and the list changes. Strict JSON, with validation and one repair attempt, works with any text model.

Numbers ready for step 3. Language models get arithmetic wrong. If the model received 4320.00 to format, one day it would write R$ 43,20. It receives “R$ 4.320,00”, already in the Brazilian format, with the instruction to copy the value.

Failing without an error. If the writing step fails because of a timeout or a usage limit, the answer comes from a sentence template written in code, with the same numbers. The feature gets terser, but it keeps answering.

Sent to the model

  • Numbers: revenue, counts, average ticket
  • The service name and the period asked about
  • Dates in YYYY-MM-DD format

Stays in the database

  • Customers’ names and phone numbers
  • Notes written during appointments
  • The API key, which never reaches the browser

Screens

The website and the app in production

ClippCut is made for the Brazilian market, so the screens are in Portuguese.

A demo booking page.
The website on a phone.

How I built it

From the product name to the deploy

Design and code in the same pair of hands, with AI as a pair programmer.

  1. Brand and website

    Name, logo and the marketing website in HTML, SCSS and Vite, with a page for each segment and one for each feature.

  2. The database first

    Supabase with Postgres: per-company access rules (RLS), functions for the reports and 179 tests that run on a disposable Postgres.

  3. The app

    Vue 3 with Pinia and Bootstrap, packaged as a PWA so it installs on the phone without going through an app store.

  4. WhatsApp

    A message queue in the database, dispatched by pg_cron, and a self-hosted instance of the Evolution API.

  5. AI in the product and in the process

    The assistant uses OpenRouter models in an Edge Function. During development, I pair-program with Claude Code, with the project’s rules written in the repository itself.

  • Vue 3
  • Pinia
  • Supabase
  • PostgreSQL
  • Edge Functions (Deno)
  • OpenRouter
  • Evolution API
  • PWA
  • Claude Code
  • Live Website and app in production

    clippcut.com.br for people getting to know the product, app.clippcut.com.br for people using it.

  • R$ 0 To get started

    Free for a single professional, no credit card required.

  • Beta AI assistant

    Answers questions about revenue, appointments and customers, with a question quota per plan.

  • 0→1 My own product

    Idea, brand, design, code and operations, including selling it to barbershops in Piracicaba.

Contact

Got a complex product ahead? Let’s talk.

Tell me about the project’s context and timeline. I reply within 48 hours.

  • Piracicaba, Brazil
  • Reply within 48 h
  • Product, design system and front-end