Inspiration
A report card says 62% in math. It never says why. That gap is where kids learn to hide problems out of embarrassment, and where parents are left guessing at the story behind a number. We wanted to close that gap — not by adding another dashboard, but by giving every student a chance to explain their own week, in their own voice, before a parent ever sees it.
We also kept coming back to a smaller, quieter problem: a lot of parents are more comfortable in Hindi or Marathi than English, and most school communication simply isn't built for them. That felt like an access problem worth solving in the same app.
What it does
Dear Parent is a three-role mobile app:
- Teachers upload a weekly CSV of grades, attendance, and assignments (or use the built-in sample data), see which students need a check-in, and generate a weekly note with one optional line of context.
- Students review that note before anything goes home. They can edit it so it actually sounds like them — nothing is sent until they approve it.
- Parents read the note, or tap "Listen" to hear it read aloud in a voice matched to their child, and can switch between English, Hindi, and Marathi with the numbers preserved exactly.
Every note is grounded in real data — a real score, a real attendance count, a real assignment total — never a generic "this week was okay." If something is a genuine concern, the note says so honestly, paired with warmth rather than euphemism.
How we built it
We built the whole app in Codex, using GPT-5.6, in the Expo managed workflow with TypeScript and React Navigation. The build followed six phases: scaffold and data model, CSV import, the three role screens, GPT-5.6 integration for note generation and translation, voice narration, and a final polish pass.
GPT-5.6 does two jobs in the running app:
- Note generation — given a student's real weekly data, GPT-5.6 writes the first-person note, choosing an appropriate tone (warm, upbeat, gentle, encouraging) and weaving in teacher context and week-over-week trends naturally, rather than reciting a report.
- Translation — once a student approves a note, GPT-5.6 translates it into Hindi and Marathi, keeping every number and name accurate.
A deliberate design choice: both features fall back to a hand-written, fully offline composer if no API key is set or a request fails for any reason. A classroom — and a live demo — can't be at the mercy of a flaky network call, so the app always produces a grounded note either way.
Challenges we ran into
- CSV imports that "should" work but didn't. Files exported and re-saved from Excel often trim a trailing empty cell, which broke our strict field-count validation and killed the whole import over one harmless row. We rebuilt the importer to treat a single row's field mismatch as recoverable instead of fatal, and to read column headers from the actual CSV header row instead of the first data row — so one malformed row can no longer make a whole column disappear.
- Android's file picker silently rejecting valid CSVs. MIME-type filtering on Android is unreliable — the same CSV can be reported under several different types depending on the device. We switched to accepting any file and validating by extension instead.
- Voices that didn't match gender. Most on-device TTS voices don't literally contain the word "male" or "female" in their name (iOS ships names like "Samantha" or "Daniel"), so naive substring matching failed almost silently. We built a broader name-pattern match and tuned pitch per gender to get closer to the intended voice.
- Notes that read like a report, not a story. Our first pass at the note template led with attendance stats before anything else — technically grounded, but it didn't feel like a kid telling their parent about their week. We rewrote both the GPT-5.6 prompt and the offline fallback to open with the moment that actually mattered — a win or a struggle — and weave the numbers into that story instead of listing them first.
Accomplishments that we're proud of
- A note generation system that's actually grounded — GPT-5.6 is prompted, tested, and constrained so every note references a real score, a real attendance count, or a real assignment total. No generic "this week was okay" filler ever makes it to a parent.
- A fallback path that's just as trustworthy as the AI path. If there's no API key, or a request fails mid-demo, the app quietly produces the same quality of grounded, honest note from a deterministic composer — nothing breaks, nothing goes generic.
- Real accessibility, not a checkbox feature: a parent who's more comfortable in Hindi or Marathi can read or hear the exact same note, with every number intact, in their own language.
- A genuine trust boundary in the product, not just the code: the student always reviews and approves before anything reaches a parent. We kept that intact even as we added teacher-facing bulk generation, because it's the feature that makes the whole idea work.
What we learned
Grounding an AI feature in real data is the easy 80%; making the fallback path just as honest and just as good is the harder 20% — and it's the part that actually makes a demo (or a real classroom) reliable. We also learned that "AI-generated" and "sounds like a person" are not the same thing by default — tone, structure, and even TTS pitch all needed deliberate, tested decisions to get there.
What's next for Dear Parent
Real .xlsx import support, a school-controlled backend so the OpenAI
key never has to ship inside the client bundle, and expanding trend
awareness across more than two weeks of history.
Built With
- android
- async-storage
- codex
- csv-import
- education-technology
- expo-document-picker
- expo-go
- expo-speech
- expo.io
- gpt-5.6
- ios
- mobile-app
- multilingual
- natural-language-generation
- openai-api
- papaparse
- react-context-api
- react-native
- react-navigation
- text-to-speech
- typescript
Log in or sign up for Devpost to join the conversation.