Simon-Pierre Boucher
All apps & projects
Web Platform
TypeScript

WorthDoing

Google finds what exists. WorthDoing finds what should.

WorthDoing.ai is an autonomous investigation agent that continuously discovers, investigates, challenges, and ranks things genuinely worth doing — with mandatory falsification and evidence-cited Worth Scores, live at www.worthdoing.ai.

7

Worth Score dimensions, each evidence-cited

5

investigation phases (Scout → Report)

11

Zod-validated agent tools

17

Drizzle tables — Opportunity-Graph-ready

30 / 20 / 60

hard budget: steps / searches / scrapes

74 @ 69%

first live opportunity: Worth Score at evidence confidence

Overview

WorthDoing.ai answers a different question from search engines: what should exist, be built, researched, tested, funded, or pursued that does not exist yet — or is not being pursued enough? It is not a thin LLM wrapper and not a fixed query → search → scrape → summarize pipeline: Claude repeatedly decides what it knows, what remains uncertain, what to search next, which sources to inspect, whether to reject hypotheses, and when the evidence suffices to conclude.

Every investigation runs through five phases. Scout maps a domain with varied Firecrawl searches and forms falsifiable hypotheses. Investigate runs targeted searches (verify / market / technical / competition) and saves evidence as near-verbatim quotes linked to hypotheses. Skeptic is mandatory falsification — every high-confidence hypothesis gets adversarial falsify searches, and hypotheses weaken, branch, or die; a rejected hypothesis is useful progress. Synthesize turns survivors into opportunities with a seven-dimension, evidence-cited Worth Score (demand, neglectedness, feasibility, why-now, impact, competition, risk), with evidence confidence reported separately, never blended in. Report streams a citation-grounded report per opportunity, where citations resolve mechanically to saved evidence.

The guarantees are hard, not aspirational: budgets are hard bounds (30 steps, 20 searches, 60 scrapes, 3 crawls, wall-time) with structured stop reasons; no conclusion ships without traceable evidence — every score dimension carries {score, confidence, reasoning, evidenceIds}; scraped content is untrusted data, never instructions; and investigations are resumable because state lives in Postgres, not in the model's context. Every UI event corresponds to a real backend AgentEvent streamed over SSE — the live timeline never fabricates progress.

Key Features

Discovers what should exist

Scout mode maps a domain with varied searches and forms falsifiable hypotheses about gaps — things not being built, researched, or pursued enough.

Mandatory falsification

Every high-confidence hypothesis faces adversarial falsify searches in the Skeptic phase. Hypotheses weaken, branch, or die — and a rejected hypothesis is useful progress, not a failure.

Evidence-weighted Worth Score

Seven dimensions — demand, neglectedness, feasibility, why-now, impact, competition, risk — each carrying {score, confidence, reasoning, evidenceIds}, with evidence confidence reported separately, never blended in.

Mechanical citations

Streamed reports are citation-grounded: every citation resolves mechanically to saved near-verbatim evidence linked to hypotheses — never invented.

Hard bounds & untrusted input

Budgets are hard limits with structured stop reasons, and scraped content is wrapped as <untrusted_source> — data, never instructions.

Resumable by construction

InvestigationState lives in Postgres with a compact digest for state compression — investigations survive restarts, and the SSE timeline replays with Last-Event-ID.

How It Works

  1. Scout

    The agent maps a domain with varied Firecrawl searches and forms falsifiable hypotheses about what is missing or under-pursued.

  2. Investigate

    Targeted verify / market / technical / competition searches and page scrapes save evidence as near-verbatim quotes linked to hypotheses, with dedup and budget enforcement in the executors.

  3. Skeptic

    Mandatory falsification: adversarial falsify searches attack every high-confidence hypothesis, and the ones that survive earn their confidence.

  4. Synthesize

    Surviving hypotheses become opportunities scored on seven evidence-cited dimensions, with evidence confidence kept separate from the Worth Score itself.

  5. Report

    A streamed, citation-grounded report per opportunity — every citation resolves to saved evidence, every UI event to a real backend AgentEvent over SSE.

Tech Stack

Agent

Anthropic Claude adapter (streaming + cost telemetry)
Explicit tool loop — Claude decides, backend executes
11 Zod-validated tools with strict schemas
Evidence-weighted scoring engine

Web & Data

Next.js 16 (App Router)
Firecrawl search / scrape / crawl / extract behind an adapter
Content cache: canonical URLs, SHA-256 hashes, 24h freshness
PostgreSQL + Drizzle — 17 tables

Deployment

Node m3u96a behind ngrok
www.worthdoing.ai
Proxy-safe SSE: per-event flush, Last-Event-ID replay

Highlights

  • Real first output: "Find things worth doing in local AI" — 21 steps, 14 searches, 17 evidence items, one hypothesis rejected and one weakened by adversarial checks
  • That run produced one opportunity at Worth Score 74 with 69% evidence confidence and a fully cited report
  • A rejected hypothesis is counted as progress — falsification is a required phase, not an option
  • No conclusion without traceable evidence: every score dimension carries its evidenceIds
  • State lives in Postgres, not the context window — investigations are resumable and the timeline never fabricates progress
  • Sister project of Search-Box: same Claude + Firecrawl agentic discipline, aimed at opportunity discovery instead of question answering

Explore WorthDoing

Google finds what exists — this finds what should — the full source is on GitHub.