Inspiration

Photos preserve what a moment looked like, but not always what it meant. The rain outside the window, the hesitation in a voice, an uncertain year, or why an ordinary blue tin mattered to a family can disappear even when the photograph survives.

Xmemo began with a question: can AI help preserve the meaning around a memory without taking authorship away from the person who lived it? We wanted something warmer than a productivity database and more careful than an open-ended chatbot—a private archive where uncertainty, evidence, and human correction stay visible.

What it does

Xmemo is a local-first web archive for building connected memory stories from photographs, text, and voice.

  • Start with an image and turn it into a memory node.
  • Attach text, photographs, or a voice note.
  • Connect memories through people, places, objects, sounds, and themes.
  • Let a guided AI interviewer ask one grounded question at a time.
  • Preview the exact information before anything is sent to AI.
  • Accept, correct, or reject every extracted inference.
  • Compose an editable chapter whose claims link back to source memories.
  • Reveal accepted relationships as a living memory constellation.

The public judge experience includes a clearly labeled fictional story, Grandfather and the Old Radio, told through seven documentary-style photographs from 1998 to 2024 and a fictional voice note. It works without an account or API key.

How we built it

The responsive experience uses Next.js, React, and TypeScript. Dexie and IndexedDB provide separate browser-local namespaces for personal memories and the fictional demo. Zod validates persisted data and AI contracts.

For live mode, server-only OpenAI Responses API routes use GPT-5.6 with strict JSON schemas. The interview route returns exactly one careful follow-up question. The synthesis route streams prose with Server-Sent Events, then validates the complete chapter and its claim-level provenance before committing it locally. Consent gates, payload allowlists, timeouts, rate limits, and safe error messages protect the boundary.

The competition URL is a zero-cost static export with a deterministic cached demo. It contains no API key and never presents cached output as live. The full server build supports optional private live GPT-5.6 testing when a server-side key is configured.

Codex helped plan the product through OpenSpec artifacts, implement and refactor the web experience, create fictional documentary assets, and build the verification suite.

Challenges we ran into

The hardest problem was preventing plausible prose from quietly becoming false biography. We modeled uncertainty explicitly and made provenance part of the chapter contract, not a citation added afterward.

We also balanced privacy with a convincing demo. Personal data stays in the browser until explicit preview and consent, while an isolated fictional namespace gives judges a complete story without exposing real family memories.

Finally, a memory graph can feel like a technical diagram. We iterated toward a warm archive of paper, ink, photographs, evidence slips, and a cinematic constellation that remains responsive and accessible.

Accomplishments that we're proud of

  • A coherent seven-scene fictional photo essay with voice and chronology.
  • User authority over every AI inference: accept, correct, reject, or leave uncertain.
  • Claim-level links from chapter blocks back to memories and interview answers.
  • A deterministic no-key judge path with truthful live/cached disclosure.
  • Local export/import, isolated demo reset, responsive layouts, and accessibility checks.
  • 27 unit/contract tests, 38 desktop/mobile end-to-end tests, and offline deployment verification.

What we learned

For personal memory tools, the best AI behavior is often restraint. One precise question is more valuable than ten imaginative ones. Uncertainty should be preserved as information, and a generated story should remain editable evidence—not an authoritative record.

Trust is also part of the interface. Showing the outbound payload, labeling cached output, and keeping source links visible makes the intelligence useful because its boundaries are understandable.

What's next for Xmemo

Next we want end-to-end encrypted backup, opt-in family collaboration, stronger audio transcription and multilingual storytelling, richer archive exports, and a private hosted live-AI mode. The principle remains: Xmemo does not replace memory—it helps people remain its author.

Try it

Keep Fictional demo selected, play the opening voice note, enter the archive, complete evidence review, compose the grounded chapter, and reveal the constellation.

Built With

  • accessibility
  • codex
  • dexie
  • gpt-5.6
  • indexeddb
  • netlify
  • next.js
  • openai-api
  • playwright
  • react
  • server-sent-events
  • typescript
  • web-audio-api
  • zod
Share this project:

Updates