Building a Free, Supportive Menstrual Health Companion — Hackcache
Build a private, easy menstrual health companion that helps women and girls track their cycles, understand their bodies and know when to see a doctor.
- Track: Social Impact
Problem Statement 5: Building a Free, Supportive Menstrual Health Companion
Track: Social Impact
Domain: Menstrual Health, Health Education, Women’s Wellness
The Challenge
Women and girls often struggle to understand their menstrual cycles, track irregular periods, and distinguish common cycle variations from symptoms that may require medical attention. Access to reliable menstrual health education can be limited, particularly for those who cannot afford paid applications or feel uncomfortable discussing these concerns.
A delayed period, painful cramps, acne, mood changes, or irregular cycles can cause confusion and anxiety. Conditions such as PCOS (Polycystic Ovary Syndrome), commonly referred to as PCOD in India, can be especially difficult to understand without reliable guidance. While some symptoms may be part of normal cycle variations, persistent or concerning changes should not be ignored.
Your challenge is to build a free, accessible, and privacy-focused menstrual health companion that helps women and girls track their cycles, understand their bodies, learn about menstrual health conditions, and make informed decisions without unnecessary fear or misinformation.
What Could You Build?
Your solution could include the following features:
1. Period and Cycle Tracking
A calendar to log period start and end dates, flow intensity, cramps, and other symptoms.
Cycle history, average cycle length, and visual summaries of past periods.
Predictions for upcoming periods, clearly indicating when estimates may be uncertain.
Support for irregular cycles rather than assuming everyone follows the same pattern.
2. Ovulation and Fertility Tracking
Estimated ovulation dates and fertile windows based on logged cycle data.
Educational information about ovulation and changes throughout the menstrual cycle.
Clear explanations of prediction limitations; estimates must not be presented as guaranteed or used as contraception.
3. Daily Health Insights
Personalised daily information about the current cycle phase and changes users may experience.
Insights based on logged symptoms, cycle history, sleep, energy, mood, and general well-being.
Visual trends that help users recognise recurring patterns over time.
4. Symptom and Mood Tracking
Log symptoms such as cramps, headaches, acne, bloating, fatigue, mood changes, sleep disturbances, and changes in flow.
Allow users to customise which symptoms they track.
Present simple charts and summaries to help users understand how symptoms change across cycles.
5. PCOS/PCOD and Menstrual Health Education
Explain common menstrual health conditions, their symptoms, and available treatment approaches in simple language.
Help users understand possible reasons for delayed or irregular periods without jumping to conclusions.
Provide reliable information about when symptoms may warrant consultation with a qualified healthcare professional.
Make educational content accessible to users with different levels of health literacy.
6. Supportive AI Health Assistant
Answer general menstrual health questions in clear, reassuring language.
Explain logged cycle information and help users navigate educational resources.
Respond responsibly to questions about delayed periods, cramps, acne, and irregular cycles.
Avoid diagnosing conditions, making unsupported claims, or creating unnecessary panic.
7. Smart Reminders and Personalisation
Optional reminders for expected periods, symptom logging, medication schedules, or other user-selected health routines.
Personalised content based on cycle stage, user interests, and chosen health goals.
Let users control notifications and disable reminders whenever they wish.
8. Pregnancy and Life-Stage Support
An optional pregnancy-tracking mode with week-by-week educational information and milestone tracking.
Relevant health education for different reproductive life stages, where appropriate.
Clear separation between cycle estimates and confirmed pregnancy information.
9. Privacy and Safe Community
Protect sensitive health information with appropriate security and data controls.
Explore anonymous or account-free tracking so users can access essential features without unnecessarily sharing their identity.
Allow users to control, export, or delete their data where supported.
Optionally provide a moderated space for women to discuss menstrual health, ask questions, and share experiences safely.
10. Free and Accessible by Design
Keep essential tracking, educational resources, and health insights free.
Support simple navigation, readable interfaces, accessibility needs, and regional languages relevant to Indian users.
Design for first-time users and people with limited digital literacy.
These are suggested directions, not mandatory features. Teams may focus on a smaller set of features or propose a different approach to solve the core problem.
Expected Outcome
Build a working prototype of a free menstrual health companion that combines useful cycle-tracking tools, personalised insights, accessible health education, and responsible guidance.
The solution should help users better understand their menstrual health, recognise patterns, reduce unnecessary anxiety, and know when professional medical advice may be appropriate.
Teams do not need to build every feature or reproduce an existing commercial application. A focused, well-executed solution that addresses a genuine user need is encouraged. Simulated data may be used, and external integrations are not mandatory.
Important: The application must not diagnose medical conditions, guarantee period or ovulation predictions, present itself as a substitute for professional healthcare, or offer false reassurance. Health information should be evidence-based, uncertainty should be communicated clearly, and sensitive user data must be handled responsibly.
Evaluation Criteria
Solutions will be evaluated on:
User Experience: Ease of navigation, clarity, and overall usefulness.
Cycle Tracking and Insights: Quality of tracking, visualisation, predictions, and personalisation.
Health Education: Accuracy, accessibility, and clarity of menstrual health information.
Responsible Guidance: Appropriate handling of symptoms, irregular periods, and health-related questions.
Privacy and Accessibility: Protection of sensitive information and inclusivity.
Technical Execution: Functionality, reliability, and quality of the working prototype.
Real-World Impact: Potential to improve menstrual health awareness and help users make informed decisions.
Build it with AI
- Build 1 · The whole prototype: Build a working web app prototype for a hackathon. Build the whole thing, not a plan: every screen below should work when I open it. OUR CHOICES (change these, or leave them as they are) - App name: Saheli - Main user: Ananya, 17, a Class 12 student in Lucknow whose periods are irregular. She shares a phone with her family, prefers Hindi, and is too shy to ask anyone. - Part we go deepest on: understanding irregular periods and knowing when to see a doctor THE PROBLEM Many women and girls in India can't tell an ordinary change in their cycle from one that needs a doctor, find PCOS/PCOD confusing, and either can't pay for tracking apps or don't trust them with something this private. The app is a private, easy menstrual health companion. It tracks periods and symptoms, makes careful predictions, explains what's happening in plain words, and says calmly and clearly when it's worth seeing a doctor. It is free to use, needs no account, and keeps everything on the phone. SAFETY RULES (this is not optional) - The app never diagnoses anything, never says a prediction is certain, never presents itself as a replacement for a doctor, and never tells someone th…
- Build 2 · Finish what's missing: Go through the app you built and check it against this list. For each item, say whether it is done, partly done or missing. Then build everything that is partly done or missing, one item at a time, and keep everything that already works exactly as it is. - Safety: no diagnosis, every prediction a range labelled "estimate", the "can't be used to prevent pregnancy" line, every health fact with its source, calm doctor cards, "Get medical help now" with 112 and 108, Tele-MANAS 14416 for very low mood or self-harm - Privacy: no account and no server, nothing loaded from other sites, a PIN lock with real encryption and a forgotten-PIN warning, discreet mode, export, import, delete everything - Local dates only; demo data or start fresh - Predictions: median of the last 6 cycles, no prediction under 3 cycles, a range at least 2 days either side, the irregular label, the ovulation estimate hidden for irregular cycles, and the "did you forget to log?" check - Today, Log a day (including the heavy-flow questions), Calendar with predicted days drawn differently - Insights: cycle history chart, average and range, regularity, patterns shown only after 3 cycles…
- Add-on · Real AI answers in Ask: Replace the keyword-matching Ask screen with real AI answers, using [your AI provider, e.g. Gemini, OpenAI or Claude]. - Never put the API key in the frontend. Add a small server endpoint (a serverless function at /api/ask if we deploy to Vercel or Netlify, otherwise a tiny Express server) that reads the key from an environment variable, listed in a .env.example file. The server keeps nothing: no message logs and no database. Say so on the Ask screen. - By default, send only the question. A switch "Use my cycle summary to answer" (off by default) adds a short summary: average cycle length, how regular it is, the last period's date, and the symptoms from the last cycle. Never send the private line or anything that identifies the person. - Give the AI a system prompt: - It answers general menstrual health questions for women and girls in India, in the user's language, in short, warm, plain sentences, and suitably for their age if they are under 18. - It uses the lessons in src/content (send the relevant ones) and says which lesson an answer comes from. - It never diagnoses, never says a condition is what the user has, never recommends a specific medi…
- Add-on · A safe community space: Add a small, moderated community space where people can ask questions and share experiences anonymously. - Backend: [Supabase / Firebase / Node with a database]. This is the only part of the app that sends anything to a server, and it says so before anyone joins. - Joining needs no real name, email or phone number. Each person gets a random name ("Saheli 4821") and a key stored on their device. Their cycle data is never linked to it. - Every post and reply is held for a moderator to approve before anyone else sees it. Hide phone numbers, emails, links and addresses automatically, before a moderator sees them. - A Report button on every post, and a moderator screen to approve, edit or remove posts and to mark an answer as checked by a doctor. - No direct messages at all. Under-18 users have a separate space from adults. - Pinned rules: be kind; no medicine or dose advice; see a doctor for warning signs. - "Delete all my posts" in one tap. - Tell me how to run it, and seed it with 10 sample posts.
- Add-on · Another language: Add [Tamil] to the app as a third language. - Translate every string in src/i18n, every lesson, the FAQ, the doctor cards and the pregnancy weeks. Use simple, respectful everyday words, and give a medical term in brackets only alongside a plain explanation. - Include the everyday words people use for periods in that language, so Ask and search understand them. - Show each language's name in its own script in the language picker, and make sure longer words don't break any layout at 360px wide. - Make Listen use a voice for that language if the browser has one, and hide it for that language if it doesn't.
- Submit · README, link and demo: Get this ready to submit to the hackathon. 1. Write a README.md covering: - the problem in two lines, and who the app is for - what it does, one line per screen - how predictions are worked out, and how uncertainty is shown - the "When to see a doctor" rules and where each comes from - how the app avoids diagnosing and avoids false reassurance - how privacy works: no account, nothing leaves the phone, the PIN lock and encryption, discreet mode, export and delete - the sources for the health content - how to run it, what is simulated, and what we'd build next 2. Tell me step by step how to put it online on Vercel or Netlify from a GitHub repo, so the judges can open a link. Include the setting that stops a page refresh from showing a 404. 3. Write a 3-minute demo script for judges who score user experience, cycle tracking and insights, health education, responsible guidance, privacy and accessibility, technical execution and real-world impact. Show: - the demo data on Today and the irregular-cycle range - a "When to see a doctor" card and the visit printout - the PCOS lesson - a responsible answer to "do I have PCOS?" - the Network tab staying empty,…
- Debug · An error message: I'm getting this error: [paste the full error message from the terminal or the browser console] It happens when: [what you did, e.g. saved a day's log, ran npm run dev] The file it points to: [paste the file, or the part the error names] Explain in two lines what is causing it. Then fix only that: give me the corrected code for each file that changes, with its file name, and don't change anything unrelated. Tell me how to check it's fixed.
- Debug · Blank white screen: The app shows a blank white screen. The browser console (right-click the page, Inspect, Console) shows: [paste any red text, or write "nothing"] The terminal shows: [paste it] What I changed last: [describe it] Find the cause step by step: the console error first, then the entry files (main.jsx and App.jsx), the routes, any import that might be wrong, and stored data that no longer matches what the code expects (including encrypted data the app can't read without the PIN). Fix the cause, not the symptom. Also add a simple error screen, so a crash in one screen shows a message instead of a blank page.
- Debug · The predictions look wrong: The predictions look wrong: [e.g. the next period is a day off / the range is huge / the irregular label never appears]. In src/lib/cycle.js, check these one by one: - Dates are stored and compared as local dates, with no UTC shift. - Cycle length is counted from first day to first day. - The current, unfinished cycle is left out. - Only the last 6 complete cycles are used. - A gap far longer than usual is asked about, not counted. - The median and the spread are worked out correctly, and the range is at least 2 days either side. - "Irregular" uses the number in config.js. - The ovulation estimate is hidden for irregular cycles. Then write small tests with fixed inputs and show me expected against actual in a table: - regular 28-day cycles - cycles of 26, 31, 29, 35, 27 and 30 days - only 2 logged cycles - one missed log that makes a 58-day gap
- Debug · The doctor cards are wrong: The "When to see a doctor" cards are wrong: [e.g. a card doesn't appear when it should / it appears when it shouldn't / it shows the wrong days]. Check these one by one: - Every rule is read from src/data/redflags.js and config.js, not hard-coded. - The thresholds match what the cards say: 7 days; 21 and 35 days for adults; 21 and 45 for under-18s; 90 days. - "Three in a row" counts consecutive cycles. - The age group picks the right ranges. - Pregnancy mode pauses the cycle rules but keeps the pregnancy danger signs. - Each card lists the exact days it's based on. - A dismissed card stays hidden until new logs trigger it again. Then make test logs for every rule, and show me a table of rule, test logs, expected and actual.
- Debug · Saving, PIN lock or delete isn't right: Something's wrong with saving, the PIN lock or deleting: [e.g. logs disappear after a reload / with the PIN lock on, the data is still readable in storage / Delete everything leaves something behind / import fails]. Check these one by one: - Every write is awaited, and saved to the same store the app reads from. - The data isn't stored twice, once encrypted and once in plain text. - The key is derived from the PIN with PBKDF2 and a stored random salt, and the PIN itself is never stored. - A wrong PIN shows a message; it never wipes the data. - Delete everything clears IndexedDB, localStorage, sessionStorage and any cache. - Exporting and then importing gives back identical data. - Discreet mode changes the name, the icon and the reminder wording. Then show me how to check each one in Chrome DevTools (the Application tab).
- Debug · The AI gave a bad answer: The AI assistant gave an answer it shouldn't have. The question: [paste it] The answer: [paste it] Work out which rule it broke: - it diagnosed, or said a condition is what the user has - it gave a medicine or a dose - it promised a prediction, or called a time safe from pregnancy - it reassured someone about a warning sign - it missed an urgent sign or the helpline - it sounded alarming - it didn't answer in the user's language Tighten the system prompt for that rule without making the answers cold. Add a check on the server that always adds the right help line when a message contains urgent or self-harm words, whatever the AI says. Then run the 15 test questions again and show me question, answer, and pass or fail.
- Debug · It broke after my last change: Everything worked until my last change. Now [what's broken]. The change I made, or asked you to make: [describe it or paste it] Compare the code before and after that change and find what broke. Fix it so the new change and everything that worked before both work. If the change can't work without breaking something, tell me and suggest another way to do it.
- Debug · The AI keeps going in circles: Stop. We've tried to fix this several times and it still isn't fixed. Don't write any more code yet. The problem: [describe it] 1. List what we've already tried, and why each attempt didn't work. 2. List three possible root causes, most likely first, and what would confirm each one. 3. Tell me exactly what to check or log (one console.log, or one thing to look at) to find out which it is. Once I tell you the result, make one focused fix.
- Debug · Broken on a phone: The app looks broken on a phone: [describe it, e.g. the calendar runs off the side of the screen]. Fix the layout so every screen works at 360px wide and at the largest text size in Settings: - nothing scrolls sideways, and no text is cut off - the calendar and charts fit the screen - buttons are at least 48px tall and don't overlap - long Hindi words wrap Check every screen, not only the one I named, and tell me which ones you changed.
- Debug · Broken after deploying: The app works on my laptop but not after deploying to [Vercel / Netlify / GitHub Pages]. What happens: [e.g. a blank page, a 404 when I refresh /calendar, Ask doesn't answer] The build log or browser console shows: [paste it] Check the usual causes one by one: - the build command and output folder - the base path - a rewrite so every route serves index.html - file names whose capital letters differ from their imports (my laptop may ignore case, but the server doesn't) - environment variables that exist on my laptop but were never added to the host - if we have a server, whether the app points at the server's live address instead of localhost Tell me exactly which settings to change and where.