Veterinary care marketplaceRescue story
A stalled MVP became an AI referral platform.
TriaPet arrived as a hand-off MVP whose own README admitted every phase was incomplete. We rebuilt it into the veterinary referral platform we now operate: AI urgency triage, real-time clinic routing, portals for pet owners and clinics and a mobile app on one API, a license-verified clinician network, and measurement honest enough to tell us what to fix next.
- Engagement
- Venture we operate
- Company
- TriaPet
- Sector
- Veterinary care marketplace
- Story
- Rescue
- On the web
- triapet.com (opens in a new tab)
The number
The one figure we’ll stand behind.
Open the receipt for where it came from, how it was counted and when we last checked it. How we count
281,949
veterinary board records across 30 states and DC behind the clinician verification gate
A doctor claims a license against the state board roll, then passes an SMS possession check.
receipt
SOURCE · TriaPet license index, as served by the live counter on triapet.com
METHOD · Row count of the verification index across 31 veterinary licensing boards (30 states plus DC), read from the live counter on 2026-09-28. It counts every credential the boards publish (technicians, clinic premises, permits and lapsed licenses included), not only active veterinarians.
VERIFIED · 2026-09
CLASS · platform account
✓ every number on this site opens its receipt
CLAIM · license-records
How we count01 · Where they started
A hand-off MVP whose README admitted it wasn’t done
The idea was right: a pet owner describes a symptom, learns how urgent it is, and gets routed to a clinic that can see them. What we inherited was a partly built Next.js and MySQL app with a single GPT prompt doing triage, around fifty symptom flows in JSON, and a Figma file. The previous developer’s README was candid: all phases were incomplete, and two had no development at all.
- Next.js 15 + MySQL, with one prompt standing in for a triage engine
- Symptom decision flows in JSON: kept, and used to inform the rebuild
- README, verbatim: “All phases are incomplete.”
02 · The wall
A triage demo is one prompt. A triage business is everything around it.
Production meant urgency scoring we could stand behind, clinics notified the moment a referral exists, clinicians whose licenses are real, billing per referral, permissions for every kind of staff member, production errors caught before users report them, and a funnel instrumented well enough to show where owners give up. The hand-off was a useful spec. It was not a foundation.
03 · What we built
What we built.
Named systems, described by what they do, one part at a time.
Part 1: Triage that scores urgency, then routes in real time
Owners walk through a guided wizard. Gemini scores urgency RED, YELLOW or GREEN, with a dedicated toxicology path for “my pet ate something.” The platform then matches nearby clinics and routes the referral live over WebSockets: broadcast to the area, or DIRECT to one clinic, with a status the owner can watch change.
- RED / YELLOW / GREEN urgency scoring with a toxicology sub-flow
- Referral broadcast and DIRECT modes over Socket.IO
- Clinic lifecycle modeled in the schema: lead, contracting, setup, training, pilot, live, at-risk
Part 2: Owner and clinic portals, one API, one mobile app
A server-rendered pet-owner portal, a clinic dashboard and an internal admin, all React + Vite over a single Express 5 + Prisma 7 + Postgres API, plus an Expo app for iOS and Android. Permissions are real and documented. A per-referral invoice lifecycle driven by Stripe webhooks is built into the schema, and an ops scanner pulls production errors from Cloud Logging, Error Reporting and Logz.io, classifies them against a catalog of known signatures, and writes a report someone can act on.
- Seven admin roles and six clinic roles, documented at the repo root
- Invoice lifecycle DRAFT → SENT → PAID / OVERDUE, modeled in the schema for Stripe webhooks
- Production errors classified before a user has to report them
Part 3: A verified clinician network, and a voice agent with a boundary
The newest layer, now in pre-launch, is a doctor-to-doctor transfer network. A vet claims their license against the full state board roll and passes an SMS possession check. Transfers go out in-app to members and by SMS, with no-account reply links, to everyone else, so SMS is the growth loop rather than a fallback. When a text goes unanswered by a case’s deadline, Tria, a Retell.ai voice agent, calls the clinic’s front desk within calling hours, gives a versioned spoken disclosure, asks exactly one question, and posts the answer to the sender’s live status board.
- A tested disclosure boundary: the agent cannot speak owner names, prices or clinical detail
- Simulated calls graded against a written rubric with hard-fail gates for impersonation, invented detail and identity leaks
- Every SMS, email and call attempt leaves an auditable ledger row
Part 4: Measurement that tells us what to fix next
A written Mixpanel tracking plan runs across three apps. Conversions such as referral accepted and booking confirmed are recorded by the API, so they count even when no browser is open, and identity is stitched from the first anonymous visit through guest triage to signup. GTM and GA4 carry UTM attribution, and consent-aware Klaviyo lifecycle email runs alongside Twilio SMS. The first 30-day report was humbling and useful: it showed exactly where owners dropped off, and those two breaks became the roadmap.
- Server-authoritative conversions, identity stitched across the whole journey
- GTM + GA4 with UTM attribution captured automatically
- Consent-aware lifecycle email from booking through invoice and re-engagement
04 · Up close
The work, up close.
Real screens and real product photography, uncropped. Select any image to enlarge it.



05 · One more receipt
One more figure worth checking.
Same rule as the headline number: it opens to its source, its method and the month we checked it.
~25
consent-aware lifecycle email events on one product, alongside Twilio SMS
Booking confirmed or rescheduled, invoice sent, paid or overdue, re-engagement, review requests.
receipt
SOURCE · TriaPet platform repository (Klaviyo event catalog)
METHOD · Count of distinct lifecycle events wired to Klaviyo with consent checks.
VERIFIED · 2026-09
CLASS · repository
✓ every number on this site opens its receipt
CLAIM · lifecycle-events
How we countVenture we operate
We run our companies on the same rails we sell you.
TriaPet is a venture we operate, so there is no testimonial on this page. The proof is that we depend on it: when the engineering is wrong, we are the first to feel it.
