Inbound lead intake and CRM relay
For a medium-sized B2B SaaS team, every website request enters a validated, researched and sales-ready workflow connected to HubSpot.
Case note
Every form submission creates one lead in Supabase. The workflow validates, researches, decides spam risk and only syncs HubSpot when the record is sales-ready.

Use case
Turn every website request into a sales-ready workflow
Leads enter from website forms, campaign landing pages and referral or contact pages. Each submission is captured once, checked against clear rules, enriched with public context and routed either to HubSpot and the sales inbox or to internal review. The goal was not to reply to every submission automatically; it was to give the sales team each relevant lead with context, priority, a recommended next action and a clear reason to trust the data.
Result: HubSpot receives only validated leads, while the sales team gets the priority, likely need and recommended next action without researching each lead from scratch.
Workflow map
Lead intake from form to CRM
The view keeps the production logic and omits only internal status logs so it is easy to read.
Main database: Supabase
The workflow uses Supabase as the source of truth: it stores each record, status, and key event so the team can see what happened, retry failures, and debug without searching every tool.
Tool icons
The starting point
A medium-sized EU B2B SaaS company received demo and contact requests from website forms, campaign landing pages and referral pages. The leads were captured, but they were not sales-ready: someone checked the inbox, copied fields into HubSpot, researched the company, estimated urgency, assessed whether the submission was spam and then notified the owner. Response quality depended on who saw the lead first.
The diagnosis used real volume, connected tools, decision points and exceptions. The question was not only what to automate, but what proof would show that the workflow had completed correctly. The operating proof mattered as much as the automation.
The implementation
Ductio made Supabase the source of truth for every form submission, then built a processor that checks required fields, assigns priority, gathers company and contact evidence, researches public context, prepares a sales brief, assesses spam risk and routes validated leads to HubSpot and the sales inbox. Risky leads stay out of HubSpot and go to internal review; replying NOT SPAM resumes the normal path.
The implementation separated rules, free-text context, human decisions and external effects. That let the system improve daily work without turning every exception into a black box. AI as support inside the process, not as autopilot.
What was used
Tooling was chosen from the process outward, not from a pre-decided technical preference. Each piece needed a clear owner, a stable integration path and a simple way to inspect errors.
In practice, the build combined Website form, Supabase, Python/FastAPI, OpenRouter, Tavily, HubSpot, Resend. The tools visible to the team stayed close to their daily work, while integration logic was documented and kept separate from sensitive commercial decisions.
The improvement showed up in daily work.
Rather than treating the result as a dashboard, the team felt it in three specific moments: less manual preparation, less context hunting, and fewer doubts about who needed to act.
Lead prep: Average sales prep for each qualified inbound lead moved from 30-45 min to <5 min.
Admin load: Manual copying, lookup, routing and CRM cleanup moved from 9 h/wk to 2 h/wk.
Context quality: Sales context, source trail and likely need available before follow-up moved from Variable to Consistent brief.
Before/after proof
What changed in the operation
Before
After
Visible artifacts
- Lead event run log
- HubSpot timeline note template
- Resend sales-notification example
- Spam-review email with NOT SPAM recovery
- Weekly lead digest
Controls
- Clear validation rules before AI summary
- Spam branch skips HubSpot until reviewed
- NOT SPAM reply resumes the same CRM path
- Every major step writes an event
- Manual retry endpoint for one lead
What changed after launch
Sales stopped assembling context manually. Qualified leads arrived as clean HubSpot records with a short sales note, likely need, recommended next action and source trail. Risky submissions stayed out of the CRM until reviewed, and a weekly digest made lead flow visible without checking multiple systems.
The result was not only saved minutes. The team gained a shared sequence for reviewing inputs, understanding context, deciding, acting and checking that the workflow had been recorded. 7h/week saved
The workflow in one line
How it was built
The workflow sends website form submissions to Supabase, applies explicit validation rules, uses Tavily for public research and OpenRouter for the sales summary, creates the required contact, company, deal, task and note records in HubSpot, and uses Resend for alerts and the recent-lead digest.
The stack was pragmatic: Website form, Supabase, Python/FastAPI, OpenRouter, Tavily, HubSpot, Resend. Tools were chosen for ownership, integration and maintainability, not for theater. The result is a system the team can understand and operate.
What was delivered
- Form intake
- Lead event log
- CRM sync
- Fit scoring
- Spam review
- Sales digest
- Lead prep moved from 30-45 minutes to under 5 minutes for qualified leads.
- HubSpot stayed cleaner because spam-risk submissions no longer created sales records automatically.
- Manual lead admin dropped from roughly 9 hours/week to roughly 2 hours/week during the measured period.