Skip to content

Repository files navigation

Beat Radar

An AI newsroom apparatus for a single reporter — one sentence of beat prose in; a grounded, self-filtering, self-remembering, self-writing radar out.

Built at Agent Hack Day (Bright Data × Moss, SF, July 18 2026).

What it does

A reporter's job is three jobs: watching dozens of sources, remembering what they've already seen, and writing about what's new. Beat Radar does all three from one input:

  1. Describe your beat — one sentence, plus optional handles/sites to monitor and your own X handle.
  2. Grounded planning — Sonnet 5 plans the radar with live web searches (Bright Data SERP as its search tool), streaming its reasoning and every search into a visible chain-of-thought. The plan lands as editable panels, each aimed at a specific scraping capability.
  3. Live scan — four parallel Bright Data jobs: X profile scraping + Reddit keyword discovery (Web Scraper API, async trigger→poll), Google news search (SERP API), tracked-site fetches (Web Unlocker). Every item is relevance-filtered against the beat by Sonnet — with a written reason for every cut, auditable in the UI.
  4. Stories with two judgments — survivors cluster into cited stories carrying two independent tags: editorial urgency (breaking/developing/context, judged from content) and memory novelty (new/update/seen before, judged against everything the radar has ever indexed in Moss). Slow sources fold in late and stories re-cluster live.
  5. Voice drafting (RAG on yourself) — your own posts are scraped and indexed into Moss tagged isOwn; each story retrieves your 3 most similar past posts as style exemplars and Sonnet drafts the post in your voice — facts from sources, cadence from you, reference posts shown for proof.
  6. Ask your memory — a persistent search bar over everything ever scanned: in-process semantic recall with a live ms readout (~2–5ms) and a keyword↔semantic blend slider.

Sponsor capabilities used

Bright Data — Web Scraper API (X posts by profile; Reddit discover-by-keyword) via async POST /datasets/v3/trigger → /progress → /snapshot polling; SERP API (news search and as Sonnet's grounding tool during planning); Web Unlocker (tracked-site page fetches as markdown).

Moss — one cloud-built semantic index (beat-radar) loaded in-process for millisecond hybrid queries; addDocs upserts on every scan; metadata filtering (isOwn) for voice retrieval; hybrid alpha blending exposed as the UI slider; novelty detection via timestamped recall of prior scans.

Vercel AI SDK + AI Gateway — Sonnet 5 (anthropic/claude-sonnet-5) for planning (streaming tool-loop + reasoning), relevance judging, clustering, novelty judgment, and voice drafting; ai-elements + shadcn for the streamed chain-of-thought UI.

Run it

pnpm install
pnpm dev   # localhost:3000

.env.local:

AI_GATEWAY_API_KEY=…       # Vercel AI Gateway (Sonnet 5)
BRIGHTDATA_API_KEY=…       # raw REST (Web Scraper API)
BRIGHTDATA_API_TOKEN=…     # @brightdata/sdk (SERP + Unlocker)
MOSS_PROJECT_ID=…          # portal.usemoss.dev
MOSS_PROJECT_KEY=…
# MOSS_DISABLED=1          # optional: zero-quota mode, memory features degrade gracefully

Reset demo memory: node --env-file=.env.local --experimental-strip-types scripts/reset-memory.ts

Architecture notes

  • Next.js 16 App Router; all state client-side + one JSON sidecar (.radar-seen.json) preserving first-seen timestamps so re-scans can't erase the "seen before" signal. No auth, no database.
  • Moss client + loaded index + seen-set live on globalThis — Next dev instantiates one module per route, and duplicate loaded-index sessions burn metered runtime.
  • Every AI judgment (plan reasoning, filter cuts, cluster rationale, draft reasoning) is surfaced in the UI — the demo is the audit trail.

About

📡 AI beat radar for reporters: describe your beat, get a live multi-source scan (Bright Data) filtered and de-duped against sub-10ms semantic memory (Moss), then drafted in your voice. Built at Agent Hack Day 2026.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages