Inspiration
Caring for someone you love is a group project run over voice notes, forwarded emails, and half-remembered phone calls. The important detail; what the doctor actually said, what someone promised to do tomorrow; gets said once and then lost in a chat scroll. We wanted the thread of care itself to be preserved: not another dashboard, not a medical record, just the handover between people who love the same person.
What it does
Memreda is a low-friction handover inbox for one private family circle:
voice note, typed note, or forwarded email → original source preserved immutably → transcript → a cautious, editable handover (What happened / Worth remembering / Tomorrow) → private family timeline → daily brief.
On top sits a deliberately narrow continuity layer: a conservative "What changed?" view (new / continuing / resolved / needs follow-up), topic threads backed by source evidence, carry-forward commitments any family member can claim and complete, source-scoped replies and "seen" acknowledgements, and a private history question box that answers only from the circle's own records, with the evidence linked.
Memreda is intentionally not medical advice, an emergency service, a medical record, surveillance, or a chatbot.
How we built it
The entire product was designed, implemented, and tested in Codex with GPT-5.6 — from auditing the original static prototype and writing the dated implementation plans, to the architecture, every feature, and the end-to-end test.
The architecture is deliberately the smallest thing that can honestly serve one family: a single Node 20 process, Express, SQLite in WAL mode, and a private upload volume — no framework, no ORM, no build step. Passwordless magic-link auth and invitations (Resend), Postmark-style inbound email that becomes an owner-reviewed draft before anything touches the timeline, and a daily digest built around what changed and what's still open. Deployed behind Caddy with systemd at memreda.xyz.
At runtime the app makes exactly two kinds of model calls, both constrained: audio transcription, and drafting the three editable handover strings (never diagnosis, never invented detail). They default to OpenAI and are OpenAI-compatible-configurable — which saved the demo when we hit a quota wall (below).
Challenges we ran into
- Safari lies about audio. iOS records
audio/mp4whileMediaRecorder.mimeTypereads empty, so mp4 bytes were stored labelled webm and playback silently failed. Fix: never trust the client-declared type — sniff magic bytes server-side, store the real MIME, and derive the transcription filename from content. - A one-line static-serving default exposed the project directory. We replaced it with an explicit public-file whitelist and a regression test asserting that server internals and the database can never be fetched.
- Transcription quota ran out mid-build. Instead of faking the demo, we made the transcription/drafting endpoints provider-configurable and kept every saved source visible, replayable, and retryable while processing is down. Reliability became a feature: the continuity layer is deterministic and source-linked, so the product degrades gracefully when AI is unavailable.
- Prompting for restraint. A handover prompt cautious enough to never invent detail kept returning empty fields for short updates; tuning it to carry the family's own words into "What happened" — while still allowing honest emptiness — took real iteration.
What we learned
Scope discipline is the product. Every time we wanted a feature, the question "does this preserve the thread of care between people?" killed it or shrank it — and the app got better each time. We also learned to treat the messy original as sacred: keeping sources immutable and separate from AI output and later edits made everything downstream (evidence links, replays, trust) fall into place.
What's next for Memreda
Deepening the core loop, not building a generic family app: explicit deletion semantics and encrypted, restore-tested backups; correctable topic threads that show why something is classified as continuing; photo and document updates with a clear "original attached" boundary; offline-first voice capture; and gentle, opt-in reminders only for commitments someone has claimed.
Built With
- caddy
- codex
- css3
- express.js
- gpt-5.6
- groq
- html5
- javascript
- node.js
- openai
- postmark
- resend
- sqlite
- systemd
- whisper
Log in or sign up for Devpost to join the conversation.