Skip to content

Jimmy

Always-on ambient assistant for Windows 11

Remembers what you saw and heard, answers when you ask, and otherwise stays quiet.

  • 5/5

    Build stages shipped

  • 59

    Assert-based checks

  • 4/hr

    Card ceiling

  • 25.8MB

    Storage per hour

01The problem

You saw it, you heard it, and now you can't find it — the deadline on a tab you closed on Tuesday, the thing someone said on a call. Continuous capture is a commodity. The hard part is an assistant that knows when not to interrupt.

02The approach

Screen text and nearby speech become one local, searchable history with a blurred screenshot for every moment. Say “Jimmy, …” out loud and the answer arrives beside the exact moments it came from. Built for six good interruptions an evening, not for throughput.

03Architecture — the camera follows the data

How it works

> Capture never leaves the laptop — only the evidence shown with an answer does.

  1. Step 1: Capture

    DXGI frames · UI text · mic

  2. Step 2: Blur

    faces blurred, exclusions first

    Where the work happens

  3. Step 3: Store

    SQLite FTS5 · bge-m3 vectors

  4. Step 4: Gate / route

    rules, then qwen2.5:3b

  5. Step 5: Overlay

    answer beside its evidence

    Where the work happens

//Launch film

Launch film — the real overlay and the real model, run on an invented set of pages · 1:06 · sound on

04Perks — why it's built this way

The edge

  • Privacy by construction

    Faces are blurred before anything is written, and a test re-runs face detection on the saved JPEG and requires zero hits. There is no faces table — the absence is the design.

  • Hybrid recall

    SQLite FTS5 keyword matches fused with local bge-m3 meaning search, so “consulting application” finds a page titled “McKinsey Forward”.

  • The model never writes a card

    It only answers yes/no questions. Code writes the card from words that exist in the evidence and real timestamps, so a card can't contain anything invented.

  • Knows when to shut up

    At most 4 cards an hour, never two within 10 minutes. Dismiss one and it stays quiet for 30. Silence is the default.

  • Asks back

    “What's this?” could mean the screen now or one from last week — so it asks, then waits for a spoken answer. No wake word needed for the reply.

05Tech — and what each part does

The stack

Python 3.12
Capture loop, store, trigger gate
DXGI + UI Automation
Screen frames and on-screen text
Whisper large-v3-turbo
Local speech-to-text
SQLite + FTS5
History and keyword search
bge-m3 (Ollama)
Local meaning search
qwen2.5:3b (Ollama)
Yes/no card decisions
NVIDIA Nemotron
Optional spoken answers
Electron + React
Click-through overlay

06Evidence

The proof

Jimmy answering the question 'what was that fellowship application I saw on Tuesday?': two evidence screenshots with timestamps on the left, a spoken answer panel on the right.
Screenshot — A spoken question, answered beside the two moments it came from
Jimmy's timeline window: search results, a preview, and a minute-by-minute strip of blurred screenshots.
The timeline — a day as a strip of blurred moments
Jimmy asking whether 'this' means what is on screen now or something seen earlier.
It asks when it isn't sure

07Known limits — stated plainly

Where it doesn't win

  • The model reads text, not pixels — canvases, video and some apps' main panes aren't described yet.
  • No retention policy yet. Everything stays on your own disk: about 6 GB a month at 8 hours a day with 640 px thumbnails.
  • A face embedding is a biometric template under India's DPDP Act even if never persisted. The design shrinks that exposure substantially; it doesn't take it to zero.