Pawmo
A second opinion on pet health that states its own uncertainty.


- Project
- Our own product
- Our role
- Product · Mobile development · AI integration
- Duration
- 3 months
01 / Behind the product
A real need. A considered solution.
Challenge
AI pet-health apps answer confidently from a photograph and a sentence, and the veterinary profession is pushing back for good reason. An owner can trust that confident tone and delay a vet visit. A one-shot symptom check is also a commodity; what makes the product valuable is the record that compounds.
Approach
The analysis contract has no field for a percentage. Causes carry a three-step likelihood band and a rationale, every result states what limited its confidence, and a result is allowed to be about the photograph rather than the pet. The baseline engine learns each animal’s normal range from a ten-second daily check-in and flags sustained drift; repeat checks are grouped into one episode.
The model is called only from an Edge Function, the app runs without a backend, and when analysis is unavailable it says so instead of inventing a result. On the code side three lint rules forbid emoji icons, raw colours and hardcoded text at build time.
Result
Data export is free and permanent, pets are unlimited on the free tier, and the emergency guide works offline and is never gated; all of that appears verbatim on the paywall. Weight tracking, a vaccine calendar, faecal scoring and a vet-visit summary are in the product. English and Turkish; lint, typecheck and tests run in CI. Development continues.
02 / Inside the product
The experience, on screen.
Open a screen to explore the details.02 images
03 / Scope & details
The details make the experience.
- 01
An explicit confidence range on every answer
- 02
A "see a vet now" threshold
- 03
A health record that learns each pet's own normal
Technology
INSIDE THE PRODUCT
The engineering behind the interface.
Systems we built and concrete problems we addressed in this project.
No percentage, a band instead
In the src/types/analysis.ts contract likelihood is a three-step band rather than a percentage; every cause carries a rationale and every result states what limited its confidence. The system prompt lives in the analyze-symptoms Edge Function, with its version stored in the result.
The baseline engine
src/services/baseline/ learns each animal’s normal range from a ten-second daily check-in and flags sustained drift, the software counterpart of what competitors sell as a hardware collar. episode/ groups repeat checks into one problem and lifestage/ changes what growing / adult / senior lead with.
"Nothing hardcoded", enforced by lint
The local/no-emoji, local/no-raw-color and local/no-hardcoded-text rules are left to the build rather than review; process.env is readable only inside src/config/env.ts, and a test fails if the translation catalogues drift apart in keys or placeholders.
Your idea could be next.
What could we build for you?
From a first release to a growing platform. Let’s plan the design, development and launch together.
From Türkiye to the US, UK, Australia and everywhere in between.