A real medical aesthetics case study: 1,540 clinical follow-ups generated in 56 days, with human review before contacting any patient. Draft-first applied to the relationship with those who trust the clinic.
An aesthetic treatment does not end on the day it is applied. Botox calls for a check-up two weeks later. Microneedling responds at ten days. A radiofrequency cycle works better if the clinic reminds the patient that the booster session has a window. On paper, everyone knows this. In the daily operation of the clinic, forgetting wins. The patient leaves happy, the schedule moves on, and the next follow-up call never happens.
This article describes how Nova House, a Mexican medical aesthetics clinic, stopped losing that follow-up without falling into the opposite trap, which is spam dressed up as care. The solution is not magic. It is a system built on Odoo, with clear rules and a human being who approves each message before it goes out. At the time of writing, the system has generated 1,540 follow-ups over a span of 56 days, with half of them in the same-day window and a clinical review before any message is sent.
The problem. What gets lost between sessions
An aesthetics clinic lives on a long clinical relationship. The patient does not buy a single unit; they buy a series of decisions about their skin, body, or wellbeing, spread over time. The commercial consequence is simple: if the clinic does not accompany that time, the patient ends that relationship with whoever does.
The reasons why follow-up fails are the same across every clinic we have seen:
- Nobody remembers at the right moment. The booster session has no operational reminder; it depends on someone entering it by hand.
- Mass channels sound like spam. The generic "don't forget your treatment" email burns bridges as much as not writing at all.
- The log lives in the doctor's head. When the team grows, that memory does not transfer.
- The decision to contact is clinical, not commercial. Not every patient deserves the same message on the same day. That is something a professional knows, not a cron job.
The system that Nova House ran with Transgenia starts by accepting those four facts, not denying them.
The thesis of the case. Draft-first in the clinical relationship
The same hierarchy we apply internally to run AI agents translates here without modification, adapted to the clinic's vocabulary:
The system proposes. The doctor approves. The log records. The clinic learns.
A custom Odoo module generates follow-up events whenever a treatment falls within its corresponding window. Each event starts in the pending review state; nothing is sent until a member of the clinical team explicitly says yes. The rule is the same one our AI agents must follow before writing to Odoo, or that a content agent must follow before publishing an article. In medical aesthetics, the same protocol protects what matters most: patient trust.
The architecture of the system, told without jargon
The system has three components, all built inside Odoo, with no parallel platforms.
1. Rules by treatment
Each treatment that requires follow-up has a dedicated rule. At the time of writing there are fifteen active rules, one per clinically relevant treatment: Botox, EMSCULP, Radiesse, Halo, BBL, Votiva, Morpheus, NCTF, Powershape, Hydrafacial, NovaCeroCed, Casmara, Microneedling, Sculptra, and Emsella. The rule is the unit of clinical knowledge in the system: it does not live in anyone's head, it lives in an Odoo record that can be edited and audited.
2. Contact windows
Each event belongs to a specific time window. At Nova House the three windows are clear:
- Ten days before the suggested booster date.
- Five days before that same date.
- The same day as the original patient interaction.
The distribution observed across the 1,540 events generated is as follows:
| Window | Events | Share |
|---|---|---|
| Ten days before | 378 | 24.5 % |
| Five days before | 378 | 24.5 % |
| Same day as the interaction | 784 | 50.9 % |
| Total | 1,540 | 100 % |
The same-day window representing half is not a configuration error. It is a reading of the business: most events are generated at the time of the treatment, and the system then projects them forward.
3. Event states
Each event has a lifecycle state. Over the 56 days observed, the distribution is as follows:
| State | Events | Share | Reading |
|---|---|---|---|
| Pending review | 938 | 60.9 % | System proposes, human has not reviewed |
| Under review with clinical team | 289 | 18.8 % | Human took it, has not decided yet |
| Approved for contact | 0 | 0 % | Transient state; skips directly to sending |
| Email sent | 58 | 3.8 % | Actually contacted |
| Cancelled | 248 | 16.1 % | Explicit clinical discard |
| Needs attention | 7 | 0.5 % | Flagged technical incident |
| Total | 1,540 | 100 % |
What these numbers say honestly is this: the system proposes far more than it sends. That is the discipline. The automation is not the decision-maker; the clinical team is. The 16 % cancellation rate is good news, not bad: those are explicit human decisions of "this patient does not need this message right now." Without the system, that decision would not have existed at all, because the follow-up would never have reached the table.
The complete flow, step by step
A flowchart replaces a thousand paragraphs.
flowchart LR
A[Sale / consultation<br/>in Odoo] -->|Product has rule| B[Rules engine<br/>15 treatments]
B -->|Window 10d / 5d / same day| C[Event generated<br/>x_treatment_followup_event]
C -->|Initial state| D{Pending review}
D -->|Clinical team takes it| E[Under review]
E -->|Proceed| F[Email sent<br/>to patient]
E -->|Do not proceed| G[Cancelled<br/>with reason]
E -->|Technical failure| H[Needs attention]
F -->|Patient log| I[History in Odoo]
G --> I
H --> I
I -->|Lessons| B
classDef propone fill:#1e1b4b,stroke:#818cf8,stroke-width:1px,color:#e2e8f0;
classDef humano fill:#052e16,stroke:#34d399,stroke-width:1px,color:#e2e8f0;
classDef registra fill:#3d1a00,stroke:#fbbf24,stroke-width:1px,color:#e2e8f0;
class A,B,C,D propone
class E,F,G,H humano
class I registra
Diagram: purple boxes are what the system proposes; green boxes are what the human decides; the amber box is what the clinic records. No event jumps from purple to green without a human decision.
The observable operational benefits
Nothing that follows involves revenue figures or rounded ROI numbers. These are verifiable mechanisms that exist because the system exists.
Systematic coverage. The fifteen treatments with the highest clinical weight each have a dedicated rule. Before the system, follow-up coverage depended on the team's memory. Now there is a list, it is editable, and it can be audited.
A funnel with human decision-making. The clinical team sees, in a single list, all proposed follow-ups ordered by suggested date. The decision to contact is explicit: approve, cancel, or leave in review. The conversation with the patient never fires on its own.
Traceability per patient. Each event is linked to the original sale, the treatment applied, the suggested date, the person responsible for follow-up, the email sent if there was one, and the delivery status in Odoo. When the patient returns, the history is in a single view, not spread across three folders.
Zero cold campaigns. The distinction is key. This system does not send promotions. It sends personalized clinical follow-up to the right person at the right moment in their cycle. The "zero fabrication" discipline we apply to our internal agent team translates here as "zero message without a patient file behind it."
An auditable log. The full record is accessible from Odoo by any authorized person. If the clinic ever wants to review why a certain patient was not contacted, the answer is in a record, not in a lost WhatsApp conversation.
A learning curve that actually accumulates. Each cancellation has a reason. Each send has a date. After three months the clinical team can read patterns that previously lived only in intuition: which treatments generate the most false positives, which window works best by treatment, at which point in the cycle a certain patient profile tends to continue or drop off.
What other clinics can take from this
Nova House's experience is transferable. If your clinic, pharmacy, or outpatient facility is thinking about a similar system, here are six concrete steps:
- Write the list of treatments that require clinically relevant follow-up. Not the commercial list. The clinical one. It is shorter than it seems; at Nova House it is fifteen.
- Set the contact windows per treatment. Do not adopt a single global window. Ten, five, and zero days are three distinct cadences serving three distinct decisions.
- Model the lifecycle states before writing any code. Pending, under review, approved, sent, cancelled, flagged. That vocabulary is half the system.
- Place the human gate at the center. Nothing goes to the patient without someone on the clinical team approving it. The discipline is not optional; it is the system.
- Keep the log in the same place where the sale lives. At Nova House that is Odoo. It could be another ERP, but not a separate spreadsheet. Traceability breaks at the technology handoff.
- Measure cancellations as much as sends. A good follow-up system does not maximize sends. It maximizes explicit clinical decisions.
Closing. From intuitive care to operated care
In an aesthetics clinic, "operational care" is a real concept. It is the right message to the right person at the right moment. Before a system like this, that care depended on the mood of the team on a Monday morning. After the system, it still depends on the team, but with a list waiting for them each day, with dates already calculated, with the clinical window already suggested, with the human gate intact.
The clinic does not hand the relationship over to software. The software gives back to the clinic the time that was going into remembering who needed to be contacted and why. The patient receives genuine follow-up, not disguised promotion. And the clinic accumulates, session after session, a log that can be read tomorrow.
If your clinic is thinking about building something similar, the conversation starts at [email protected]. We bring the system and the protocol. You bring the clinical practice.
Note on accuracy and privacy
The figures published in this article (1,540 events, 56 days, distribution by state and by window, fifteen active rules) were read directly from Nova House's Odoo instance at the time of writing, July 8, 2026. No figure was rounded or estimated. No patient name, email, address, or personal data was read or cited; only aggregates. This article is published with the commercial consent of Nova House to name the clinic.
Verifiable case references:
- Client: Nova House, RFC
GDO1702205GA, websitehttps://nova-house.mx. - Custom Odoo model:
x_treatment_followup_event, withx_treatment_followup_ruleas the treatment catalogue. - Date of the first event observed in the system: 2026-05-08.
- Date of the last event observed in the system at time of writing: 2026-07-03.