What I Built
PawGuard — you punch in your dog's breed, age, weight, sex, and it tells you which hereditary conditions that breed actually gets, with real screening recommendations and a timeline from puppy to senior. Built entirely around Google AI/Gemini.
You can also just upload a photo instead of typing anything: Gemini Vision looks at it and guesses the breed, body condition, and rough age, then pre-fills the form for you.
🔗 Live demo: https://pawguard-v45n.onrender.com
💻 Source code: https://github.com/araieta/PawGuard
(The app supports both Italian and English via a toggle in the header — screenshots below are in English.)
Why I Built This
By day I'm a software engineer doing cybersecurity/SOC work with Splunk, and lately I've been sliding over into AI/LLM security. When the weekend theme turned out to be International Dog Day, I didn't want to just ship another "here's a cute breed identifier" demo — I wanted something an actual dog owner would open more than once.
Also, honest disclosure: I don't have a dog. Don't have the space, don't have the budget right now. But a good chunk of my friends do, and this is the kind of thing I'd genuinely send them, not just something I built to check a box for the challenge.
Here's the actual problem I was trying to solve: most first-time owners have zero idea their breed comes with specific, well-documented risks until something already went wrong. Nobody tells a new Basset Hound owner that the breed's whole body shape makes disc disease a real thing to watch for. Nobody tells a Boxer owner they should be thinking about cardiac screening (ARVC) starting pretty young. PawGuard is my attempt at surfacing that stuff before it turns into an emergency vet bill.
How It Works
- Profile step — name, breed, age, weight, sex (or just drop in a photo and let Gemini fill most of it in)
- Risk engine — the backend checks the breed against a knowledge base I curated by hand (prevalence, severity, typical age of onset for each condition), then bumps the risk score based on stuff specific to this dog — like weight sitting outside the ideal range for that breed/age
-
Report generation — Gemini takes the structured risk output and turns it into an actual explanation per condition, plus a screening timeline (puppy → adult → senior)
- PDF export — a proper document, formatted like something a vet clinic would actually print, not a screenshot of the webpage stuffed into a PDF
Tech Stack & Google AI Usage
Google AI (Gemini) does the heavy lifting here:
- Vision: breed guess, body condition, apparent age, straight from a photo
- Structured generation: every report comes back as validated JSON, not free text — the risk engine's output gets turned into breed-specific explanations, not generic filler
- Ollama Cloud is in there too, as a vision fallback for when I blew through Gemini's free tier mid-testing (which happened more than once, ask me how I know) Backend: Python (FastAPI), a breed condition knowledge base I built from actual public veterinary references — not something the model hallucinated — deployed on Render.
Frontend: Vue 3 straight from a CDN, no build step, because it's a weekend project and I didn't need the overhead. Custom visual identity, and the PDF export is styled completely separately from the web UI — it reads like an actual document, not a printout of a webpage.
A Bug I'm Actually Kind of Proud Of
While stress-testing with weird inputs, I entered a Dogue de Bordeaux puppy at 7.8kg / 6 months old — real breed average at that age is closer to 35kg. The report just said the weight "deviated from the ideal range," no direction given, which is basically useless and could read as a false alarm to a real user. Fixed it by adding a plausibility check in the risk engine and forcing the generated text to say which direction (underweight vs. overweight), because clinically those two things mean completely different stuff for the same condition.
What's Next
If I keep poking at this after the weekend: more breeds in the knowledge base (right now it covers the ~30-40 most common ones), a side-by-side breed comparison for people deciding between two, maybe a lightweight way to log actual vet visits against the recommended timeline.
Built solo this weekend for the DEV Weekend Challenge: Dog Days Edition. Ask me anything about the risk engine or the Gemini structured-output setup in the comments.






Top comments (2)
Wow nice
Thank you!! I’d be grateful if you could share this article with your friends. I’m really keen to improve my web app to help those with four-legged friends.