Rebuilding the intake layer so the funnel filtered instead of flooded
Contact-sales forms were admitting spam, students, and fake job titles as MQLs. Built four layers that now gate qualification: standardized job data, lead-to-account matching before CRM ingestion, automated quality controls at intake, and an AI validation layer for the ambiguous cases rules couldn't classify.
Led the design and build of the qualification infrastructure end to end — job-role data model, lead-to-account matching workflows, automated rejection logic across forms and email validation, and the AI validation layer.
The problem
The funnel was optimized for volume, not quality. Students, competitors, spam, and invalid records qualified as MQLs, flooding sales with noise and making true funnel performance impossible to read. Cleanup happened downstream, after the damage to trust was already done.
Context
Leads entered the funnel from contact-sales forms with inconsistent job data, unverified contact information, and no quality enforcement at intake. Every submission became a potential MQL regardless of role validity, account fit, or whether the person was real.
Constraints and complexity
Quality controls had to run at intake without adding friction for legitimate buyers, and had to hold across multiple product lines with different ICPs and buying motions.
Illustrative diagram
Quality enforced at intake rather than cleaned up downstream.
What I did
How I approached it
- 01Traced junk MQLs to their originRather than tuning the scoring model downstream, where the damage was already done.
- 02Separated the failure modesBad job data, missing account context, invalid contact details, and genuinely ambiguous records are four different problems.
- 03Moved quality control upstreamFrom post-submission cleanup to intake-level enforcement.
- 04Reserved AI for the residualOnly the cases rules provably could not classify.
What I built
Supporting materials
Validation logic


Diagrams and figures are representative. Proprietary architecture, internal system names, and confidential customer details are omitted or generalized.