Skip to content

Repository files navigation

Context app icon

Context

A private, offline-first relationship memory for the people you already know.

Verify Context Expo 57 React Native 0.86 Strict TypeScript Built with GPT-5.6 Zero cost core runtime

Watch the teaser · Read the demo · Project story · Privacy · Security

Context helps you remember where you met someone, what you last discussed, what matters to them, and how to continue the relationship naturally. Every lookup begins with a person the user chose to save. Events can organize people, but they are never required.

Context is not internet identity search and it is not a sales CRM. It is a memory aid designed to help people show up better for relationships they already have.

Why I built it

The idea came from watching my mom meet people. After a conversation, she often opens the Notes app and records the person's name, where they met, and details she wants to remember.

It is a thoughtful habit, but the notes quickly become cluttered. Names are formatted inconsistently, details are spread across different entries, and useful context gets buried among grocery lists and reminders. When she meets someone again, the information may be on her phone, but it is hard to find at the moment she needs it.

Context gives those memories a dedicated home. It keeps the speed of writing a note while organizing every detail around the person it belongs to.

How I used GPT-5.6

I built Context on my own, with GPT-5.6 through Codex as an AI engineering collaborator. I set the product direction, chose the privacy boundaries, made the final design decisions, and reviewed every change. GPT-5.6 helped me move from the original idea to a tested, cross-platform product by assisting with:

  • Exploring product flows and turning the Notes app problem into a focused relationship-memory experience
  • Designing the TypeScript monorepo, shared data contracts, native iOS boundaries, and offline-first architecture
  • Drafting and refactoring React Native, Swift, Objective-C, AppKit, test, and automation code
  • Reasoning through contact permissions, local storage, review-before-save flows, backups, and privacy safeguards
  • Generating edge-case tests and investigating timezone, native build, and Linux CI failures
  • Polishing the README, project story, release documentation, and GitHub presentation

I treated GPT-5.6 output as a starting point rather than an automatic decision. I inspected the code, tested the complete user flow, built the native targets, and used GitHub Actions to verify the final result on Linux and macOS.

GPT-5.6 was part of the development process, not a runtime dependency. The released mobile app does not send relationship data to GPT-5.6 or require an OpenAI account or API key.

Product tour

Private onboarding Relationship home Event assistant
Context private onboarding screen Context home screen Context event assistant
Person profile Memory timeline Privacy controls
Context person profile Context memory timeline Context privacy controls

What Context can do

Remember people

  • Keep one private People directory with relationship context, contact fields, social links, profile photos, and confirmed memories.
  • Add anyone directly or organize people into work, school, community, travel, and event lists.
  • Search an everyday relationship refresher or open an event briefing ordered by who may need context.
  • Review a chronological memory timeline and conversation prompts for each person.

Capture context quickly

  • Add a person or memory manually.
  • Dictate a person description or memory while the visible Dictate control is active.
  • Import selected iPhone Contacts through a review-first flow.
  • Import validated CSV or people-list PDF files with duplicate protection.
  • Turn rough notes into editable smart drafts before saving anything.

Share intentionally

  • Share selected public contact fields as a vCard through an offline QR code.
  • Use the iOS share sheet, including AirDrop when iOS offers it.
  • Scan and review a received contact card before adding or merging it.
  • Keep memories, relationship notes, events, photos, and internal identifiers out of shared cards.

Stay in control

  • Protect the app with optional Face ID or device authentication.
  • Export and restore a validated JSON backup.
  • Delete one memory, remove one person and related data, or erase the complete workspace.
  • Review public Update Watch suggestions before they become memories.

Privacy by architecture

Context privacy architecture

The iOS and Android app has no hosted backend, paid API, API key, subscription, or usage meter.

  • Contacts, events, preferences, and confirmed memories remain in the platform app sandbox.
  • iPhone Contacts import copies only fields the user reviews. It never copies Contacts notes, birthdays, postal addresses, or photos, and it never changes the system address book.
  • The camera opens only for deliberate QR scanning. Frames are not captured, stored, or uploaded.
  • The microphone runs only during visible dictation. Audio is never saved or uploaded by Context.
  • Face ID protects access to the app. Context receives only the operating system's success or failure result, never biometric data.
  • Update Watch checks only a public HTTPS source the user confirms. Results remain in a review queue.
  • Biometric identity matching is disabled. The released experience uses manual search and deliberate contact-card QR scanning.

