{"slug": "circle-a-private-ai-memory-for-the-people-who-matter", "title": "Circle: A Private AI Memory for the People Who Matter", "summary": "A developer built Circle, a local-first Electron desktop app that turns scattered personal data — chat exports, emails, calendars, notes and voice recordings — into a private, searchable memory layer about the people in a user's life. The app runs Gemma 3:4B locally through Ollama, stores normalized records in SQLite with FTS5, and cites the source records behind every generated answer so users can verify context rather than trust a summary. The project is open source on GitHub and hosted as a public demo page on Render, while the actual archive and AI processing stay on the user's device.", "body_md": "*This is a submission for the [Hacktoberfest Weekend Challenge: Build for a Friend](https://dev.to/challenges/hacktoberfest-weekend-2026-10-01).*\n\nI built **Circle** for a friend who wanted an easier way to remember the small details that matter in their relationships.\n\nMeaningful conversations were scattered across chat exports, emails, calendars, notes, documents, and voice recordings. The information existed, but finding the right context at the right time was difficult.\n\nCircle turns that scattered information into a **private, searchable memory layer around the people who matter**.\n\nInstead of searching through several different applications, a user can select a person and ask questions such as:\n\nCircle retrieves relevant records from the user’s own archive and generates an answer using a local AI model. Each answer includes the sources used to produce it, so the user can verify the context instead of blindly trusting a generated summary.\n\nThe idea came from one question:\n\n**What should I remember before I talk to this person?**\n\nCircle is not designed to replace human relationships or guess how someone feels.\n\nIt is designed to help someone remember the details that matter so they can show up more thoughtfully for the people they care about.\n\n**Project page:** [https://circle-dh51.onrender.com/](https://circle-dh51.onrender.com/)\n\n**Source code:** [https://github.com/navaneedan07/circle](https://github.com/navaneedan07/circle)\n\nThe public project page is hosted on Render. The actual Circle application runs locally as an Electron desktop app, keeping the private archive and AI processing on the user’s device.\n\nThe demo shows:\n\nThe most important part of the demo is not just the generated answer. It is the path from the answer back to the original evidence.\n\n**GitHub repository:** [https://github.com/navaneedan07/circle](https://github.com/navaneedan07/circle)\n\nCircle is built as a local-first Electron application.\n\nThe current shipped architecture is:\n\n```\n┌─────────────────────────────────────┐\n│ Electron Desktop Application        │\n│                                     │\n│  React + TypeScript renderer        │\n│              │                      │\n│              ▼                      │\n│  Local Node.js / Express API        │\n│              │                      │\n│      ┌───────┼────────────┐         │\n│      ▼       ▼            ▼         │\n│   SQLite  Ollama     Folder Watcher │\n│   FTS5    Gemma                     │\n│           Embeddings                │\n│                                     │\n│  Local archive, retrieval, and AI   │\n│  processing remain on the device.  │\n└─────────────────────────────────────┘\n```\n\nThe application uses:\n\nThe core of Circle is **Gemma 3:4B**, an open-weight model served locally through **Ollama**.\n\nI chose local inference because Circle works with highly personal information. The system should be useful without requiring a user to upload their entire personal archive to a third-party AI provider.\n\nCircle watches a folder selected by the user. It does not scrape websites, automate social-media logins, or ask for account passwords.\n\nUsers can provide their own exports and files, including:\n\nWhen a file is detected, Circle processes it locally and adds the normalized records to the archive.\n\nThe watcher is read-only with respect to the user’s source folder. Circle does not move, rename, or delete the files it imports.\n\nA WhatsApp export, email, calendar entry, note, and voice recording all have different formats.\n\nCircle normalizes them into a common memory representation containing information such as:\n\nThis allows the application to search across different kinds of personal data consistently.\n\nThe same person may appear under different names, usernames, phone numbers, or email addresses.\n\nCircle uses deterministic signals such as:\n\nPotential matches are treated carefully. Uncertain identities are surfaced as suggestions instead of being silently merged.\n\nCircle does not send the entire archive to Gemma for every question.\n\nWhen a question is asked, Circle first retrieves relevant evidence using:\n\nThe retrieval flow is:\n\n```\nUser Question\n      │\n      ▼\nIdentify relevant person or time range\n      │\n      ▼\nKeyword search + vector search\n      │\n      ▼\nFuse and rank evidence\n      │\n      ▼\nLimit the evidence budget\n      │\n      ▼\nSend only relevant records to local Gemma\n      │\n      ▼\nAnswer with validated citations\n```\n\nThis makes the system more efficient and reduces the chance of an answer being based on unrelated records.\n\nGemma is used for tasks that benefit from language understanding, including:\n\nThe application handles exact calculations directly.\n\nFor example, questions such as “Who do I talk to most?” and “How many messages did I send last week?” are answered using database aggregates rather than asking a language model to count records. This is faster and avoids a common failure mode where a model mistakes a number mentioned inside a conversation for the answer.\n\nCircle does not treat the generated answer as the only output.\n\nEach answer can include:\n\nThe goal is to make the AI useful while keeping the user in control of verification.\n\nCircle can also process voice recordings that are explicitly provided by the user.\n\nThe voice workflow is:\n\n```\nVoice Recording\n      │\n      ▼\nLocal transcription\n      │\n      ▼\nSearchable transcript\n      │\n      ▼\nPerson association\n      │\n      ▼\nEvidence in the relationship archive\n```\n\nCircle never activates a microphone or records calls. A recording must be explicitly provided by the user.\n\nOpen innovation is central to Circle because the application deals with extremely personal information.\n\nConversations, plans, memories, emails, and voice recordings are not ordinary application data. They belong to the people who created them.\n\nA closed AI API could make the first prototype faster, but it would require sending private context to a service outside the user’s control. For this project, that would undermine the reason for building it.\n\nWith **Gemma and Ollama**, Circle can perform its core AI processing locally.\n\nThat makes several things possible:\n\nThe open model is not just an implementation detail. It changes the product’s boundaries.\n\n**Open-weight AI allows Circle to make privacy part of the architecture rather than merely a promise in the user interface.**\n\nThat matters especially here because the people being remembered did not necessarily choose to participate in an AI product. Keeping the archive local gives the user more control over those memories and conversations.\n\nCircle was built for a real friend who wanted a better way to remember relationship context without searching through years of scattered conversations.\n\nCircle uses **Gemma 3:4B** through **Ollama** as its local reasoning model for evidence-grounded questions, summaries, topic analysis, relationship context, and conversation preparation.\n\nThe public Circle project and download page is hosted on **Render**. The privacy-sensitive archive, retrieval pipeline, and AI processing remain local in the desktop application.\n\nCircle was developed with GitHub Copilot as part of the engineering workflow, including code exploration, implementation support, debugging, and refinement.\n\nCircle started with a friend, not a market segment.\n\nThe first question was not:\n\n“What AI application should I build?”\n\nIt was:\n\n**“What would actually make my friend’s life a little easier?”**\n\nThe answer was helping them remember.\n\nBecause sometimes remembering one small thing about someone is enough to make them feel remembered.", "url": "https://wpnews.pro/news/circle-a-private-ai-memory-for-the-people-who-matter", "canonical_source": "https://dev.to/navaneedan_s/circle-a-private-ai-memory-for-the-people-who-matter-2lh1", "published_at": "2026-10-04 16:03:40+00:00", "updated_at": "2026-10-04 16:13:02.183776+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-products", "ai-tools", "generative-ai"], "entities": ["Circle", "Ollama", "Gemma 3:4B", "Electron", "SQLite", "Render", "GitHub", "Navaneedan"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/circle-a-private-ai-memory-for-the-people-who-matter", "markdown": "https://wpnews.pro/news/circle-a-private-ai-memory-for-the-people-who-matter.md", "text": "https://wpnews.pro/news/circle-a-private-ai-memory-for-the-people-who-matter.txt", "jsonld": "https://wpnews.pro/news/circle-a-private-ai-memory-for-the-people-who-matter.jsonld"}}