Inspiration

We noticed how many people go through real distress from health issues they don't even realize they have. Between busy schedules and inconsistent routines, it's easy to lose touch with your own body — and by the time something is noticed, it can already be further along than it needed to be. That's the gap Amica is built to close.

What it does

  • Tracks cycle, sleep, mood, energy, symptoms across 7 dedicated pages
  • Rule-based pattern engine flags symptom clusters for 9 conditions (PMDD, PCOS, endometriosis, adenomyosis, lupus, fibromyalgia, rheumatoid arthritis, hypothyroidism, iron deficiency)
  • A trained ML model (RandomForest) scores daily risk from wearable + check-in data
  • A warm, non-diagnostic chat buddy explains flags in plain language and gives one concrete next step
  • Generates a doctor-ready "prep sheet" before appointments

How we built it

  • Frontend: HTML/CSS/JS — Cycle Ring visualization, low-friction 15-second check-in flow
  • Backend: Node.js + Express, serving the app and proxying chat
  • ML: Python + scikit-learn RandomForestClassifier, real 60/20/20 train/val/test split — Test ROC-AUC 0.870, accuracy 0.939
  • Chat: Google Gemini API, with a system prompt explicitly guarded against reinforcing negative self-talk and hard-coded to never diagnose, with an emergency-language override

Challenges we ran into

Since this was our first project like this, we ran into a lot of "it works on my machine" moments — Mac vs. Windows differences broke things unexpectedly, and syncing up took real troubleshooting. API keys were trickier to manage than expected, design took several passes to feel distinctive rather than generic, and with limited resources, every issue took longer to resolve than we'd have liked.

Accomplishments that we're proud of

One thing we're genuinely proud of is that our ML model isn't just for show — it's a real RandomForestClassifier trained with a genuine 60/20/20 train/validation/test split, not a number we made up. On our test set, it hit a 0.870 ROC-AUC and 93.9% accuracy, with mood, energy, symptom count, and sleep as the strongest predictors — which lines up with what we'd expect medically. We also built our training script so it can plug into real wearable data (Kaggle's FitBit dataset) instead of only synthetic data, layering cycle, mood, and symptom patterns on top since that health-specific data doesn't exist publicly. Beyond the model, we're proud we didn't just build one AI system — we combined an explainable rule-based engine (so every flag traces back to real logged days, not a black box), the trained model for a deeper risk signal, and a conversational layer with hard-coded safety guardrails so it never diagnoses and always defers to a real doctor.

What we learned

We learned that cross-platform development requires actual understanding, not copy-pasting — Mac/Windows differences forced us to debug properly instead of guessing. We learned that a trustworthy ML model needs a real train/val/test split, not just a number that sounds good. And working in a health-adjacent space taught us to be upfront about what our app can and can't do — flagging patterns responsibly matters more than sounding impressive.

What's next for Amica

  • Real wearable integration (Fitbit/Apple Health) with consent flows
  • Clinical validation of thresholds with an OB-GYN advisor
  • Persistent, encrypted storage and real authentication

Built With

Share this project:

Updates

Submission history