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.

  1. Memory Extractor — Paste a story or import a .txt file. GPT-5.6 extracts year, location, theme, and summary so memories become a timeline, not a pile of notes.
  2. Persona chat — Ask Grandpa Budi questions. The app retrieves relevant memories with RAG and answers in his voice.
  3. 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

Share this project:

Updates