Inspiration
We were inspired by the sheer lack of research on women’s menstrual and reproductive health. After a random late night discussion, the three of us women, came to the conclusion that we knew close to nothing about our periods. Part of it was shame, then confusion on why we were never taught how exactly our bodies work. We decided to take matters into our own hands and not only learn about our bodies, but bring awareness to others.
What it does
Ovi tracks your menstrual cycle while also predicting your follicular, luteal, and ovulatory phases. It takes months worth of data and creates a detailed analysis highlighting symptoms and flagging potential health risks to connect early with healthcare providers.
Track: The home calendar shows logged and predicted periods, and it can color each day by cycle phase (menstrual, follicular, ovulation, luteal). Our egg mascot gives phase-specific tips and jokes. The daily log records flow, mood, symptoms, and notes. The History page charts period and cycle lengths over time.
Understand: The Insights page runs three kinds of analysis on the user’s own logs:
- Pattern flags: rule-based checks for irregular cycles, long gaps, heavy and painful periods, and cramps outside the period.
- PCOS and endometriosis pattern checks: each shows a similarity level and lists exactly what raised or lowered it.
- Plain-language summary: Gemini turns those findings into a short, readable summary.
Learn: An Info page explains PCOS, endometriosis, and menopause and perimenopause in plain language.
Share: One tap generates a clean PDF report of the user’s raw data to bring to a clinician. It covers period and cycle lengths, symptom frequency, flow by day, and self-reported habits, and it deliberately leaves out our analysis.
Ovi never diagnoses. It only flags early patterns that can be worth discussing with a doctor.
How we built it
Frontend: Expo and React Native, with Expo Router for navigation. The PDF report is built as HTML and converted with expo-print, then shared through the native share sheet.
Backend: Python FastAPI with SQLite. The backend stores daily logs and computes trends, predicted periods, and cycle phases. Consecutive bleeding days are grouped into periods, and the user’s average cycle and period lengths drive the predictions. Ovulation is estimated about 14 days before the next period, and overlapping phases are resolved by priority so each day gets one label.
Challenges we ran into
- Not having an extensive endometriosis dataset: Switching to published odds ratios kept the model traceable, but the study used doctor-recorded diagnoses, not self-logged app entries. We chose our detection thresholds ourselves, so we're upfront about that in the app.
- Responsible AI in a health app: We spent real time on guardrails: wording that suggests instead of asserting, a prompt that never diagnoses, and a fallback that keeps the app working without the AI.
- Building as a mostly beginner team: Expo changes quickly between versions, and our first layouts broke on different screen sizes. We fixed that by computing sizes from the screen width.
- Making the data fit: The PCOS dataset's "Cycle length" column actually records how many days the period lasted, not the gap between periods. We caught this and remapped it, so the model doesn't learn from a mislabeled feature. The clinic's PCOS rate was also about 1 in 3 patients, much higher than the real population. A raw model score would overstate risk, so we show similarity levels like "lower" or "higher" similarity, never percentages.
Accomplishments that we're proud of
- We got a cross-validated AUC of 0.89 for the PCOS check using only data a period tracker can realistically collect, and we kept it explainable. Every result shows what raised or lowered it.
- We were honest about the limits of our models. We chose similarity levels over fake-precise percentages, and the app flags patterns without diagnosing.
- We built a full working stack in one hackathon: logging, predictions, cycle phases, two pattern checks, an AI summary, and a clinician-ready PDF.
- We made period health feel approachable. The egg mascot and the friendly design were deliberate choices to counter the shame that inspired this project.
What we learned
On the technical side, we learned that a model is only as trustworthy as its data. The mislabeled column and the clinic's inflated prevalence both would have quietly distorted our results if we hadn't checked. We also learned that explainability is a design choice you have to make early. Choosing logistic regression and odds ratios meant we could show users why a result appeared, not just what it was. On the product side, we learned how much of this is a communication problem. In a health app, wording carries as much weight as accuracy. We also learned how little we knew about our own bodies when we started, which is the gap Ovi exists to close.
What's next for Ovi
- Cover more conditions: Extend the pattern checks to perimenopause, fibroids, and adenomyosis.
- Notifications: Add reminders for predicted periods and for logging, so the data stays consistent.
- Richer reports: Add trends over time and export options for clinicians.
- Validate with real data and clinicians: Test with real users and ask clinicians to review the pattern checks and thresholds, since we've only run on synthetic data so far.
Built With
- claude
- figma
- geminiapi
- javascript
- procreate
- python
- react
- typescript
Log in or sign up for Devpost to join the conversation.