Pet healthcare platform
VetLink
VetLink brings several AI-assisted pet health tools into one mobile-friendly web app. Owners can upload or capture a photo of a skin condition, get a predicted condition with a severity level, and ask follow-up questions that an LLM answers in plain language. The platform also includes limping detection, body-condition-based health assessment, appointments and pharmacy inventory tools.
- Role
- Full-stack and machine learning development
- Status
- Working web app with live demo.
- Links
- Visit live site

The problem
Dog owners often cannot tell whether a skin problem needs urgent attention, and a vet visit is not always immediately available. A raw model prediction alone is not enough either — owners need to understand what the result means and what to do next.
Approach
I trained an image classification model for dog skin conditions using DINOv2 and a Vision Transformer, served it from a Python inference service, and paired every result with an LLM-powered explanation module. The interface frames results as guidance with a clear medical disclaimer, not as a diagnosis.
What I built
- Skin condition detection from an uploaded image or the device camera
- Predicted condition with severity level and confidence
- AI health assistant that explains the condition, severity and basic care
- Limping detection and body-condition-based health assessment
- Pet profiles, appointment scheduling and pharmacy inventory tools
- Downloadable analysis report
Architecture
Next.js App Router frontend in TypeScript. A separate Python inference service runs the DINOv2 + ViT model. An LLM generates the plain-language explanations. PostgreSQL stores pets, health records and analytics, and REST APIs connect the web app to the AI services.
Key decisions
Separate Python service for inference
Keeping the model in its own Python service lets the ML stack evolve independently of the web app and keeps heavy inference work off the Next.js server.
Pretrained vision backbone
Starting from DINOv2 features rather than training from scratch is a practical choice when labelled veterinary images are limited.
Explanations and disclaimers alongside predictions
Each result is paired with guided follow-up questions and a visible disclaimer that the analysis does not replace a veterinarian, so owners get context rather than a bare label.
Screens

