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.
- Your logs
- Stats engine
- Passed testsFailed tests
- Claude explains
- 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:
...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.
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.