Skip to content
All work

Veterinary Telemedicine Platform

Vetzi

Telemedicine platform connecting pet owners with licensed veterinarians through online appointments and video consultations.

Overview

What the product does

A telemedicine marketplace where pet owners book licensed veterinarians for online appointments and attend them over video, with medical records and call artefacts stored per consultation.

Problem

The problem it solves

A marketplace has two sides to satisfy: pet owners need appointments they can book and attend online, and veterinarians need onboarding, verification and reliable payouts from the consultations they deliver.

My role

What I contributed

Full-stack work on the marketplace payment flow, video consultations, appointment lifecycle and the veterinarian onboarding pipeline.

Solution

How the system was designed

A Next.js frontend over a Node and Express API with MongoDB, using Stripe for marketplace payments with automated revenue splitting, Agora for live consultations, and AWS S3 for medical records, veterinarian documents and call transcripts.

Architecture

System architecture

ClientApplicationServicesDataExternalHTTPSRESTDispatchReviewQueriesPayoutsCallsUploadsClientOwners · Vets · AdminNext.jsBooking UIREST APINode · ExpressAppointmentsDraft holds · TTLOnboardingDocs · ApprovalMongoDBPrimary datastoreStripeSplit paymentsAgora RTCVideo · TranscriptsAWS S3Records · Documents

Key features

What it does in practice

Marketplace payment flow

Stripe-based payments with automated revenue splitting between the platform and veterinarians, plus webhook-driven refund processing.

Challenges

The interesting engineering problems

  • Preventing slot hoarding
    Problem
    Appointment slots held during an incomplete booking can lock out other pet owners indefinitely.
    Approach
    Introduced a draft-appointment flow with a 2-hour TTL, so unconfirmed holds expire and the slot returns to the pool.
  • Splitting revenue reliably
    Problem
    Each consultation's payment has to be divided between the platform and the veterinarian, and stay correct when a refund follows.
    Approach
    Automated the revenue split in the Stripe flow and processed refunds from webhooks, so both sides of the split follow the payment's real state.

Technology

The stack behind it

  • Next.jsReact Framework
  • Node.jsBackend Runtime
  • Express.jsHTTP Framework
  • MongoDBDocument Database
  • Prisma ORMType-Safe ORM
  • Socket.ioRealtime Transport
  • Agora RTCRealtime Audio & Video
  • StripePayments
  • AWS S3Object Storage