Hand-over
The same pipeline, as an n8n workflow
Your team owns the result: import the JSON into n8n, add credentials and edit any step without a developer. The scoring code in it is the same logic that runs on this site, checked against it by tests.

Step on this siten8n nodeWhat it does
WebhookLead form webhookPOST from your form, Typeform, Webflow or HubSpot forms
Validate & dedupeCodeEmail format, personal / throwaway inbox, prompt-injection flag
Enrich companyHTTP RequestYour enrichment API — Apollo, Clearbit, a business registry
AI qualifyBasic LLM Chain + Claude + Structured Output ParserIntent 0–40, category, urgency, quoted signals, one-line summary
Score & routeCodeICP fit, tier, owner, stage, SLA — plain JavaScript you can edit
CRM upsertHubSpotUpsert by email, lifecycle stage, lead status, custom score fields
AI reply draftBasic LLM Chain + ClaudeA personal first reply for the route, signed by the owner
NotifyGmail draft · IF · SlackReply saved for review; hot leads ping the sales channel
Or call it as a webhook
The live pipeline takes the same JSON and returns the full run — score, route, CRM calls, reply. Stateless: the public endpoint keeps no CRM, so dedupe only sees what you pass in known.
curl -s https://leads.sepia.software/api/webhook/lead \
-H 'content-type: application/json' \
-d '{
"name": "Sam Rivera",
"email": "sam@coastlinecoldstore.com",
"message": "We have 10 dock doors, drivers wait 2 hours. Can we see a demo next week?"
}'How it's built
Next.js 16 (App Router) · TypeScript · Vercel AI SDK 7 with structured output · Vercel AI Gateway · Zod · Tailwind CSS 4 · n8n 2 export · deployed on Vercel.
Production setup vs. this build
In productionIn this build
Enrichment from Apollo, Clearbit or a registryA sample firmographics table of 20 companies — same lookup contract
HubSpot or Pipedrive over their APIA CRM in your browser; each card shows the exact HubSpot 2026-09 calls
Replies sent from the rep's inbox, alerts in SlackShown as drafts and previews — nothing leaves the page
Queue with retries (n8n, Inngest) and Redis rate limitsOne server run per lead, streamed step by step; in-memory rate limit
For your sales team I would add
- ✓Your ICP and routing rules, tuned on last quarter's won and lost deals
- ✓Real enrichment (Apollo, Clearbit, Firecrawl on the company site) with caching
- ✓Round-robin by territory and rep availability, with re-assignment if nobody calls in 5 minutes
- ✓Reply sent from the rep's own inbox, with a booking link from their calendar
- ✓A weekly report: speed to lead, conversion by tier and source, leads the AI disagreed with
- ✓The same flow in n8n, Make or Zapier if your team prefers to own it there