← All projects

seenX AI · Backend

Save the reason you kept that screenshot

An image is more useful when the note, highlight, and exact region stay attached.

Saved images with notes you can search.

Python / SQLite / SwiftUI

GitHub ↗

The problem

A folder of screenshots preserves pixels but often loses why you saved them. seenX has a local Python catalog for images, revisions, region notes, and search. Its website is a separate sample experience with authored images and keyword matching.

How it works

  1. Image revisionRegion + note
  2. Local catalogSearch saved text
  3. EvidenceFetch granted region
The durable Python catalog path. The browser sample uses separate data.
  1. Keep the image revision

    The catalog stores images with immutable revisions. A note or highlighted region points to a particular revision, so its coordinates still refer to the image it was attached to.

  2. Search saved context

    SQLite FTS5, a text-search feature inside the local database, searches notes, selected text, and saved OCR observations. OCR means reading text from an image. Results include references back to the matching image and region, not just a detached sentence.

  3. Fetch only granted evidence

    The read-only MCP adapter exposes search, fetch, and build_payload. MCP is a tool interface an assistant can use. Payloads contain notes and a crop or full image; access grants limit which evidence that assistant can retrieve. The adapter itself does not call a model.

Decisions & tradeoffs

Keep evidence attached

Revision and region references preserve the source of a note. The offline demo verifies the actual crop pixels and checks that revoking a source grant blocks later payload access.

Local storage is not the same as local sharing

The catalog can work without a model call. If a cloud-backed assistant receives a payload, that selected content leaves the device. The website does not read your personal files or run real OCR.

Try it yourself

From a fresh seenX checkout, use uv and Python 3.13+. This offline demo makes a synthetic image in a temporary library. It needs no model downloads, OCR, account, or database server.

uv sync --project python --locked --extra mcp
uv run --no-env-file --project python --extra mcp python -m seenx.demo

The demo saves a region note, searches and fetches it through a local MCP subprocess, verifies crop and full-image pixels, revokes access, then removes the temporary library. Its image is synthetic, not personal data.

Sources & scope

Based on the local README, offline demo, catalog search, and MCP source. Native capture and optional visual-search experiments are separate from this walkthrough.