A veterinary clinic network where the vet speaks and the clinical record writes itself
We built the operating system of a multi-branch veterinary clinic network: cases, patients, clinical records dictated by voice and structured by AI, doctor commissions generated on their own when a paid case closes, and USD/VES financial consolidation at the BCV rate — all isolated per branch.
The process before / after
What we saw sitting in the exam room and at the front desk
✕Before — manual and scattered
- —Handwritten clinical notes on loose sheets that get misplaced between visits.
- —Each doctor’s commission calculated by hand in Excel at month end.
- —Each branch with its own till and its own notebook, never consolidated.
- —Payments in USD and VES with no common rate: balancing the till was a fight.
- —The pet owner calling to find out what was done at the last visit.
✓After — one single system with AI
- →The vet dictates; the AI transcribes and assembles the structured clinical record.
- →When a paid case closes, the doctor’s commission is generated on its own.
- →Cases, patients, and finances per branch, isolated with RLS on branch_id.
- →BCV rate scraped daily: everything balances in USD and VES without recalculating.
- →Client portal: the owner signs in with their PIN and sees the record and vaccinations.
The core of the system
The vet speaks. The clinical record structures itself.
The visit ends, the vet dictates a voice note and the AI does the rest: it transcribes, understands the clinical language, and fills in the fields of the medical record. No typing, no loose paper notes.
A voice note dictated in natural speech, with clinical jargon and spoken numbers.
Voice → faithful text. The draft is saved on the case.
Fields extracted by AI, ready to review, sign, and export to PDF.
The other key automation
Closing a paid case triggers the doctor’s commission
Commission payouts used to be a month-end spreadsheet full of errors and complaints. Today it is a cause → effect chain that runs on its own at the exact moment of payment.
- Trigger
The case is closed
The front desk marks the case (visit, surgery, or emergency) as closed.
- Condition
The payment is recorded
Payment in USD or VES reconciled against the branch till and the BCV rate of the day.
- Effect 01
The commission generates itself
The attending doctor’s percentage is calculated and recorded automatically, with no spreadsheet.
- Effect 02
It enters the branch analytics
It lands in the branch ledger and in the commission report per doctor.
0 spreadsheets between the payment and the doctor’s commission.
A network, not a standalone clinic
Each branch isolated by branch_id, all consolidated at the top
Row-Level Security on branch_id in Postgres: each branch team sees only its own, but leadership sees the consolidated analytics of the whole network, branch by branch.
North branch
branch_id- Cases open today
- visits + 1 surgery
- Commissions today
- auto-generated on close
- USD / VES till
- reconciled at the BCV rate
Central branch
branch_id- Cases open today
- visits + emergencies
- Commissions today
- per doctor, automatic
- USD / VES till
- movements of the day
East branch
branch_id- Cases open today
- visits + vaccinations
- Commissions today
- closed and paid
- USD / VES till
- expenses and bank
Leadership view: branch-by-branch analytics compared — cases, USD/VES revenue, commissions per doctor, and expenses — with no branch able to read another branch’s data.
What we built
The complete operating system of the network
Two role-based portals
An Admin portal for staff (vets, front desk, supervisors, accountants) and a Client portal for the pet owner.
Three access methods
Email + password for staff, a 4-digit PIN for quick use at the counter, and a magic link after the PIN for the client.
Cases and procedures
Visits, surgeries, and emergencies as cases with statuses, an associated patient, an attending doctor, and payment.
Patients with a record and photos
A complete patient record with history, clinical photos, and vaccinations on a calendar.
Clinical records by voice
Voice note → AI transcription → clinical analysis → structured fields → signable PDF.
Doctors with a commission %
Each doctor with their percentage; the commission is generated on its own when a paid case closes.
USD / VES payments
Dual charging at the BCV rate scraped daily, plus expenses, bank movements, and reconciliation.
Analytics per branch
Reports on cases, revenue, commissions, and expenses per branch, consolidated for leadership.
Development scope
What had to be built underneath
RLS per branch
Row-Level Security policies in Postgres on branch_id: each branch sees only its own; leadership sees everything consolidated.
Daily scrape of the BCV rate
An automatic job that captures the official rate every day so every USD/VES charge balances with no manual recalculation.
Auto-generated commissions
A business trigger: when a paid case closes, the doctor’s commission is calculated and recorded from their percentage.
AI transcription + clinical analysis
A voice → text → clinical understanding pipeline that extracts the reason for the visit, the examination, the plan, and the diagnostic impression.
Outcomes
What changed in the operation
- ✓The clinical record stopped living on loose sheets: it is complete, structured, and exportable to PDF.
- ✓Closing commissions went from a month-end spreadsheet fight to something already calculated at the moment of payment.
- ✓For the first time leadership sees the whole network compared branch by branch, without asking for separate reconciliations.
- ✓The team spends its time on patients, not on transcribing, recalculating, or balancing tills.
- ✓The pet owner checks their record and vaccinations from their portal, without calling the front desk.
YOUR CLINIC OR NETWORK IS THE NEXT CASE
Does your team still transcribe records and reconcile commissions by hand?
That's exactly what we rebuild into a system. Schedule a 30-minute assessment and we'll show you how we'd turn it into an AI-powered flow, multi-branch, with USD/VES payments reconciled.