Home › Features
Everything a veterinary clinic runs on, in one record
Front desk, consulting room, pharmacy, laboratory, accounts and the owner’s phone — reading and writing the same file. Here is what that means in practice.
Front desk and the queue
| Tokens | A walk-in is registered and a token printed in one action. The queue screen shows who is next, what they came for, and how long each person has been waiting — the question a front desk is asked all morning and the one a paper register cannot answer. |
|---|---|
| Appointments | Booked slots sit alongside walk-ins rather than in a separate world, because most practices here run both at once. |
| Client and patient register | Owners are matched on their WhatsApp number, stored in one canonical shape, so a number typed as it appears on a business card still finds the existing file instead of creating a second one. |
| Visit purposes | The list of reasons an animal is brought in belongs to the clinic, so the front desk picks from words the practice actually uses. |
Clinical records
| A form the clinic defines | Every field on the consultation, client, patient and staff forms is set by the practice: required, optional, or hidden. A field a clinic never fills in stops taking up space on the screen. |
|---|---|
| Append-only history | A medical record cannot be deleted. A mistake is voided and amended, and the original stays readable. This is deliberate: a record that can quietly change is not evidence of anything. |
| Vitals, weight and vaccination history | Weight over time, temperature and pulse on the visit, and a vaccination schedule that knows what is due and when. |
| Confidential records | Some notes should not be open to every login. The clinic decides which staff may record and read them, and the platform decides whether the clinic has the capability at all. |
| Dictation on long fields | Complaint, diagnosis, treatment and notes can be dictated. Names, phone numbers, doses and prices cannot — a misheard digit in a dose is worse than typing it. |
Prescriptions, dispensing and inventory
| Clinic-owned medicine catalogue | Built on a maintained master list, with the clinic’s own layer over it: its brands, its pack sizes, its prices. |
|---|---|
| Prescriptions | Dose, route and duration, printed on A4 or sent to the owner as a PDF link on WhatsApp. |
| Stock that moves with the work | Dispensing writes a stock movement. Balances are derived from those movements, and movements cannot be edited or deleted, so a number on screen can always be traced to the day it changed. |
| Batches and expiry | Batch numbers and expiry dates on receipt, with visibility of what is close to expiring before it is on a shelf behind something else. |
Laboratory
| Ordering and results | Tests ordered from the consultation, results entered against reference ranges, and a report the owner receives without a second phone call. |
|---|---|
| A shared test catalogue | Sample types and reference ranges are maintained centrally, so a result stays readable against the range it was judged by — including years later. |
Billing and money
| Estimates and invoices | An estimate the owner agrees to, then an invoice that picks up everything from the visit. Part payments, credit notes and outstanding balances all sit on the client’s file. |
|---|---|
| Your tax line, your wording | The rate, the tax’s name and the label in front of the registration number are configured by the clinic. Every invoice snapshots all three, so changing the rate never restates one already issued. |
| Numbers that cannot be argued with | Invoice numbering is gapless and enforced by the database. Issued invoices are voided and replaced, never edited, and a number is never reused. |
| Roll and sheet | 58 mm and 80 mm receipt rolls for the counter, A4 for prescriptions and corporate invoices. These are two different layouts and are treated as two different layouts. |
Talking to owners
| Templates in the clinic’s words | Messages are built from templates with variables — the pet’s name, the date due, the amount. The practice writes them, not us. |
|---|---|
| Worklists | Who is due a vaccination this week, who has a report waiting, who has not come back. A list to work through rather than a memory to rely on. |
| WhatsApp delivery | Messages open in WhatsApp with the text prepared and the document attached as a link. We do not use QR-scanning bulk senders, because those get a clinic’s number banned. |
| Pet ID cards with a QR code | A printed wallet card. An owner scans it and reads the animal’s record — no account, no password, nothing to install. |
| Client portal | Owners who want a login get one, and see visits, vaccinations and documents for their own animals and nothing else. |
Staff, branches and control
| Roles the clinic writes | Permissions are per role and per person. A practice hiring on a Tuesday morning should not have to wait for us. |
|---|---|
| Two independent gates | What the clinic is entitled to is decided by the platform. Who inside the clinic may use it is decided by the clinic. A practice without the tokens module has no tokens screen, even for its administrator. |
| Audit trail | Who did what, and when. Sensitive actions revoke active sessions so a withdrawn permission stops working immediately rather than at the next login. |
| Multi-branch | Each branch keeps its own patients, stock and takings under one account. |
| Isolation enforced by the database | Every record carries the clinic it belongs to, and PostgreSQL row-level security refuses another practice’s rows even when a query asks for them. An automated check proves it, and runs against every deployment. |
Go deeper
The five areas most clinics ask about first
Medical recordsConsultations, vitals, historyBilling & invoicingInvoices, payments, taxInventory & pharmacyStock, batches, expiryOwner communicationWhatsApp reminders, worklistsOwner portal & pet cardsPortal, QR pet ID cards
58 & 80 mmReceipt roll widths supported on the counter, plus A4 for prescriptions and corporate invoices
3 apps, 1 loginA platform console, the clinic app and an owner portal — which one loads is decided by the session
0 rows leakTenant isolation is enforced by PostgreSQL row-level security, and an automated check proves it on every deployment
620 testsThe API suite exercises those policies over real HTTP before anything ships
See it against your own clinic
The fastest way to judge software is to watch someone put your own patients into it. Send a message and we will do exactly that.