Didi crawls the web — three targets, one relevance brief, candidates never writes
The workbench's 🤖 era begins: one organization.crawl capability (Sonnet + Anthropic server-side web search) crawls for relevant identity links, pulse streams, or team members, steered by a per-workspace operator-editable relevance brief — proven live against Aspen in 65 seconds with the brief visibly shaping what came back.
Didi crawls the web
What shipped (#33)
The operator's insight driving the whole build: web-search-equipped agents
get this retrieval shape mostly right, quickly — so the manual
query-composing 🔍 gains an agentic sibling. One capability,
organization.crawl, served by prompt-runner (the LLM gateway): a single
Sonnet turn with Anthropic server-side web search composes the queries,
searches, filters by the relevance brief, and returns candidates — never
writes. Three targets:
"crawl for relevant identity links" → 🤖 on the links list → the search-and-add rail's new crawl mode (scan-mode's twin: no term bar, same results list, per-row ➕ — now carrying the model's
kindinto the write instead of re-inferring it)."crawl for relevant pulse streams" → same door; a stream's real title ("Today's Credentials") rides the ➕ as its
name."crawl for relevant team members" → 🤖 on People → candidates stage in the new
StagedPeoplesection: accept runs the candidate check — no-match rows flow straight throughperson.apply+person.affiliate(team-page URL as the observation's source), ambiguous rows open the pick-or-create gate. The people-policy filter is never silent (filtered_noterenders under the staged rows).
The relevance brief
relevance_briefs in SurrealDB behind client.brief.get/set — one prose
document per workspace client carrying the topical scope and the people
policy, edited in place via the workbench header's 📋 panel, loaded
server-side into every crawl so the button door and the (chat-legal, per
CHAT_CAPABILITY_NAMES) chat door read the same intent. reach-edu's brief
is seeded with the operator's stated policy: education & workforce
development, all major leadership plus covering team members.
Proven live
Smoke over NATS against the Aspen safe target: brief upsert + read-back clean; the links crawl returned in 65 seconds with 8 correctly-kinded candidates, all deduped against what the org already had — and one that only a brief-steered agent would rank: the Education & Society Program's LinkedIn, tagged "directly relevant to education and workforce development focus." Candidates only; the canonical layer untouched.
Typechecks and svelte-checks clean across three services and both remotes; all three service containers rebuilt. Remaining human rung: the operator walk-through (crawl a thin org's three lists end to end; edit the brief and watch selection change) — and the chat-rail conversational door rides the didi-chat team-page plan.
