What I Built
Between Us is a private AI-powered memory companion that I built for someone I love in a long-distance relationship.
When you're in a long-distance relationship, small moments can easily get lost between chats, calls, photos, and voice notes. I wanted to build something that could preserve those moments and make them easy to revisit later.
Between Us lets us:
Save shared memories with titles, dates, and memory types.
Attach photos directly to memories.
Keep a separate private photo gallery.
Organize memories into a visual timeline.
Record/upload voice memories and automatically transcribe them.
Use AI to turn voice transcripts into structured memories. Ask natural-language questions about our past memories.
Retrieve relevant memories using semantic search and embeddings.
Instead of just being another notes app, the goal was to make the memories searchable, understandable, and meaningful.
Demo
🎥 Video Demo: https://youtu.be/b5Wcp2oPJsw The demo shows the main flow of Between Us, including adding memories, attaching photos, viewing the timeline, using the photo gallery, asking AI questions, and creating memories from voice notes.
Code
💻 GitHub Repository: https://github.com/DakshSinghUAI/between-us The project is built as a full-stack application with a React frontend and FastAPI backend.
How I Built It
The core of Between Us is built around open-source AI and local inference.
AI Stack
Ollama — local AI inference
Qwen 2.5 7B — used for understanding memories, answering questions, and extracting structured memories from voice transcripts
Whisper — used for speech-to-text transcription
nomic-embed-text — used to generate embeddings for semantic memory retrieval
Application Stack
React + Vite — frontend
FastAPI + Python — backend
SQLite — memory storage
SQLModel — database models
Embeddings + cosine similarity — memory retrieval
Lucide React + Motion — interface and animations
The AI memory flow works roughly like this:
Voice Note → Whisper → Transcript → Qwen → Structured Memory → Embedding → SQLite
And when asking a question:
Question → Embedding → Relevant Memories → Qwen → Answer
The AI is also instructed not to invent information. If a detail wasn't recorded in the retrieved memories, it should say that the information wasn't recorded rather than making something up.
Why Does Open Innovation Matter?
Privacy is especially important for this project because the memories stored in Between Us can be very personal.
Using local open-source AI means the core AI processing can happen on my own computer instead of requiring every private memory to be sent to a closed third-party AI API. With Ollama and an open-weight model like Qwen, I can:
Run the AI locally.
Keep personal memories under my control.
Experiment with different models.
Change the AI behaviour and prompts myself.
Build without depending on a paid proprietary AI API for the core functionality.
Continue developing even when an external AI service isn't available.
For this project, open innovation isn't just about avoiding an API cost. It gives me more control over privacy, models, experimentation, and how the AI interacts with personal data. That made local open-source AI a natural fit for something as personal as Between Us.
My Agent Session
Optional — I did not use DevRelay for this project.
Prize Categories
I am not entering any partner-specific prize category.
The project is being submitted for the overall Hacktoberfest Weekend Challenge: Build for a Friend.
<!-- Thanks for participating --!>