One barn call, end to end
Everything V.E.T.S. does shows up inside a single barn call.
This page follows one, from the first observation to the correction you make afterwards, naming each part of the system as it engages. Every other page in this section is a closer look at one moment in it.
The record you make before you make a decision
You are three stalls into a morning round. A mare is off her feed, her temperature is up, and the barn manager mentions she has been coughing since Sunday. You open her record on your phone.
What you find is not one long free-text log. Patient history in V.E.T.S. is typed by clinical service, and each type has its own record shape.
71 procedures in the astp_VETS_PatientHistory_ family, one group per kind of clinical work.
Vaccinations, Labs, Anesthesia, Surgical Procedures, Dental Procedures, Diagnostic Imaging, Chiropractic, Acupuncture, Homeopathy, Massage, Transport, Certificates, Identification. Nearly every one has a _Mobile twin.
The reason to build it this way is not tidiness. A vaccination and a surgery do not want the same fields, but they do want the same animal, the same timeline and the same bill. Typing the record by service is what lets both of those be true at once.
That there is a _Mobile procedure for nearly every clinical type is the clearest signal of where this software expected to be used. Not at a desk afterwards. In the aisle, while the mare is still in front of you.
How the animal record and its tree are shaped →
Asking, and what decides who answers
You want a second read on the differential, so you ask in the minion panel on that screen.
You do not have to type it. Your hands are on the mare, so you tap the microphone once, put the phone back in your pocket and ask out loud. Drive Mode listens, sends the question when you stop speaking, reads the answer back and starts listening again, so the exchange runs without touching the screen. It is a spoken conversation with a minion, not dictation into the record. How Drive Mode works, and who is answering →
The question does not go to “the AI.” It goes to a named minion. Florence covers medical care, patient history and prescriptions, and is mapped across 7 of the 78 page contexts in the system.
Which minion receives it is decided by word-boundary pattern matching against atbl_AI_MinionRoutingPattern. There are no embeddings in that step and no semantic similarity. It is matching against phrases somebody wrote down, which is worth knowing because it means routing is inspectable and editable rather than emergent.
The threshold that matters most is the one where nothing happens: below 0.70, astp_AI_Minion_EvaluateHandoff declines to reroute and you stay exactly where you are. If the conversation turns to billing halfway through, a score of 0.90 or above hands off silently, and anything below that offers you the choice instead of taking it.
How routing and prompt assembly actually work →
What the answer is made of
Florence does not answer from memory. astp_AI_GetMinionRAGContext retrieves the top 10 documents scoring above a 0.60 similarity floor, and astp_AI_BuildPrompt assembles them into the prompt that goes out.
The model on the other end is whatever LLM_Default currently names, which today is gemini-2.5-flash. That string is read out of stbl_System_CodesGlobal by astp_AI_GetModelConfig at call time rather than compiled into the application, so the answer to “what model is this running?” is a query anyone with access can run.
What is in the index, exactly. The 2,333 indexed documents are documentation: help text, knowledge-base articles, and generated descriptions of stored procedures and tables. No animal records are embedded. No client details, no patient history, no tenant data of any kind.
The mare’s own history still reaches the screen. It gets there the way it always did, through the application’s ordinary paths and the permission checks on them, not through retrieval. Those are two different mechanisms and they are worth keeping apart: one reads documentation about the system, the other reads your records.
So what comes back is grounded in how V.E.T.S. works and in the knowledge base people have built inside it, combined with the record already open in front of you. It is not grounded in another practice’s cases, because another practice’s cases are not in there.
How tenant isolation and secured views work →
You correct it, and the correction goes somewhere
The dosage guidance you get back does not account for the mare being in foal. You know better, so you fix the record.
Two scheduled jobs decide what happens to that correction, and they do different work on different clocks.
ajob_AI_GCPVectors runs hourly, on the hour, all day. It carries new and changed content into the vector index, so your correction becomes retrievable within the hour rather than tomorrow.
ajob_AI_Intelligence_Pipeline_Daily runs once, at 02:00, across 29 steps in 8 phases. That is the heavier curation: summaries, keywords, relationships, confidence recalibration.
There is one more detail worth pulling out, because it is the whole argument in miniature. atbl_AI_DocumentIndex keeps AutoSuggestedScore and ValidatedBy in separate columns. What a model proposed and what a person checked are different facts, and the schema is built so the system can always tell which is which.
That is the difference between a record and a judgment, and it has a name.
The four words behind that distinction →
Where to go next
That is one call in one mixed practice. The same procedures carry a breeding operation, a farrier’s round and a cattle business running four locations, and the differences between them are more interesting than the similarities.
Four operations running the same procedures →