Inspiration

Read-it-later tools make it easy to collect URLs, but saved articles often become an unread pile. Even after reading, their useful ideas remain trapped inside each source and disconnected from everything else the reader has learned.

What it does

IdeaLoom is a Chrome extension that captures the article in the active tab, extracts its readable text, and uses AI to produce one to three concise, standalone idea cards. It proposes meaningful links between those cards and previously saved ideas, then presents the result through Ideas and Graph tabs in a compact popup.

How we built it

The Manifest V3 extension uses React, TypeScript, Vite, Mozilla Readability, React Flow, and chrome.storage.local. A background service worker owns capture jobs across popup closures. A local Node service protects the OpenRouter key and sends one structured-output request to GPT-OSS 20B through a ZDR-only DeepInfra BF16 route. JSON Schema and Zod validation reject malformed cards, fabricated IDs, self-links, duplicate links, and partial responses.

How we used Codex

Codex guided ideation, scope, PRD, technical specification, checklist creation, implementation, model/privacy routing, testing, and documentation. It also helped diagnose provider restrictions and added latency caps, timeouts, stale-job recovery, and duplicate-request prevention.

Accomplishments

  • One-click active-tab article extraction
  • One to three editable atomic idea cards with source metadata
  • Automatic cross-article connections
  • Ideas and Graph views
  • Persistent local sources, ideas, links, and jobs
  • Duplicate URL detection and retryable failures
  • Privacy-locked, schema-validated AI routing
  • Passing typecheck, nine automated tests, and production builds

Run it locally

Requires Node.js 22+, pnpm, Chrome, and an OpenRouter key eligible for the ZDR DeepInfra BF16 endpoint.

pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm dev:server

Then load extension/dist as an unpacked extension from chrome://extensions, open a readable HTTP(S) article, and click IdeaLoom.

Known limitations

The final unpacked-extension retry surfaced “AI service unavailable,” and the request did not reach the listening local service. Direct requests to that same service and the privacy-locked OpenRouter endpoint passed repeatedly, isolating the remaining issue to extension-to-localhost networking or origin configuration. The full browser path from article capture to populated Ideas and Graph views is therefore not claimed as passing. There is no public deployment or demo video.

Built With

Share this project:

Updates