Build a Lead Gen Machine with DenchClaw, Part 3: Qualify
Part 3 of 5: Qualify leads with AI scoring in DenchClaw. Build a scoring model using DuckDB, define your ICP, and prioritize the leads worth calling.
Build a Lead Gen Machine with DenchClaw, Part 3: Qualify
This is Part 3 of the Build a Lead Gen Machine series. In Part 1 we captured leads. In Part 2 we enriched them. Now we qualify them — figuring out which leads are worth a rep's time.
Qualification is where most lead gen systems fail. They either:
- Throw every lead at the sales team and let them waste time on bad fits
- Use a rigid qualification checklist that misses good leads that don't fit the form
DenchClaw gives you something better: a flexible scoring model you control, built in DuckDB, augmented with AI judgment.
What Qualification Means Here#
We're not doing BANT calls here. We're doing automated pre-qualification — scoring leads based on available data so reps know who to call first.
A qualified lead scores high on:
- Fit — Do they match your ICP?
- Intent — Are there signals they're actively looking?
- Timing — Is this the right moment to reach them?
- Reachability — Do you have a valid way to contact them?
Step 1: Define Your ICP in DenchClaw#
Your Ideal Customer Profile is the foundation of any scoring model. Write it out:
Create a document called "ICP Definition" with our ideal customer profile:
Target company:
- Industry: SaaS, Fintech, Ecommerce
- Size: 20-200 employees
- Stage: Seed to Series B
- Location: US, EU, UK
Target contact:
- Role: Founder, VP Sales, Head of RevOps, Sales Manager
- Seniority: Senior Manager and above
- Signs of buying authority: mentions "budget", "tool evaluation", "looking for alternatives"
High-intent signals:
- Actively hiring SDRs or sales ops
- Recently raised funding
- Using a competitor (HubSpot, Salesforce) - indicates CRM budget
- Expressing frustration with current CRM on LinkedIn
Step 2: Build a Lead Score Formula#
Add a scoring action to your Leads object:
Add an Action field called "Calculate Score" to Leads that scores each lead from 0-100 based on:
Fit score (50 points max):
- Industry match (SaaS/Fintech/Ecommerce): +15
- Company size 20-200 employees: +15
- Stage Seed-Series B: +10
- Role is Founder/VP/Director: +10
Intent score (30 points max):
- Hiring SDRs or sales ops: +10
- Recently raised funding: +10
- Using a competitor CRM: +10
Reachability score (20 points max):
- Has valid email: +10
- Has LinkedIn profile: +5
- Located in US/EU/UK: +5
Update Lead Score field and add a brief score justification to Notes.
Step 3: Run Scoring in Bulk#
Calculate scores for all leads with Status = "Enriched"
After scoring, update their status:
For all scored leads:
- Score 70+: Status = "Qualified"
- Score 40-69: Status = "Marginal"
- Score <40: Status = "Disqualified"
Step 4: DuckDB-Based Scoring (Faster)#
For very large lead volumes (1,000+), use a DuckDB SQL scoring query instead of per-record AI scoring:
Create a DuckDB view called v_lead_scores that calculates a numeric score for each lead based on:
- Industry matching our ICP: +15
- Company size 20-200: +15
- Funding stage Seed/Series A/Series B: +10
- Role keyword match (Founder, VP, Director, Head): +10
- Email not empty: +10
- LinkedIn URL not empty: +5
Update the Lead Score field from this view nightly
SQL scoring runs in milliseconds on the entire database. AI scoring is slower but handles unstructured signals (LinkedIn activity, job posting text).
Combine them: SQL for structured fields, AI for the qualitative signals.
Step 5: Create Prioritized Rep Views#
Now give your reps exactly what they need:
Create a view called "Top Leads — Act Now" showing leads with:
- Lead Score >= 70
- Status = "Qualified"
- Status not = "Converted"
- Sorted by Lead Score descending, then Added Date ascending
Create a view called "Marginal — Review" showing leads with:
- Lead Score 40-69
- Status = "Marginal"
- Sorted by Lead Score descending
The first view is your rep's daily hit list. The second is their secondary review. Disqualified leads drop out of active views entirely.
Step 6: AI Qualification Interview#
For your top leads, go deeper with an AI qualification interview:
Run a qualification review on the top 10 leads in "Top Leads — Act Now". For each lead, give me:
1. Why they scored high (specific signals)
2. Key objections they might have
3. Best angle for initial outreach
4. Suggested subject line for first email
This turns raw scoring into actionable insight. Your reps walk into the outreach phase knowing exactly what to say.
Step 7: Feedback Loop#
Scoring only improves if you track outcomes. After each outreach:
Update lead [name] with outcome: [replied/no reply/unsubscribed/converted]. Add this to the outcome field.
Monthly analysis:
Show me average lead score by outcome. What's the minimum score for leads that converted to opportunity?
Use this to tune your scoring thresholds. If leads scoring 60+ are converting at the same rate as leads scoring 80+, lower your "Qualified" threshold.
Step 8: Manual Override#
Scores are guides, not gates. Any rep should be able to manually qualify or disqualify a lead:
Manually qualify this lead — she's a warm intro from an investor, low score because we don't have her company data yet
Disqualify this lead — they're our competitor, remove from active outreach
Manual overrides log a note and update the status without going through the scoring formula.
What's Next#
You now have a qualified lead list: scored, prioritized, and with enough context for your reps to personalize outreach. In Part 4, we build the outreach system — AI-written emails, automated follow-ups, and LinkedIn touchpoints.
Continue to Part 4: Outreach →
Frequently Asked Questions#
How do I know if my scoring model is right?#
Run it for a month and track conversion rates by score range. If leads scoring 40-60 convert at the same rate as 70-90, your scoring isn't discriminating well enough. Add more differentiating signals.
Can I A/B test different scoring models?#
Yes. Create two "Lead Score" field variants and apply different formulas. Track outcomes for each cohort. After 100+ leads, compare conversion rates.
What if I don't have enough enrichment data to score accurately?#
Score what you have. A partial score is better than no prioritization. Flag low-confidence scores: "Score 45, low confidence — insufficient enrichment data."
How do I handle leads that come in already qualified (e.g., hot inbounds)?#
Create a fast-track status: "Hot Inbound". These leads bypass the scoring queue and go directly to a rep within the hour.
What's the right cadence for re-scoring leads?#
Re-score leads if: (a) new enrichment data arrives, (b) they show an intent signal, or (c) it's been 30+ days since last score and the lead is still in the pipeline.
Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →
