Chris Olson 2374ef137d Add OpenAI-compatible LLM provider (URL/model/key configurable)
- New provider 'openai' calls any OpenAI-compatible /chat/completions endpoint
  (OpenAI, OpenRouter, Together, Groq, NVIDIA, vLLM, Ollama, ...), set via
  OPENAI_BASE_URL / OPENAI_API_KEY / OPENAI_MODEL. Now the default; auto-detects.
- Robustness for models that degenerate (e.g. Kimi repetition loops): anti-
  repetition sampling (temperature + frequency penalty), and a schema-aware
  retry — call_json(require_keys=...) retries a fresh sample on degenerate or
  unparseable output (LLMRetryable). Relevance requires 'signals', synth 'briefs'.
- response_format=json_object (toggle via OPENAI_JSON_MODE); base URL accepts a
  full /chat/completions URL or a /v1 base.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:19:52 -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%