See PRIVACY.md for the complete data-handling model and SECURITY.md for security boundaries.

On-device intelligence

On iOS, Context can optionally use Google's Gemma 4 E2B IT model through LiteRT-LM 0.14.0 for:

  • Person field filling from one dictated description
  • People-list PDF extraction
  • Smart memory drafts
  • Conversation prompts

Inference stays inside the app process. Every generated or extracted record is editable and requires review before it is saved. If the model is disabled, unavailable, or unable to complete a supported task, deterministic TypeScript assistance keeps the core workflow usable.

The model is an optional 2.59 GB download. Context verifies it with a pinned SHA-256 hash and keeps the model artifact separate from relationship backups.

The optional PC web companion can use qwen3:4b through a loopback-only Ollama runtime. This enhancement is not required by the native app and is never contacted by an iPhone.

Technology

Area Implementation
Mobile and web Expo 57, React Native 0.86, Expo Router, React 19
Language and state Strict TypeScript, Zustand, Zod
Native iOS Swift, Objective-C bridges, LiteRT-LM, PDFKit, Speech, LocalAuthentication
Local AI Gemma 4 E2B IT on iPhone, optional Qwen3 through local Ollama on PC
Sharing and import vCard, QR, Contacts, CSV, PDF, JSON backup
Desktop AppKit and WebKit wrapper for the production web bundle
Quality Vitest, Node test runner, TypeScript, Expo Doctor, GitHub Actions
Development workflow GPT-5.6 through Codex for assisted design, implementation, testing, debugging, and documentation

Repository layout

apps/
  mobile/          Expo app for iOS, Android, and web
  desktop-macos/   Native macOS wrapper for the production web build
packages/
  shared/          Contracts, matching, parsing, backup, and assistance logic
docs/              Architecture, deployment, and release documentation
submission/        Demo, pitch, screenshots, and hackathon materials
tools/             Local model and Update Watch services and tests

Run locally

Requirements

  • Node.js 22.23.1, also recorded in .nvmrc
  • npm 10 or newer
  • macOS with Xcode 26.4 or newer for iOS development
  • An iOS 16.4 or newer simulator or device

Install and verify

nvm use
npm ci
npm run verify
cd apps/mobile
npx expo-doctor
npx expo install --check

Start the app

npm run dev:mobile

From the Expo terminal, choose iOS, Android, or web. For the native iOS project:

cd apps/mobile
npm run ios:native

QR scanning and dictation permissions require a physical device for final testing. See docs/DEPLOYMENT.md for simulator, signed-device, EAS, TestFlight, and App Store instructions.

Optional local PC assistance

npm ci
ollama pull qwen3:4b
npm run dev:watcher

In a second terminal:

npm --workspace @context/mobile run web

The service listens only on 127.0.0.1:8789 and contacts Ollama only on 127.0.0.1:11434. It does not write AI prompts or model output to the watcher data file.

An optional Windows task can perform monthly catch-up checks for user-confirmed public sources:

npm run install:update-task

Update Watch does not bypass authentication, CAPTCHAs, robots policies, or platform restrictions. RSS and Atom feeds, personal sites, public blogs, company newsrooms, GitHub feeds, and permitted public pages work best.

Verification

npm ci
npm run verify
cd apps/mobile
npx expo-doctor
npx expo install --check
npm run export:ios -- --clear
npm run export:web -- --clear
CI=1 npx expo prebuild --platform ios --clean --no-install

GitHub Actions repeats the clean install, type checks, full test suite, Expo diagnostics, production exports, clean iOS prebuild, privacy-manifest validation, and permission-string assertions on Linux and macOS.

Documentation

Product principle

Context is a memory prosthetic for relationships. The goal is not to know more people. It is to show up better for the people you already know.

About

Private, offline-first relationship memory for iOS, Android, web, and macOS with optional on-device AI.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages