Rizzatto Soluçõesproduct & AIFrom idea to product.
All cases

Falecomigo · UnimedASSISTED SCHEDULING

From conversation
to operation.

Doctors' calendars aren't connected. Today, booking an appointment means someone calling the practice, writing down free slots and relaying them — request by request.

The system turns that work into an operation. A WhatsApp agent registers the request; the team checks with the doctor in a queue with an owner and a deadline; the patient picks by number, on the same channel. Nothing gets lost in between.

Product
WhatsApp agent + platform
Surfaces
Patient's WhatsApp and the team's panel
Case status
In curation
Service queue with ticket TKT-2026-00001 in NewTicket detail in Assigned, with an owner and the Start Service buttonTicket detail in In ProgressSlots form with the doctor suggested by specialtyForm with the professional set and the date fieldCalendar open over the form, September 2026Date chosen and the slot gridTwo slots selected and the Add 2 slots buttonOptions saved on the ticket and the Preview and Send buttonPreview dialog of the message to the patientTicket in Sent, with the Confirm Manually buttonConfirm Appointment dialog with the 09/09/2026 08:30 slotTicket in ConfirmedInternal calendar with the appointment on September 9

The request arrives from WhatsApp and lands in New.

Journey actually executed in the application, in an isolated demo environment, and photographed state by state. The cursor and the zoom are editorial.

Case in curation. Cooperative, authorship and delivery status await confirmation. The screens are captures of the original application running in an isolated demo environment, with a database created from scratch and fictitious identities. This page uses no patient data, does not connect to the client platform and publishes no result metrics.

THE REAL PROBLEM

Doctors' calendars
don't talk to each other.

Practices don't expose availability in any connected way. To book, reschedule or switch specialty, someone in operations calls the doctor, asks for free slots, writes them down and relays them to whoever asked.

Every request becomes a chain of calls and callbacks. The work isn't clinical: it's operational, repetitive, and it doesn't scale with volume.

The system doesn't solve this by integrating calendars nobody exposes. It organizes the work around that limitation: it turns the request into a record with an owner and a deadline, preserves the preferences, and returns the answer through the same channel it came from.

  1. New
  2. Assigned
  3. In progress
  4. Call to the doctor
  5. Sent
  6. Confirmed

The fourth step happens outside the system, by phone. It's precisely the one the product exists to shorten — and the only one no integration solves today.

THE APPLICATION, RUNNING

The screens of the system.

Captures of the original application in an isolated demo environment. Not mockups, not redesigns.

The path of a request: arriving, being taken, receiving slots and becoming an appointment.

Kanban with the product's four columns: New, In Progress, Sent and Confirmed. Each card carries an identifier, specialty and deadline.

Service queue

One place to follow what came in and what hasn't been answered yet.

Kanban with the product's four columns: New, In Progress, Sent and Confirmed. Each card carries an identifier, specialty and deadline.

1 / 3Service queue

Demo environment created from scratch: local seeded database, no SMTP, no webhook and no connection to production. Patients, professionals and users were replaced with demonstrative identities before capture. Indicators do not represent project volume or results. 7 screens in total.

7
THE CONVERSATION · FROM REQUEST TO CHOICE

From request to choice,
without leaving WhatsApp.

The agent identifies the person, triages by plan, understands specialty and preference, and registers the request. When the team comes back with slots, the choice is a number. Alongside, what happens on the platform at every step.

THE PATIENT'S CONVERSATION

One question at a time.

Unimed · SchedulingWhatsApp · patient's channel
  1. Hello! Welcome 😊 This channel is exclusively for booking appointments. 1️⃣ Book an appointment 2️⃣ Reschedule or cancel 3️⃣ Other requests

  2. 1

  3. Hi! I'm the Unimed assistant 😊 What should I call you?

  4. Demo Person

  5. Nice to meet you, Demo! To help you better, I need your ID number (CPF). You can type it here, digits only 😊

  6. •••.•••.•••-••

  7. Found your record, Demo! ✅ Plan: Demo Plan Which specialty are you looking for?

    busca_cliente called before the reply

  8. cardiology

  9. Perfect! I'll register your request and our team will check available slots with the cardiologists 😊 When would you like the appointment?

  10. as soon as possible, in the morning

  11. I'll ask for the *earliest available* slot, in the *morning*, right?

  12. yes

  13. Done, Demo! Your request is registered! 📋 Our team will contact the doctors to check the slots and get back to you shortly ⏱️

    Criarticket called before the reply

  14. Unimed team

    Hi, Demo! We found Cardiology slots 💚 1️⃣ 09/09 at 08:30 — Dr. Demonstração A 2️⃣ 09/09 at 09:00 — Dr. Demonstração A 👉 Reply with the number of the slot you want.

  15. 1

  16. Perfect, Demo! ✅ I registered your choice for 09/09 at 08:30 with Dr. Demonstração A. ⚠️ If you need to cancel, let us know 1 day in advance 😊

    ConfirmarAgendamento called before the reply

