I Built My Own Practice Software on Top of the One I Pay For
In January my clinic moved from VIA to Shepherd. Nineteen years of records stayed behind in VIA, in a database nobody supports anymore. So I asked Claude to help me build a way to read them. That was supposed to be the whole project. It turned into the screen I run my day from. Here it is in about three minutes.
Why would a vet build their own practice software?
I didn’t set out to. If you’ve ever switched practice software, you know the part nobody warns you about. The new system comes with your clients and your pets, and the history comes across as something you can technically find. Every old note, lab and vaccine is in there somewhere, just not in a way you’d want to read with a client in the room.
Our old records weren’t small. 101,715 notes, 58,529 lab panels, 142,538 prescriptions, going back to 2007. Sitting in a SQL Server database that’s been out of support since 2019.
So the first job was just reading it. A VIA note turned out to be three things stored in three places: the written narrative, a structured physical exam with every body system flagged normal or abnormal, and separate S, O, A and P fields. Grab one of those and call it the note, and you lose the exam that made the old charts easy to scan. Claude and I pulled all three back together. The first version took about half a day, off and on.
Then I kept going, because once the old records sat next to the new ones, it was obvious what else I wanted.
What does it actually do?
One page per pet. The VIA years and the Shepherd years read the same way. Abnormal exam findings show up red, drug names stand out, lab values out of range are flagged, and there’s a trends tab that charts every lab value and weight across the pet’s whole life.
My Day. Every pet on today’s schedule gets a checklist that ticks itself off from the record. Exam written, discharge done, everything billed. Claude compares the notes to the invoice, so if the notes say we pulled two teeth and the invoice doesn’t have them, I find out before the client leaves. That one has caught real money more than once.
A schedule that looks like VIA’s. My team liked the old scheduler, and honestly so did I. The difference is that booking, moving or canceling a visit here goes straight into Shepherd.
Ask. I type or say what I want, like “senior dogs overdue for rabies” or “cats with creatinine over 2 we haven’t seen in six months,” and it searches every record, old and new, and hands me a list I can print.
There’s more in it than that. Reports, estimates, certificates, cage cards, and a backup path that keeps it running inside the building when the internet goes down. But those four are what I touch every day.
What does the AI chart summary catch?
This is the part I’d show another vet first.
The demo follows Juniper, a twelve-year-old Lab with a twelve-year chart. Her liver value, ALP, goes 412 in 2024, 520 the next year, 640 in April, 980 today. Each time, somebody recommended an abdominal ultrasound. Each time, life got in the way. That isn’t a made-up failure. It happens in every clinic, and it isn’t the owner’s fault. Nobody connects four numbers spread over three years when they live on four different screens.
The chart summary reads the whole record and writes what a good colleague would tell me before I walk in. Problems, trends, current meds, and a section I asked for specifically: advice repeated but not yet followed. In the demo it lists all seven times that ultrasound came up.
On its first real run in my clinic, it did the same thing with a real patient. It found an ultrasound referral from months earlier that never happened. That’s why it stays.
It isn’t diagnosing anything. It’s making sure I don’t miss what’s already sitting in the record.
How do you keep it from breaking the real system?
This was the part I took slowest, and it’s what I’d tell anybody building something like this to get right first.
- Two keys. Reading and writing use different ones, and only VetNexus holds the key that can write to Shepherd. Everything else that reads the records can’t change them.
- Every write is logged with who made it and from which computer.
- No blind retries. If a write drops mid-flight, it might have landed anyway. VetNexus tells you to check instead of sending it twice.
- Tested on my own dog. Every write path was tried on Copper’s record before it ever touched a client’s.
- Private notes stay private. The candid notes about owners sit behind a click and never travel with a records request.
Shepherd having an open API is the only reason any of this was possible, and I’m grateful for it.
Can I build something like this for my clinic?
You can build the version that fixes your problem. That’s the honest answer. I didn’t start with a plan for practice software. I started with “I can’t read my old records,” and every feature since started the same way, with something that bugged me on a Tuesday.
If there’s a problem in your clinic that nobody’s software solves, describe it to Claude the way you’d describe it to a person. You’ll be surprised how far that gets you. And if you get stuck, ask me. That’s what this whole site is for.
Questions I get asked
- What is VetNexus?
- It's the software I built for my own clinic on top of Shepherd, our practice management system. It reads nineteen years of records from our old system, VIA, alongside everything new in Shepherd, so a pet's whole life is on one page. Around that it has a daily checklist for every pet on the schedule, an AI chart summary, plain-English search, and a schedule that books straight into Shepherd.
- How long did it take to build?
- The first version took about half a day, off and on, describing what I wanted to Claude. Since then I keep adding a feature here and there when something bugs me during the day. It's never really finished, and that's the point.
- Can I get the records out of my old practice software the same way?
- Probably, if you still have the database. VIA kept everything in a SQL Server database, and a SOAP note is split across three places in it: the narrative, the structured exam, and the S, O, A and P fields. A migration that grabs only one of those loses the rest. Claude worked out the layout with me and wrote the extractor. It now reads 101,715 notes with nothing dropped.
- Does the AI chart summary make the diagnosis?
- No. It reads the whole chart and writes what a good colleague would tell me before I walk in the room: the active problems, the lab trends, the current meds, and a section called advice repeated but not yet followed. On its first real run it found an ultrasound referral from months earlier that never happened. I still make every call.
- Is it safe to let software write into your practice management system?
- Only with guard rails. Reading and writing use two different keys, and only VetNexus holds the one that can write. Every write is logged with who made it. A write that fails is never retried blindly, because it might have landed. And I tested every write on my own dog's record before it touched a client's.
- Can I buy VetNexus?
- No. It runs on a small server in my clinic and it's built around how my clinic works. I'm showing it because the point of this site is that a working vet can build this kind of thing, not because I'm selling it.
- Is the data in the video real?
- No. Every client and pet in the demo is made up, including Juniper. I built a fake clinic with a full history so I could show the real software without showing a single real client.
Tell me what's broken in your clinic.
If this made you think of a problem you'd fix, I want to hear it. Free, no spam, and I read every one.