---
name: b2b-account-intel
title: B2B Account Intel
short_description: Autonomous B2B target account dossiers, tech stack detection, hiring signals, and personalized outreach angles with zero paid API keys.
description: Autonomous B2B target account dossier, tech stack detector, buyer pain point mapping, and personalized outreach angles.
primary_category: Sales
additional_categories: ["Marketing", "Productivity"]
tags: ["b2b-sales", "account-research", "prospect-intelligence", "tech-stack-detection", "outreach-angles", "web-scraping"]
support_email: hotchows@gmail.com
execution_mode: run_online
execution_time_minutes: 3
llm_model: frontier-default
---

# B2B Account Intel

Autonomous B2B prospect research agent. Given a target company (name or domain)
and an optional buyer role, it scrapes the open web and produces a standalone
dark-themed HTML Account Briefing Dossier plus clean structured JSON for CRM
export.

Zero paid API keys. The entire pipeline runs on free, open-source Python
libraries: `ddgs` (DuckDuckGo search), `httpx` (fetching), `trafilatura`
(main-text extraction), `beautifulsoup4` (title/meta fallback parsing), and
`jinja2` (report rendering).

## When to use

Trigger this skill when asked to:

- Research a target account before outreach or a sales call
- Build a prospect dossier or account brief
- Detect a company's suspected tech stack from public web evidence
- Find hiring and growth signals for a company
- Surface buyer pain points from reviews and community threads
- Generate personalized cold outreach angles for a specific account

## Inputs

- `--company` (required): target company name or domain, e.g. "Linear" or
  "vercel.com"
- `--prospect-role` (optional): the buyer you are pitching, e.g. "VP of Sales",
  "CTO", "Head of Growth". Focuses people-oriented search angles.

## Usage examples

```bash
# Full account brief with JSON + HTML outputs
python scripts/account_researcher.py --company "Vercel" --prospect-role "VP of Engineering" \
  --output account_vercel.json
python scripts/dossier_compiler.py --input account_vercel.json \
  --output-html account_vercel_brief.html

# Quick company-only scan (no role focus)
python scripts/account_researcher.py --company linear.app --output account_linear.json
```

## What it collects

Search angles (all via DuckDuckGo, no paid APIs):

1. Company overview and product positioning
2. Recent press and funding signals
3. Suspected tech stack from engineering blogs, job posts, and stack-profile sites
4. Hiring momentum and open-role signals
5. Customer pain points from reviews, forums, and comparison pages
6. Prospect-role-specific pages when `--prospect-role` is supplied

The researcher then mines the extracted page text for:

- `signals.tech_stack`: matched technology names with mention counts and evidence URLs
- `signals.hiring`: hiring-related sentences with source URLs
- `signals.funding`: funding and press sentences with source URLs
- `signals.pain_points`: buyer pain sentences with source URLs

## Outputs

1. Structured JSON (CRM-ready): company, prospect role, timestamp, full source
   list with extracted text, and the derived signal groups above.
2. Standalone HTML Account Briefing Dossier: Hotchows-branded dark theme with
   executive summary, tech stack badges, hiring momentum indicators, pain point
   list, 3 personalized outreach cold-pitch angles, and the raw evidence table.

## Execution constraints

- Zero paid APIs, zero API keys, zero logins. Public web only.
- Polite crawling: 1.5s pause between searches, 0.75s between page fetches,
    20s HTTP timeout, binary and document extensions skipped.
- Honesty rule: outreach angles are assembled only from sentences actually
  found in scraped evidence, each carrying its evidence URL. No fabricated
  metrics, headcounts, or funding numbers.
- Some sites (G2, Trustpilot, Medium) return 403 to plain HTTP clients; the
  researcher logs and skips them rather than spoofing past blocks.
- Output text is evidence-grade: verify before strategic decisions.

## Exit codes

- 0 success, 1 runtime failure, 2 bad arguments or missing input file
