Vet On Demand
Get a vet on the line before the morning.
A pet telehealth app shipped in 2014 by the four-person software development shop I ran. As Head of Product, I led three workstreams: design across the native iOS app, native Android app, and browser-based clinical portal for the vets; frontend engineering on iOS and the provider portal; and the brand the product launched under.
A founder, a sick dog, four people.
The founders approached the four-person software development shop I ran with a sick dog and a simple question: why couldn't they get a vet on the line at 11pm? No telehealth product existed for pets. We took the brief and built it. Four people shipped native iOS and Android apps, a browser-based clinical portal, real-time video over 3G and 4G, and the matching layer connecting them.
Designed from the exam room.
We started with the vets. Several came on as equity partners distributed across the United States, before any code was written. They provided detailed, practical insight into the day-to-day workflows of veterinarians, enabling us to design a product that works for both customers and the vets themselves: the compliance model for remote veterinary practice, what a vet needs to see and document on a call, and the features they would need to stake their license on. At launch, those same vets were our first providers; the supply side of the marketplace was bootstrapped on day one.

Tap to capture.
During a call, the owner could flip their camera and point it at the animal. The vet could guide them: hold here, press there. One tap captured a still frame from the live feed. A swollen joint, a scratch, something caught in the teeth. The image saved to the patient record. The interaction came directly from our advisors describing how they document during a physical exam.
Native iOS, native Android, browser portal.
Consumer apps stripped onboarding to essentials: pet profile, symptom description, live call. In-call camera control let the owner flip to show the animal. Vet-initiated photo capture saved to the patient record. Push notifications for confirmations and follow-ups.
The provider portal was a browser-based clinical workspace: patient records and full consultation history, photo documentation from in-call captures, note-taking and annotation tools, data import from existing practice management systems, and availability management for the matching system.

Real-time video that holds.
In 2014, 3G was still common and early 4G was inconsistent. A dropped video connection on a paid veterinary consultation breaks trust before the diagnosis starts. The video had to hold.
iOS native in Objective-C. Android native in Java through an outsourced partner. TokBox (OpenTok) for real-time video; WebRTC was still maturing and TokBox was the only viable option for mobile-native at the time. Ruby on Rails with PostgreSQL on the backend, Redis for background jobs and presence detection, Amazon S3 for storage on AWS.
Around the video pipe we built session persistence and reconnection logic so the call survived network drops. Cross-platform routing carried frames from mobile devices through our servers to the vet's browser portal. Round-robin matching sent each request to an available vet, driven by Redis presence detection of who was online.
For both sides of the call.
I designed the logo, the visual system, and every screen on both sides of the marketplace. The brand had to work for a worried pet owner at midnight and for a licensed veterinarian deciding whether to take the call. Same surface, two audiences.
20,000 users. Dozens of lives saved.
20,000 users within months of launch. Dozens of animals whose owners got immediate care that same night. National press at launch in Yahoo Finance, Forbes, and Fierce Pharma.
What stopped us was VCPR.
U.S. veterinary law requires a VCPR (Veterinarian-Client-Patient Relationship) before a vet can deliver medical advice: a preexisting in-person exam of the animal. Our vets were remote and had never physically examined the patients we were routing. The product worked. The regulatory environment didn't.