1---2name: site-prospector3description: Find local businesses worth pitching a free demo website to, present them with honest reasoning, let the user pick, then for each: verify the facts, build a site via site-forge, deploy it, and draft tailored multi-channel outreach — logging everything to a bounded ledger. Use whenever the user wants to find prospects, leads, or candidates for web-design / demo-site outreach, scout local businesses with no or weak websites, run client-finding for the website business, or "find someone to pitch" — even without saying "site-prospector". Runs autonomously and orchestrates site-forge for the build.4---56# Site Prospector78<objective>9The front of the local-website business: find businesses that would benefit from10a free demo site, surface them with honest reasoning, and — for the ones the11user picks — verify the facts, build and deploy a site, and produce ready-to-send12outreach. It **orchestrates `site-forge`** for the build (Claude invokes it; they13hand off via a shared brief file) and keeps a **bounded ledger** so the pipeline14never loses state and never grows forever. Truth discipline is core: claims get15verified or labeled, and demo sites carry a not-affiliated disclaimer.16</objective>1718<context>19@ledger/index.md20@references/adam-operation-context.md21</context>2223<execution_context>24Autonomous by default — a hands-off finder→builder. Required stops: (1) the user25picks which candidates to pursue (Phase 2), and (2) anything that sends or26publishes externally.27- 🟢 Auto: search, evaluate, fact-verify, write the brief, invoke site-forge (in28 `auto`), deploy the demo, draft outreach, update the ledger.29- 🟡 Ask: which candidates to build (always); **every deploy, immediately before it**30 (default is local preview; deploy only for a paying client or a scheduled demo);31 repointing form leads; custom domains.32- 🔴 Never: send/publish outreach without explicit go (drafts only); publish a33 flagged-unverified claim without the demo disclaimer; pay for anything.34Quality note: each demo is built as well as is *autonomously* reachable, then a35per-site "upgrade to full" flag is surfaced so a winner can be re-run with36`site-forge full` for Gemini/Veo media.37</execution_context>3839<process>4041<phase name="1_scout">42## Phase 1 — Scout candidates43**Read `references/scouting-doctrine.md` first, and read section 2d (THE CONVERTING-LEAD PROFILE) before anything else in it: that section is derived from 5 interested vs 19 declined across 79 real calls and it OUTRANKS every other heuristic in the file when they conflict. In one line: an ESTABLISHED trade (often 10+ yrs) hustling for leads on Nextdoor / local FB groups / GreenPal, with ZERO or ONE review, NO Google Business Profile, and either no site or a dead domain they still own. Not 'no online presence' but maximum effort, zero owned assets. You cannot find these people on Google because their absence from Google IS the gap, so hunt Nextdoor and community groups, not the map pack.** It is also the canonical scope + rubric (supersedes the older `candidate-search.md`). Scope: state-wide except the two largest metros; RURAL small towns weighted UP; the full spread of local verticals (not just home services — see the catalog: marine, rural land/structure/mechanical/ag, guides/makers, auto, pets, food, professional, events, etc.). Priority order **(reordered 2026-07-28 on live call evidence — the old list led with NEW, which was wrong)**: (1) **owner is already marketing themselves** and posting personally in the last 30 days (proved demand — this is the strongest predictor of a reply), (2) **established 2+ years with few reviews and no Google Business Profile** (a concrete free-to-fix gap they usually already know about), (3) no website or a broken/parked/ugly/outdated one, (4) bonus older/non-tech owner and/or rural. **NEW/recently-opened is no longer a top signal** — the the state corporate registry daily feed is the most-scraped list in the state, so weeks-old LLCs answer with AI screeners; keep that lane for text/Messenger or the cross-reference play, not cold calls.44Find businesses via jina/web/maps + the **verified state-data pipelines** in the doctrine (the state corporate registry daily filings + fictitious-name/DBA feed off the public SFTP; the state licensing board weekly licensee downloads; the state wildlife/marine licence registry charter licenses). Strongest signal: a real, reputable business with **no working website or a parked/for-sale domain** — and clear G1 by the permutation + fetch-and-read method (doctrine 2d), never from search results and never from an HTTP status. Score each candidate with the doctrine's 0-100 rubric (gates → factors A-G → modifiers → bands 75+/60-74/45-59). Require a findable owner channel (an FB page with recent posts) as a HARD GATE, not a scoring factor — the 2026-07-28 Tier 1 sweep produced 0 engagement from 10 calls largely on unreachable/unverifiable owners. Gather per candidate: name, owner, contact channels, current web presence (or lack), score+band, and one specific honest hook.45</phase>4647<phase name="2_present_and_pick">48## Phase 2 — Present + pick49Present candidates with **honest reasoning** (hook, reputation reality, fit,50ease) using the rubric in `references/scouting-doctrine.md`. Let the user pick one51or more (AskUserQuestion). No cheerleading — surface the weak ones as weak.52</phase>5354<phase name="3_verify">55## Phase 3 — Verify facts (truth discipline)56Before building, verify each pick — license, ratings, affiliations, years,57entity identity — per `references/fact-verification.md` (the state corporate registry, the state licensing board, BBB,58manufacturer locators, Yelp/BuildZoom; watch the same-name entity trap). Mark59each claim **verified** or **aspirational**; aspirational claims may go on a60*demo* with the disclaimer, never presented as fact.61</phase>6263<phase name="4_build">64## Phase 4 — Build (orchestrate site-forge)65Per picked business, write/update its ledger entry `ledger/active/<slug>.md`66(details, verified facts, hook, voice, assets — the entry doubles as the build67brief, so there's one file, not two). Then **invoke the `site-forge` skill in68`auto` mode**, pointing it at that file. site-forge owns the build — do not69duplicate its recipes here. If `site-forge` isn't installed, say so and offer to70install/locate it.71</phase>7273<phase name="5_deploy">74## Phase 5 — Deploy (GATED) + disclaimer75**Do not deploy by default.** Builds stay local until the user asks, in the moment, for76a live URL. Once approved, site-forge deploys; confirm the live URL and that the demo carries the77not-affiliated disclaimer. Record the URL.78</phase>7980<phase name="6_outreach">81## Phase 6 — Tailored outreach (drafts only)82Generate a copy-pastable outreach page with `scripts/outreach-page.sh` —83sequenced FB DM → email → text, cross-referenced, with timing + one follow-up —84per `references/outreach.md`. **Draft only; never send.** Pricing/positioning in85`references/monetization.md`.8687**Commercial / B2B is out of scope for the default scout.** This skill targets B2C: a homeowner searches and calls. If the user asks about commercial work (HOA and property management, GCs, facility managers, municipal bids), none of the B2C stack applies and it is a list problem rather than a search problem. Read `references/commercial-b2b.md` before answering.8889**Paid ads / conversion tracking is also out of scope for the default offer, and there is an objective reason to decline it.** If the user asks about Facebook/Google ads, CAPI, pixels, closed-won attribution, cost-per-lead, or a prospect probes them on it, read `references/paid-ads-and-attribution.md` first. Short version: the current stack is organic (GBP + local SEO + reviews), the honest answer to "are you feeding closed-won back via CAPI" is **"neither, I don't run paid acquisition"**, and ad platforms need roughly **50 conversions/week** to optimize at all — which a trade doing 30 jobs a month will never reach. Never bluff competence on paid acquisition; it collapses in two follow-up questions.90</phase>9192<phase name="7_ledger">93## Phase 7 — Ledger update94Append/update the entry per `references/docs-ledger.md`: status, URL, verified95facts, outreach drafted, decisions, $. Apply the rolling-window bound (recent96entries full; older compacted to one-liners in `ledger/archive.md`).97</phase>9899</process>100101<saved_rules_format>102Accumulate learnings in `ledger/lessons.md` (durable). Format:103`- {topic}: {rule} — set {YYYY-MM-DD ET}`104e.g. "channel: FB DM first for solo trades", "verify: same-name LLC trap is105common", "skip: businesses with a current modern site". Surface relevant rules106at the start of a run.107</saved_rules_format>108109## Bounded ledger (never grows forever)110- `ledger/index.md` (@-loaded): one line per business — slug · status · URL ·111 last-touched. Pruned to the most recent ~30; older roll to `archive.md`.112- `ledger/active/<slug>.md` — full entry while in-flight.113- `ledger/archive.md` — one-liners for closed/cold businesses.114- `ledger/lessons.md` — saved rules.115Format + rollover rule: `references/docs-ledger.md`.116117<recovery_protocol>118Interrupted mid-scout → resume from candidates in `ledger/active/`. Mid-build →119check whether the site-forge run produced a deploy; resume from Phase 5.120Mid-outreach → the drafts page is idempotent; regenerate. Never re-send (drafts121only, nothing to double-send).122</recovery_protocol>123124<error_handling>125- `site-forge` not installed → surface; offer to install/locate. Never inline its126 build logic.127- Fact sources blocked/empty → fall back to a researcher agent; an unverifiable128 claim stays aspirational, never asserted.129- Same-name entity ambiguity → stop and confirm identity before building.130- Ledger index > ~30 entries → roll oldest to `archive.md` (one-liners).131</error_handling>132133<success_criteria>134- [ ] Candidates presented with honest, evidence-based reasoning.135- [ ] User explicitly picked which to pursue.136- [ ] Facts verified or labeled aspirational; demo carries the disclaimer.137- [ ] Site built via site-forge (not re-implemented here) and deployed.138- [ ] Outreach drafted (never sent), sequenced + cross-referenced.139- [ ] Ledger updated; index bounded; lessons captured.140</success_criteria>