# Project export: Memreda

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: OpenAI Build Week
- Tagline: A private continuity layer for families sharing care: voice notes and forwarded emails become source-backed, editable handovers so what happened, and what tomorrow needs, is never lost.
- Devpost: https://devpost.com/software/memreda
- GitHub: not linked
- Demo: https://memreda.xyz/
- Video: https://www.youtube.com/embed/vo5mw_iVHys?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: contributor stats unavailable

## Devpost submission (written by the team)

### 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/mp4 while MediaRecorder.mimeType reads 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

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.

## README (from the GitHub repository)

No README available.

## Detected evidence (automated analysis)

No repository was indexed for this project. Claimed technologies below could not be checked against code.
- Express (technology) — claimed on Devpost, not found in the code
- JavaScript (language) — claimed on Devpost, not found in the code
- Node.js (technology) — claimed on Devpost, not found in the code
- OpenAI (technology) — claimed on Devpost, not found in the code

## Codebase structure

No repository index available.

## Key source files

No repository index available; no source files included.