/6 min read
why luna needs to exist: adaptive math, memory, and the problem with pink calendar apps
by Akshat Kushwaha
most cycle tracking apps on your phone are insulting.
they fall into two categories, and both of them are built on deeply patronizing assumptions about women's bodies.
the first category is the pastel calendar. it asks for the first day of your last period, slaps a pink floral theme across the screen, assumes every human body runs on a mechanical 28-day conveyor belt with ovulation on day 14, and calls it a day. if your cycle happens to be 34 days, or irregular, or shifted by stress, travel, or exams, the app just gasps and marks you as "late" with an alarmist red badge.
the second category is the clinical surveillance machine. it asks you to fill out twenty dropdown menus every morning—cervical mucus consistency, basal body temperature to two decimal places, mood ratings from one to ten, sleep duration in minutes. it treats you like an unruly lab experiment. you have to do all the cognitive labor of categorizing your own body before the app will give you a generic linear regression.
neither of these feels like software built for a real person.
i built Luna because the way technology has historically approached female biology isn't just bad engineering—it is fundamentally misogynistic.
the systemic misogyny of the 28-day myth#
for decades, medical science treated the female endocrine system as an inconvenient complication. clinical trials routinely excluded women because hormonal fluctuations were deemed "noisy data" that ruined neat experimental baselines. the entire medical baseline was constructed around a male default, with female biology retrofitted into an idealized, sterile 28-day clock.
this is structural gaslighting codified as software.
in real-world clinical datasets (like the ACOG population studies), fewer than 15% of women have a 28-day cycle. cycle length naturally varies across individuals, across seasons, and across life phases. yet when software forces a static 28-day average, it sends a toxic implicit message: if your body does not behave like a predictable Swiss watch, you are broken.
legacy apps monetize this anxiety. they flag natural biological variance as "abnormal," induce unnecessary panic, and then mask their mathematical incompetence behind infantilizing pastel gradients and cutesy floral badges.
when an app uses a naive arithmetic average, two critical statistical failures occur:
- cold starts are useless. with only one or two logged cycles, sample variance is massive. an unweighted average over two erratic points makes wildly confident predictions that are mathematically indefensible.
- outliers corrupt history. if someone gets sick, travels across four time zones, or has a 50-day cycle due to stress, a naive arithmetic mean gets dragged out for the next six months.
the mathematical solution: adaptive smoothing + empirical priors#
Luna replaces rigid patriarchal averages with adaptive exponential smoothing blended dynamically with empirical population priors:
for cold starts (), predictions blend the user's few data points with empirical population priors derived from large-scale ACOG distributions:
as more cycles are logged, the weight shifts dynamically and respectfully to the user's personal baseline.
to stop an anomalous 52-day cycle from corrupting the engine, Luna applies soft outlier clamping. values past two and a half standard deviations from the moving median are gently pulled back toward the bound before entering the smoothing state. and when six or more cycles exist, we use jackknife resampling to generate honest confidence intervals ( to ) instead of pretending software knows the exact minute a period will arrive.
| Feature | Legacy Pink Calendars | Clinical Surveillance Apps | Luna Companion |
|---|---|---|---|
| Philosophical Stance | Infantilizing / Aesthetic | Surveillance / Extraction | Feminist / Autonomous / Rigorous |
| Prediction Engine | Static 28-day clock | Unweighted 3-mo mean | Adaptive Exp Smoothing + ACOG Priors |
| Variance Handling | Pathologizes as "late" | Manual form exclusion | Automatic soft clamping |
| Data Ingestion | Rigid date picker | 20+ dropdown forms | Natural NLP conversational logging |
| Cross-Session Memory | None (stateless) | Relational rows only | Supermemory v4 semantic graph |
| UI Output | Static pink calendar | Dense clinical charts | Dynamic OpenUI generative cards |
conversational logging without dropdown fatigue#
nobody wants to open an app while dealing with cramps, nausea, or a busy workday and navigate through four nested screens to log that their period started a day early and they have a headache.
you should be able to type or say:
"my period started yesterday afternoon, heavy flow and bad lower back pain."
that's it.
Luna parses natural language inputs through the Vercel AI SDK directly into typed cycle events. but the critical piece isn't just one-shot entity extraction; it's persistent contextual memory.
structured UI over chat walls#
one of the biggest mistakes in modern "AI wrapper" apps is assuming that everything should be a raw markdown chat bubble.
a wall of LLM text is an exhausting way to view a calendar, a cycle phase breakdown, or symptom correlations. Luna uses dynamic OpenUI structured components. when the AI reasons about cycle predictions, it emits structured UI schemas that render directly as interactive prediction cards, cycle wheel visualizations, and calendar timeline widgets inside the chat stream.
the tech stack is straightforward and fast:
- Next.js 15 (App Router) for streaming server components.
- Neon PostgreSQL + Drizzle ORM with 8 normalized tables for cycle logs, symptoms, predictions, and user preferences.
- Tailwind CSS v4 + Framer Motion for fluid, calm micro-interactions.
- Auth.js v5 with JWT sessions.
why this matters#
technology for women's health shouldn't be patronizing. it shouldn't treat cycle tracking as either a nursery game or a hospital triage form.
women's bodies are not defective machines that need to be scolded by a pink calendar. they are dynamic, intelligent biological systems deserving of mathematical rigor, radical privacy, and empathetic software that actually listens.
Luna is an attempt to build software that is mathematically rigorous on the inside, completely frictionless on the outside, and respectful of the person using it.
drafted with an LLM, then reviewed and edited by me before it went up.
0 responses
leave something useful, or usefully sharp.