Inspiration
Growing up I have always been curious about my grandparents and great grandparents. I would annoy my mom and dad, constantly asking about questions like "Why did Grandpa go to war" or "who were my Great Great Grandparents"? I would always receive straightforward and vague answers and it never really scratched my itch for curiosity.
What it does
Family history is one of the most basic blocks that make up who we are, yet it’s also one of the easiest to lose. Our Archive is a digital platform that connects family members, letting them record and store memories through photos, videos, voice memos, text, and even documents. You can look back at past experiences and memories, and our chatbot scans through everything, even transcribing voice recordings, so it can answer your questions directly.
This means you can finally get real answers to questions like “What profession did my great grandmother have?” To keep family members adding to the archive, we built the system to notice gaps in the timeline or vague details in stored memories, and it asks specific questions to help fill them in.
Technology usually pulls us forward and away from where we came from. We wanted to use it the other way, to bring people closer to their past instead. Now my great grandchildren will be able to hear my voice and know my past experiences with ease.
How we built it
I built Our Archive on Next.js and Typescript. I used Supabase to handle the database, file storage, and auth in one place. Using agentic AI and Claude, I used this tools to simplify my coding journey. Every memory a family member uploads gets converted into an embedding and stored in Postgres, this way if someone asks a question, we can search and scan across the whole archive by meaning, not just keywords.
The chatbot runs on retrieval augmented generation. This way, a question gets embedded, matched against the family's stored memories, and only those relevant memories get passed to the AI to generate an answer, and also citing it. I used Whisper to automatically transcribe the voice memories the moment it is recorded.
For the gap-detection feature, it scan what the family has already shared, reasons about what's missing and writes a new question for a specific person to answer using the RAG model.
Challenges we ran into
The biggest challenge I encountered was the schema drift. The database structure and the application code fell out of sync on various occasions. Issues like missing columns, renamed fields, and database functions the code expected but were never really created.
I also hit a subtle but important bug in the RLS policies. Several places in the app were inserting new memories or family members without setting who created them. On the AI side, the first version of the assistant occasionally centered its answers around family members who had the most memories recorded instead of giving the whole focus and scope to the whole family
Going into this challenge alone with no teammates very stressful. Having to do each component by myself without the helping hands of teammates caused some problems but I am extremely proud of myself and Our Archive as I genuinely believe in the idea.
Accomplishments that we're proud of
I am very proud that the whole pipeline actually works end to end. The ability for users to record a voice memory, have it transcribed automatically, and give answers to questions relating to the memory.
I am also proud of the gap-detection loop. It doesn't just sit there waiting on someone to remember to upload a memory, but instead actively noticing whats missing and asks for it.
What we learned
I learned how much of building trustworthy Ai feature is in the constraints, not just the model. Having the chatbot answer to only from real memories, while also citing the resources took more careful prompt design that I expected. I also learned the value of testing with real, non-technical users early.
What's next for Our Archive
I want to build a real push notifications for gap questions, so family members get gently prompted over time instead of waiting for the user to open the app.
I would also like to move toward a true family tree with modeled relationships between every person and eras, so a family can ask "show me everything about our time in Sydney" and get a whole story pulled together, not just a single answer.
I genuinely think this idea is very good and I am definitely thinking of improving and pursuing it!
Built With
- claude
- leaflet.js
- next.js
- openaiapi
- pgvector
- postgresql
- react-flow
- rls
- supabase
- tailwind
- typescript
- vercel
- whisper
Log in or sign up for Devpost to join the conversation.