# Between Us — A Private AI Memory Companion for Two

> Source: <https://dev.to/daksh_jhala_fa25c6207cbb5/between-us-a-private-ai-memory-companion-for-two-31n4>
> Published: 2026-10-04 21:07:07+00:00

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](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](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 --!>
