02Pawlyse

A second opinion at 2am, grounded in the pet you actually own.

AI veterinary triage. Symptoms, photos and vet documents feed one retrieval-grounded conversation on a persistent, shareable pet health record — so the answer reasons over this animal’s history, medications and prior conditions, not a generic search result.

Automated tests

453

Across 57 files, with graceful degradation when Redis, email or optional models are absent

API routers

12

Chat, records, memory, documents, invites, reminders

Backend

7.4k

Lines of Python — routers, services, RAG engine

Interface

6.5k

Lines of vanilla JS and CSS — no framework lock-in

Role

Full-stack + AI engineer — RAG engine, API and interface

Year

2026

Stack
PythonFastAPIChromaDBOpenRouterPostgreSQLRedis
Services

AI engineering · Backend · Frontend · Product design

The Pawlyse triage card, escalating a urinary obstruction to an immediate vet visit
The triage card. A VET NOW chip, a plain verdict, then three fixed fields: likely cause, reasoning, and what to do. Read the reasoning closely — “a male cat with a known UTI history” is not in the message the owner typed. It came out of the pet’s stored record, which is the whole point.

The account holder’s name, the animal’s name and the monitoring rail are pixelated in every screenshot on this page. Pawlyse holds real owner and animal records; the clinical reasoning shown is untouched.
01

Why grounding is the product

An owner at 2am does not need a list of possibilities. They need a decision: is this a wait-until-morning or a get-in-the-car. Getting that call right means knowing the animal — its species, breed, age, sex, weight, medications and prior conditions.

Every answer reasons over the pet’s profile, history and documents at the same time — one context layer, not three disconnected features.

That is why the triage card can say “male cat, narrow urethra, known UTI history, classic obstruction signs” and escalate without hedging. The same conversation, on a different animal with a different record, produces a different verdict — and the interface never lets go of the disclaimer that this is triage, not a veterinarian.

02

The three pillars

Pillar 01

AI triage chat

RAG-grounded symptom assessment over text, photos, X-rays and vet documents. Interviews one question at a time.

Escalates instantly on emergencies.
Pillar 02

Health record

Auto-extracted long-term memory — medications, conditions, allergies — plus document storage with OCR, weight tracking and care reminders.

Pillar 03

Multi-owner

Pets shared by email invite: family, sitters and vets reach the same record and the same conversation.

03

Memory the owner can read

The Pawlyse memory panel listing everything extracted about the pet
“What Pawlyse remembers about this pet.” Long-term memory is not a hidden embedding store — it is a plain, scrollable list of extracted conditions the owner can audit and correct. If the model is going to reason from a fact, the owner gets to see that fact first.

Facts are extracted from conversation as it happens and written back to the record, which is why an offhand remark weeks ago (“he ate a lily”) is still available the night it matters. The panel is deliberately unglamorous: a memory system you cannot inspect is a memory system you cannot trust.

04

The screens

05

Engineering notes

How it is built

  • Provider-agnostic models. Vision, triage and image models are swappable by config through OpenRouter, so no single vendor is load-bearing.
  • Retrieval over a curated clinical corpus via ChromaDB vector search, so answers are grounded in veterinary literature rather than model recall.
  • Redis-backed hot paths with a SQL fallback everywhere they are used, so a cache outage degrades the product instead of breaking it.
  • Clean router → service layering in FastAPI, with UUID entities and JWT auth throughout.

Integration surfaces

  • POST /chat — structured AI triage, JSON or multipart with attachments.
  • POST /documents — vet paperwork and imaging, OCR’d on upload and indexed for retrieval.
  • Pets are shared by email invite with explicit owner / viewer roles, so the same record answers to several people without a second copy of it.
  • Alerting goes out by SMTP, with the notification path tested for absence as well as presence.
Next

Building something where a wrong answer actually costs?

Start a project
DEVSTEEM