← Back

Buyer Classifier

Searches, sources, consolidates, researches, and ultimately scores a list of likely acquirers for a given transaction. Technically a workflow of the firm harness — but important and specific enough to warrant its own page.

System Architecture
+-----------------------+ +-----------------------+ | | | | | PITCH TOOL | | AGENT HARNESS | | (deal-intel) | | | | | POST /buyers | | | Buyer List tab |----+/research +------+| buyer-sourcing + | | 8+ sources, dedupes | (chunk ~15) | criteria scoring | | tracks scored state | | guards + budget | | upserts verdicts |+-----+ verdicts +-----| MCP tools: | | | | - HubSpot | +-----------------------+ | - Perplexity | | +-----------------------+ | | | +------------------------+ | +-------->| POSTGRES (shared) |<----------+ | buyers (master) | | pitch_buyers | | pitch_research_jobs | +------------------------+
Data Flow
+--------------+ +--------------+ +--------------+ +--------------+ | | | | | | | | | SOURCE |----+| DEDUPE |----+| SCORE |----+| SYNC | | | | | | | | | +--------------+ +--------------+ +--------------+ +--------------+ | | | | v v v v +--------------+ +--------------+ +--------------+ +--------------+ | CRM lists | | resolve vs | | harness: | | check vs | | our buyer DB | | master table | | criteria + | | HubSpot list | | PE-DB files | | (id, domain, | | web research | | push buyers | | web sourcing | | name); flag | | quick pass: | | + status | | mkt updates | | prior passes | | deal context | | chips; find | | manual adds | | per pitch | | only-new opt | | contacts | +--------------+ +--------------+ +--------------+ +--------------+
Process Steps
01

Assemble from 8+ sources

CRM transaction lists, our own buyer database (masters AI-matched to the pitch's industry), PE-database exports (Mergr, Private Equity Info — deterministic parser with an AI fallback), agentic web-sourcing runs, buyers extracted from uploaded bank market updates, and manual adds. Every row carries an origin chip.

02

Dedupe on the way in

Each arrival resolves against the master buyer table — CRM id, then domain, then name — and enriches the existing record instead of duplicating it. Prior-pitch flags warn when a buyer was rejected or passed on a previous engagement.

03

Score against criteria via the harness

The banker sets a criteria rubric; candidates stream to the harness in small batches (~15). Unknown buyers get verified — site fetch, CRM and web lookups — before they're judged. Verdicts come back Top / Other / Not-a-fit with an evidence-backed reason. Nothing is silently dropped.

04

Quick re-score, no web

A faster pass scores batches of ~30 against the deal context alone: company profile, market research, and themes from uploaded industry reports. It can target only never-scored rows, so fresh imports get verdicts without touching the rest. Banker-decided rows are never re-scored by either path.

05

Round-trip with the CRM

Every row checks against the HubSpot engagement list — on-list state, per-deal outreach status, sponsor state for PE-backed platforms. One click pushes a buyer onto the list and kicks off contact enrichment. HubSpot stays the source of truth for outreach.

Stack

Python FastAPI Claude API Anthropic MCP Perplexity HubSpot API PostgreSQL Render
Two authenticated services on one shared database. Bearer-guarded on every call.