IdeaLoom is a Chrome extension that turns the article in your active tab into one to three atomic idea cards and automatically connects them to related ideas you saved earlier.
- Node.js 22 or newer
- pnpm
- Google Chrome
- An OpenRouter API key permitted to use the ZDR DeepInfra BF16 endpoint for
openai/gpt-oss-20b
Create .env in the repository root:
OPENROUTER_API_KEY=your-key-hereNever commit this file. IdeaLoom sends requests only to openai/gpt-oss-20b on DeepInfra BF16 with ZDR required, data collection denied, and provider fallbacks disabled.
pnpm install
pnpm typecheck
pnpm test
pnpm buildpnpm dev:serverThe service binds to http://127.0.0.1:8787. Confirm it with:
curl http://127.0.0.1:8787/health- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select the repository's
extension/distfolder. - Pin IdeaLoom to the toolbar.
After code changes, run pnpm build and click the extension's reload button on chrome://extensions.
- Open a readable article over HTTP or HTTPS.
- Click the IdeaLoom toolbar icon.
- On first use, optionally load the demo idea, then select Get started.
- Keep the popup open to watch extraction and analysis, or close and reopen it later.
- Review generated notes in Ideas.
- Open Graph to see automatic cross-article connections.
- Edit a note's title or blurb, or select an edge and press Delete to remove a poor link.
The strongest deterministic demo starts by choosing Load one demo idea first during onboarding. Then capture an article about connected notes, knowledge retention, or spaced repetition. The wow moment is a new atomic idea appearing automatically connected to the seeded “Spaced repetition strengthens recall” idea.
Demonstrate:
- One-click active-page capture
- One to three atomic ideas with source metadata
- The connection badge and Graph tab
- A meaningful automatic connection
- Idea editing and connection deletion
- Persistence after closing the popup
- Duplicate reopening when the same URL is captured again
- Manifest V3 action popup built with React and TypeScript
- Background service worker owns capture jobs across popup closures
- Mozilla Readability extracts a cloned active-page document
- Chrome local storage persists sources, ideas, links, and jobs
- Local Node service protects the OpenRouter API key
- Strict JSON Schema plus Zod validation prevents malformed AI data from entering storage
- React Flow renders the graph
Planning and verification artifacts live in docs/hackathon-build/.
pnpm test covers structured AI contracts, article extraction and length caps, URL normalization, atomic capture storage, invalid-link filtering, idea edits, and connection deletion.
Manual Chrome checks remain necessary for Manifest V3 permissions, popup lifecycle, real-page extraction, local-service connectivity, and browser-restart persistence.
The extension UI, background lifecycle, extraction bundle, storage layer, and local AI service are implemented. In the final Chrome smoke test, the popup reached AI service unavailable, and the retry did not reach the listening local service. Direct calls to the same service and privacy-locked OpenRouter route succeeded repeatedly in 5–8 seconds. The remaining integration issue is therefore between the unpacked extension's background request and http://127.0.0.1:8787, likely in extension networking/origin configuration. This is intentionally disclosed rather than presented as a passing end-to-end test.