July 30, 2026May 2026 – Present

SpiderMind — Context-Aware Opportunity Intelligence

SpiderMind is a context-aware web intelligence system that maintains a living model of the user’s projects, goals, interests, and work context. It scans public technical sources and turns relevant signals into personalized Opportunity Briefs and human-approved action drafts.

Role
Solo Developer & System Designer
Stack
Python · FastAPI · Next.js · TypeScript · SQLite · APScheduler · Anthropic Claude · Neon PostgreSQL · Railway · Vercel
Links
Live

Problem

Keyword alerts and generic AI digests retrieve technically related content but cannot connect it to changing projects, goals, work context, or risk preferences. The result is a noisy feed that still requires manual relevance analysis and quickly becomes stale as the user’s context changes.

Solution

I built a single-owner web intelligence system combining an event-sourced personal context engine, source-specific query generation, seven active collectors, and a two-stage LLM pipeline. SpiderMind filters and deduplicates incoming signals, converts selected items into bilingual structured Opportunity Briefs, and generates action drafts while keeping every context change and external action under explicit human control.

Decisions

  • Validated the core “signal × context = useful brief” assumption on one source before expanding the system to multiple collectors.
  • Selected Haiku reasoning over embedding similarity because topical proximity alone could not explain personal relevance.
  • Used SQLite and event sourcing for a single-owner system instead of introducing multi-user PostgreSQL complexity prematurely.
  • Stored raw signals, relevance scores, briefs, feedback, drafts, engagement data, and memory events separately to preserve inspectability.
  • Implemented different query grammars and collection budgets per source rather than forcing every platform through one search strategy.
  • Made all memory mutations proposal-based or explicitly approved and permanently excluded automated posting.
  • Paused adaptive scoring until enough feedback and engagement data exist to evaluate it safely through shadow scoring.

Architecture highlights

  • Event-sourced personal context stores append-only updates, lifecycle changes, and conflicts without silently overwriting previous information.
  • A deterministic read model reconstructs the active profile used by collectors, LLM prompts, context chat, and authoring workflows.
  • Source-specific queries are derived from live goals, projects, interests, work context, positioning, and avoided topics.
  • Seven active collectors normalize GitHub, Hacker News, X, RSS, job feeds, Stack Exchange, and Hugging Face results into a shared RawSignal model.
  • A cost-aware pipeline uses Haiku to prescreen every signal and sends only threshold-passing items to Sonnet for full brief generation.
  • Cross-run URL deduplication, per-source recency windows, scheduled scans, and serialized LLM execution limit duplicate work and API collisions.
  • Opportunity Briefs contain 13 bilingual sections and deterministic tier gates for weak context links or stale signals.
  • X replies, original posts, threads, and optional images remain draft-only; the application contains no external posting path.
  • The production architecture uses a Railway backend with persistent SQLite storage and a Vercel frontend protected by single-owner authentication.

Outcomes

  • Deployed a single-owner production system on Railway and Vercel with persistent storage, authentication, scheduled scans, and operational monitoring.
  • The production quality gate reviewed 10 briefs: 7 useful, 2 borderline, and 1 junk, passing the original five-of-ten continuation threshold.
  • Expanded the validated pipeline to seven active public sources while keeping the Reddit adapter disabled until API access is available.
  • Manual owner evaluation marked 11 of 11 reply drafts and 10 of 11 original-post drafts as publishable.
  • The latest completed documented sprint maintained a 548-test backend regression suite, TypeScript checks, and a structural draft-only invariant test.