Inspiration
I kept thinking about how family stories disappear when elders are gone. Not the big milestones — the small ones: why someone moved cities, how they met, what they told their kids on Sunday calls. In Indonesian, "Kangen" means longing or missing someone. That word stuck with me. I wanted an app that doesn't just store text, but keeps the context and voice of a loved one so a grandchild can still ask questions later.
What it does
Kangen is a family memory archive with a chat persona grounded in real stories.
- Memory Extractor — Paste a story or import a
.txtfile. GPT-5.6 extracts year, location, theme, and summary so memories become a timeline, not a pile of notes. - Persona chat — Ask Grandpa Budi questions. The app retrieves relevant memories with RAG and answers in his voice.
- View Source — Every reply shows the original memory on the right (year, place, excerpt), so you can see what the answer was based on.
How we built it
I built this during OpenAI Build Week with Codex as my main coding partner and GPT-5.6 for the AI features.
For Codex, I wrote a detailed plan.md and worked phase by phase: FastAPI backend, SQLite + ChromaDB RAG, then a desktop-first React UI. Codex helped a lot with scaffolding, wiring APIs, and debugging deploy issues.
GPT-5.6 does the two things that matter most:
- turning raw stories into structured metadata
- answering as Grandpa Budi using only retrieved memories
Stack: React (Vite) + TypeScript + Tailwind, Python FastAPI, SQLite, ChromaDB, OpenAI APIs, Cloud Run, Firebase Hosting.
Challenges we ran into
The hard part wasn't "make a chatbot." It was making sure Grandpa Budi doesn't invent family history. If a story isn't in the archive, he should say he doesn't remember telling it. That meant strict RAG prompts + a Sources panel that points back to the real memory.
Deploy was also messy: SQLite and Chroma live on Cloud Run's ephemeral disk, and CORS between Firebase Hosting and Cloud Run took a few iterations to get right.
Accomplishments that we're proud of
I'm happiest with the end-to-end flow: import a text story → see it structured on the timeline → ask about it in chat → open Sources and see the exact memory. The UI also doesn't look like a generic AI demo; it feels more like a calm memory archive.
What we learned
Codex works much better with a clear phased plan than with random one-off prompts. I also learned that RAG alone isn't enough for trust — the UI has to show the source. Constraining GPT-5.6 to synthesize from retrieved context (instead of freely inventing) was the key.
What's next for Kangen
Next I'd add Whisper so elders can speak stories instead of typing. I also want photo and video attachments on the timeline, multi-user auth for private family archives, and a move from local SQLite/Chroma to a managed persistent database.
Built With
- codex
- fastapi
- firebase
- google-cloud-run
- gpt-5.6
- openai
- python
- react
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.