Job posts, changelogs, and tech-install data go in. Scored, deduplicated signals land in HubSpot. This is the full architecture of the system, component by component.
The pipeline
- Collectors. Python services poll job boards, release feeds, and tech-install datasets on a schedule. Each collector emits raw events into a staging store with a source and captured-at timestamp.
- Classifier. Claude reads each raw event and answers three questions: is this a buying signal for the ICP, which account does it belong to, and how strong is it. Structured output, no prose.
- Deduper. The same funding round shows up in four feeds. Events collapse on account plus signal-type plus time window before they're allowed to score.
- Scorer. Signals decay on a half-life. An account's score is the sum of its live signals, so the ranking stays fresh without manual pruning.
- Writer. Anything above threshold lands in HubSpot as a scored signal on the account, with the evidence attached.
The false-positive rate I settled for
Precision and recall trade off, and for outbound the cost of a false positive is an email that makes no sense. I tuned the classifier prompt until false positives sat under one in ten, and accepted the recall hit. Missing a signal costs nothing visible. Sending nonsense costs the domain.
Draft post. Prompts and component code will be published with the walkthrough video.