Chris Olson b4e3ed9d9b Batch LLM calls per account; add 5 pilot accounts
- Relevance filter: evaluate all of an account's signals in one LLM call
  (keyed array, chunked at 8) instead of one call per signal.
- Synthesizer: produce all of an account's briefs in one call (one object
  per capability) instead of one call per capability. ~2 calls/account.
- llm: wrap JSONDecodeError in LLMError so callers fall back to mock instead
  of crashing; disable Gemini thinking (thinkingBudget=0) to stop thinking
  tokens truncating JSON; add 429 backoff.
- accounts: add Booz Allen, Dominion Energy, Hope Gas, Markel, GW Medical
  Faculty Associates (verified domains; CRM tier captured in crmTier).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:16:08 -04:00

Prospecting Agent Loop

A closed-loop, account-intelligence system for enterprise sales prospecting: it monitors a list of target accounts, harvests business signals (news/web today; LinkedIn, job postings, and filings to come), evaluates them against a structured Capability Library of sellable products, and routes scored, signal-grounded opportunity briefs to the right rep — with rep feedback flowing back into scoring.

Contents

Status (MVP)

  • End-to-end loop runs: harvest → normalize/dedup → relevance filter → synthesize → score → deliver → feedback → recalibrate.
  • Capability Library seeded with 40 real Broadcom + VMware capabilities.
  • News connector: live Exa.ai with hard request ceilings (free-plan safe).
  • LLM reasoning: provider-agnostic (Gemini or Anthropic), with an offline mock fallback so the pipeline runs without a key.
  • Pilot accounts: 7 real companies wired in (~200 to follow).

Secrets live in sales-agent/.env (gitignored). See sales-agent/.env.example.

Quick start

cd sales-agent
cp .env.example .env      # add your keys (Exa, Gemini/Anthropic)
python3 run.py loop       # run the loop
python3 run.py digest     # per-rep daily digest
Description
No description provided
Readme 310 KiB
Languages
Python 100%