Menu, name, ID. The record is validated before any promise.

Illustrative reconstruction based on the agent's instructions. Not a recording, and no proof of message delivery. Name, ID, plan, protocol, professional and slots are fictitious, created for this presentation.

Read the conversation and its limits
  1. The agent opens with a three-option menu. When the person chooses to book, it asks for the name and then the ID, one piece of data per message — an explicit rule in the prompt: never ask for specialty, city and date together. Only after the lookup tool returns the record does it mention the plan. The ID appears masked in this reconstruction.

  2. For cardiology, the prompt says not to list doctors: the request goes to all cardiologists and the team checks. When the patient answers "as soon as possible", the agent treats it as a valid date — insisting on a specific day is forbidden — and confirms once. With the "yes", the data is closed: the agent calls the ticket-creation tool and only then says it registered.

  3. The request becomes a ticket on the platform. The team calls the cardiologists, writes down the free slots and records the options in the system. It's the manual step that motivated the product: doctors' calendars aren't connected. The presentation clock compresses hours into seconds.

  4. The team sends the numbered options through the same channel. The patient replies with the number — and the prompt forbids reinterpreting it as a menu or a new request. The agent calls the confirmation with the chosen position, waits for the real return and only then confirms, with doctor, day and time spelled out. On the platform, the ticket becomes Confirmed and enters the calendar.

THE PRODUCT DECISION

Written not to tire
nor to mislead.

What makes the agent trustworthy isn't the list of tools: it's the set of rules and prohibitions it carries. Five of them structure every conversation.

  • CONVERSATION PACE

    One question at a time.

    Name, then ID, then specialty, then date. Three lines per message at most. The prompt assumes the person won't read everything — and writes for that.

  • IN CARDIOLOGY

    The patient doesn't pick a doctor.

    The request goes to every cardiologist; listing names only confuses. The team calls, checks and returns what's free. It's the rule born directly from the calendar problem.

  • DATE

    Urgency is an answer, not the lack of one.

    "As soon as possible" counts as a date. Repeating the question with example days after that counts as ignoring the patient — and is forbidden.

  • CONFIRMATION

    Confirmed once, the data is closed.

    After the "yes", asking for the same data in other words is a violation. One confirmation per piece of information, then move on. "Sure", "ok" and 👍 count as yes.

  • EXECUTION

    Executes before speaking.

    Announcing "let me check" and ending the turn is forbidden. The order is: call the tool, read the real return, only then reply. Without real success, it never says "registered".

The rules above are the instructions written for the agent. They are documented intent, not execution tested in this presentation.

HOW THE PARTS CONNECT

One channel. One phone.
One record.

  1. 01

    The conversation

    The patient asks on WhatsApp. The agent identifies, triages by plan, collects specialty and preference, and registers. Later, it receives the choice by number.

  2. 02

    The team and the phone

    The request becomes a ticket with an owner and a deadline. The team calls the practices, writes down free slots and records the options. It's the bottleneck the product organizes instead of pretending to integrate.

  3. 03

    The platform

    Queue, owner, state, deadline, slots, history and calendar. It is the record of the service, whichever surface is used.

The agent runs in an orchestration layer outside the application and talks to the platform through an API. The language model isn't named here: it isn't in the material provided.

WHO ORGANIZES THE WORK

Behind every request,
an organized team.

The link between professional and owner is what makes the queue work: it defines who receives each request and which doctors a secretary can offer. Administration covers users, teams, professional records and those associations.

CAPTURE PENDING

The linking action, recorded in sequence, is still missing.

The records screen was captured in the demo environment and is in the gallery. What's still missing is the action itself — linking and seeing the consequence — which works better as motion than as a still image. No link will be changed in production data to record a presentation.

  • The Doctors screen is already in the gallery above
  • Missing: select the secretary and link
  • Missing: the first link's Primary state
  • Missing: reopen and verify persistence
  • Administration, supervision and secretary have distinct navigation
  • The confirmation appears on the internal calendar, by date and professional
WHAT WAS BUILT

Structured intake.
Assisted operation.

01

A request that arrives ready for work.

The conversation becomes a record with identifier, specialty, preferences, contact, owner and deadline. The request stops depending on whoever remembered it.

02

A queue that shows whose move is next.

States, assignment and history make visible where each request stopped — including when it is waiting for a doctor to call back.

03

An answer that returns through the same channel.

The team records the options on the platform; the patient receives the numbered list on WhatsApp and picks with a number. The agent only confirms after the real return of the tool.

Stack found in the project

  • Next.jsReactTypeScript
    Application and operations panel
  • PrismaPostgreSQL
    Tickets, states, slots and history
  • AI and automation layer
    Patient agent, orchestrated outside the application

Technologies identified by reading the code and the material provided. Authorship, period and delivery status will be published only after confirmation; no impact metric is shown because none was verified.