Project 01 / Demonstration build
Two lead sources, one HubSpot pipeline
Two intake sources feed one workflow. It filters junk, adds company context, and routes each lead to a rep.
Category: Lead intake · Designed outcomes, not measured client results.
Loom recording not available yet.
Who this is for
Businesses that receive inquiries from website forms or Facebook lead ads. A rep needs the contact details and company context in one place.
The problem
Example client brief
“Leads come in from the website and from Facebook. Someone reads each one, works out if it is real, looks the company up, and forwards it. When they are busy, leads sit. When a duplicate comes through, we call the same person twice.”
- Web form or Facebook lead arrives
- Checked, enriched, scored
- Saved in HubSpot, routed to a rep, logged
Designed outcome
Every real lead reaches a rep with context. Junk never does. Nothing gets dropped silently.
What the workflow does
- A website form and a Facebook Lead Ads form feed the same intake webhook.
- Required-field checks, disposable email checks, and spam rules filter the input. Rejected entries are logged with a reason.
- A Python step fetches the public company website. Requests have timeouts and rate limits. Private network addresses, login walls, and unsafe redirects are excluded.
- Claude extracts what the company does, its stated location, its services, and any supported size information. Missing facts remain unknown. Page text is treated as input data, not instructions.
- A rules layer scores the lead. The rules are visible in the workflow and separate from the extraction prompt.
- HubSpot contact and company records are created or updated. A deal goes into the selected pipeline stage. Enrichment fields are written to custom properties.
- Slack sends the assigned rep the contact and company summary. Google Sheets records each accepted or rejected lead and its processing status.
Tool boundary
The HubSpot account must support the properties and pipeline setup used in the build. This design does not depend on HubSpot running the workflow. Enrichment is optional to delivery. A company website failure must not block a lead from reaching a rep.
Failure handling
When it breaks
The same Facebook lead arrives twice.
The workflow matches the email and source event to the existing record. It updates that record and sends the rep one alert.
The enrichment fetch times out.
The lead reaches HubSpot and Slack with an “enrichment pending” tag. The website lookup runs again later.
HubSpot rate-limits a write.
The write stays in a queue and retries after a delay. A queue stuck for ten minutes triggers an alert.