Sai Tarun
Case study

Nita

A private wellness companion that finds the real patterns in what you log, and explains them without making anything up.

Role
Solo founder and engineer
Timeline
Mar to Oct 2026
Platforms
iOS and Android
Stack
React Native, FastAPI, Supabase, Claude, HealthKit

The problem

Tracking isn't understanding. Most wellness apps show a screen full of numbers and leave you to work out why you're tired. An AI could explain it, but left alone, a language model will happily invent patterns and numbers, which is the last thing anyone wants near their health data.

The idea

Let the math find the pattern. Let the AI only explain it.

  1. Your logs
  2. Stats engine
  3. Passed testsFailed tests
  4. Claude explains
  5. Insight
  • Patterns need 10 paired days before they can show up.
  • Failed correlations are passed in so the AI never implies them.
  • Numbers are copied from the engine, never composed.

The stats engine

All pattern detection lives in one engine written with only the Python standard library. No numpy, no pandas, no trained models. Every number Nita shows can be traced back to a formula.

Sleep and mood
Daily averages, trend slope, and comparison to goals.
Fitness
Linear-regression trends, plateau detection, and heart-rate anomalies by z-score.
Medications
Adherence rate per medication, day-of-week miss patterns, and gaps.
Cycle
Average length, a regularity score, and phase prediction.
Across areas
Pearson correlations like sleep against next-day mood, only after 10 paired days.
MIN_PAIRED_DAYS = 10

lag_dates = sorted(
    d for d in daily_mood
    if (date.fromisoformat(d) - timedelta(days=1)).isoformat() in daily_sleep
)
if len(lag_dates) >= MIN_PAIRED_DAYS:
    prev_sleep = [
        daily_sleep[(date.fromisoformat(d) - timedelta(days=1)).isoformat()]
        for d in lag_dates
    ]
    todays_mood = [daily_mood[d] for d in lag_dates]
    r_lag = _pearson(prev_sleep, todays_mood)
    if abs(r_lag) >= 0.40:
        ...
Excerpt from pattern_engine.py, lightly trimmed.

Privacy by design

Nothing a user writes reaches an AI provider until they say yes, and that rule is enforced in code, not just on a screen.

  • Consent firstA dedicated onboarding step, stored as versioned, append-only records.
  • Enforced on both sidesThe app fails closed, and every AI endpoint returns 403 without consent.
  • Per-user isolationIdentity always comes from the auth token, never from request data.
  • Off cloud backupsHealth data on iOS is excluded from iCloud backup.
  • Apple Health, read-onlyReads 8 data types, only the ones a user approves: steps, heart rate, resting heart rate, active and resting energy, walking and running distance, exercise minutes, and sleep. It never writes.

Getting through review

Apple and Google both pushed hard on third-party AI consent and health data. It took several rounds to get it right.

Early Aug
App Store review rounds begin. Several rejections worked through.
Aug 29
Privacy policy updated with a third-party protection clause.
Sep 1
Approved by Apple.
Mid Sep
Android rebuilt with the same fixes, and two unused permissions removed.
Sep 23
Approved by Google Play, held for a joint release.
Oct 2026
Public launch on iOS and Android.
The lessonA correct consent screen still failed review, because the reviewer's demo account had already consented and never saw it. Now the demo account's consent gets reset before every submission.

What I'd do differently

Build for review from day one

I had a working consent and privacy system and still kept getting rejected, because I was thinking about what I built, not what a reviewer could actually see and verify. The fix that got me approved wasn't new code. It was treating the reviewer's experience as a feature of its own. That shift would have saved me weeks.

Get it in front of people sooner

I redesigned the experience more than once because I was polishing alone and guessing at what mattered. A handful of real users early on would have told me what to cut, and I would have rebuilt a lot less.

Where it stands

Approved by Apple and Google, and launching publicly on iOS and Android in October 2026.