Inspiration

We kept noticing the same thing about health apps: they're great at showing you numbers but bad at making you care. Meanwhile, everyone we knew had, at some point, obsessively kept a Tamagotchi or POU pet alive. So we asked — what if the thing you were keeping alive was a reflection of you? Pawsitive turns your daily habits into a cat whose wellbeing mirrors your own. Eat well, move, and sleep, and your cat thrives. Neglect them, and the cat gets sick — a gentle nudge to change course before you actually do. Our goal was prevention through awareness, not another dashboard of guilt-inducing charts.

What it does

Pawsitive is a gamified mobile health companion. You track three pillars — nutrition, exercise, and sleep — and a cat mascot visualizes your overall state as healthy, normal, or at risk.

  • An AI recommender reads your recent habits and outputs your health status, the single weakest area, and a plain-language reason — plus an illustrative 10-year disease-risk outlook (probability, likely condition, and a low/medium/high tier).
  • Daily quests are generated from your stats and auto-check themselves from real logged data (e.g. "Walk 5,000 steps").
  • Dr. Whiskers, a guardrailed AI chatbot, gives lifestyle-only advice, never diagnoses, and routes serious symptoms to a real professional.
  • A doctor consultation flow ends in a digital prescription and bill you can order from the nearest pharmacy, tying wellness, telehealth, and e-pharmacy into one loop.

How we built it

The frontend is Expo (React Native) + TypeScript; the backend is Python FastAPI. The recommender is a scikit-learn RandomForest, and the chatbot is a guardrailed LLM behind our API. Local state lives in AsyncStorage.

Because no public dataset maps habits → health status, we generated a synthetic dataset from clinical guidelines and trained on it. Daily energy needs use the Mifflin–St Jeor equation, where (w) is weight (kg), (h) is height (cm), (a) is age, and (s = +5) for males or (-161) for females:

$$ \text{TDEE} = (10w + 6.25h - 5a + s)\times 1.4 $$

Walking calories use the standard MET formula:

$$ \text{kcal/min} = \frac{\text{MET}\times 3.5 \times w}{200} $$

Nutrition is a time-prorated composite so a small breakfast isn't punished and the score decays as the day goes on without eating:

$$ \text{nutrition} = 0.5\,S_{\text{cal}} + 0.3\,S_{\text{protein}} + 0.2\,S_{\text{fiber}} $$

Each (S) is a (0)–(1) adequacy score. The calorie score is

$$ S_{\text{cal}} = 1 - \frac{\max(0,\ |r| - 0.1)}{0.4} $$

where (r) is how far your intake sits from your time-adjusted target — anything within (10\%) scores a perfect (1.0).

A key design principle: status comes from the ML model, but the reason comes from deterministic rules — so every prediction is explainable and defensible.

Challenges we ran into

  • No ground-truth data. We couldn't train on real "healthy/sick" labels, so we encoded guidelines into a synthetic dataset — and had to be honest that the predictions are illustrative, not clinical.
  • Expo Go quirks. expo-notifications was removed from Expo Go and crashed the whole bundle on import; the Pedometer was unreliable on Android; and the keyboard covered the chat input. Each needed a targeted fix (lazy gated imports, a step-estimate fallback, and a full-screen KeyboardAvoidingView).
  • Dirty data. The food database had corrupted placeholder rows (112, 113, 114, ...), so we added a physical-plausibility filter — a macro's energy can't exceed the food's total calories.
  • Bad scoring edge cases. Our first sleep curve scored 12 hours as instantly unhealthy; we replaced it with an asymmetric, medically-grounded mapping where oversleeping is penalized gently and undersleeping steeply.
  • Demoing time-based features. Sleep and inactivity prompts can't wait real hours, so we built demo triggers to fire them on command.

Accomplishments that we're proud of

A fully working end-to-end MVP: a real ML recommender, an explainable "why," a safety-first chatbot, and a complete doctor → prescription → pharmacy journey — all wrapped in a cohesive, genuinely cute cat aesthetic (park scenes, toe-bean bars, yarn-ball stats, cat-bed inputs). Most of all, we kept the health framing honest: no fake clinical numbers, always a disclaimer, always a path to a real professional.

What we learned

The biggest lesson was to match your ML ambition to the data you actually have — and when the data doesn't exist, to be transparent about what's real versus simulated. We also learned how much of "AI product" work is really guardrails and UX: an explainable model and a well-behaved chatbot matter more than raw accuracy. And we got very familiar with the sharp edges of shipping React Native fast.

What's next for Pawsitive

  • Real device sensors (true step and sleep tracking) and OS notifications via a development build.
  • Genuine integrations: telemedicine, e-pharmacy checkout, and a live map.
  • Richer nutrition using a full micronutrient database, and a localized Indonesian food catalog.
  • Personalization that adapts targets and the model to each user over time.

Built With

Share this project:

Updates