zerobusywork.io
← all posts
2026-02-14ai-agents10 min

Detecting buying signals with Python and Claude: full architecture

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

// cta

Want a system like this one built for your team?

Book a call