← Blog
7 min read

AI lead scoring trained on your actual closed-won deals

Generic scoring decays. Custom models trained on your win history sharpen every quarter. Here is the data plumbing that makes it work.

V
Vikesh Tiwari, Founder, TexAuBuilding the GTM Spreadsheet Engine. Previously built TexAu V1 and V2, survived two cease-and-desists, and still shipping. From Bombay Slums.

The problem with ICP scoring

Every B2B company has an ICP doc. Every B2B company's actual closed-won list looks different from the ICP doc. The deals you actually win cluster differently than the ideal-customer slide says they should.

We've seen this pattern in customer after customer:

  • ICP doc says: target SaaS, 100–500 employees, US-based.
  • Closed-won data says: 60% of last year's wins were SaaS, but 25% were agencies (which the ICP doc explicitly excludes), and the median headcount of a winning account is 40, not 250.
  • Generic ICP scoring penalizes leads that look like the actual winners. The marketing team chases the wrong segment for another quarter.

The fix isn't a better ICP doc — it's a scoring model trained on the ground truth your wins already produced. Three steps, 30 minutes, no data-science team required.

What you'll build

By the end of this post:

  1. A scoring model trained on your closed-won data from HubSpot or Salesforce.
  2. Every new lead in your TexAu workspace scored 0–100 with the top three reasons.
  3. The model auto-retrains monthly as your win pattern evolves.
  4. Score and reasons sync to your CRM as custom fields, visible to reps.

Total time: 30 minutes for setup. After that, ongoing maintenance is monthly model review — about 10 minutes.

Prerequisites

  • TexAu account on Pro tier or higher (AI scoring is a Pro+ feature; the free tier ships a default-ICP scorer for evaluation).
  • HubSpot or Salesforce connected to TexAu.
  • At least 50 closed-won deals labeled in your CRM. Below 50, the model still works but generalizes hard from a small sample.
  • Optional: closed-lost deals labeled separately. Helps the model learn negative signals, not just positive ones.

The 50-deal floor is a soft minimum, not a hard one. Below 50, expect the model to underweight signals you'd want it to catch. Above 200, the model gets meaningfully sharper. We'll be transparent about the confidence interval at every stage.

Step 1 — Connect your CRM and label your training data (10 minutes)

In TexAu, go to Integrations → CRM → HubSpot/Salesforce. OAuth-connect your account.

Once connected, navigate to AI Scoring → New model. The model setup wizard walks you through:

What's positive (closed-won)

The wizard pulls a list of your closed-won deals. Confirm the deal-stage filter: most setups use Closed Won plus optionally Customer expanded. You're answering: "What does a successful customer look like?"

What's negative (closed-lost or never-bought)

Pick one or both:

  • Closed-lost: deals that went through your funnel and didn't close. Captures "almost-fits."
  • Never-engaged: leads in your CRM that never moved past initial-stage. Captures "shouldn't have been in the funnel at all."

Most setups use both. The model learns different things from each.

Confidence inputs

Confirm the trailing window. 12 months is the default; we recommend it for stable B2B segments. For companies with rapidly-shifting ICP (e.g., recently pivoted, or new product launch), use 6 months.

Click Train. About 90 seconds later, the model is trained. The dashboard shows:

  • Sample size: how many positive and negative examples were used.
  • Top features: which signals (firmographic, technographic, hiring, funding, behavioral) drove the model's predictions, ranked.
  • Confidence interval: an honest estimate of the model's accuracy on hold-out data.

If your sample size is below 50 or your confidence interval is uncomfortably wide, the dashboard tells you. You can train anyway, and the model still scores — but every score includes a confidence: low|medium|high field so reps know when to lean on it vs. their own judgment.

Step 2 — Score your live pipeline (5 minutes)

Once the model is trained, every new lead enriched in TexAu gets scored automatically. Existing leads in your tables are scored on the next refresh.

Open a lead table. A new column appears: score (0–100) plus a sister column top_signals listing the three signals that drove the score, like:

  • industry_match: SaaS
  • hiring_velocity: 3+ engineers in 90d
  • tech_stack: postgres+stripe

Click any lead's score to see the full feature breakdown — every signal the model considered, weighted by how much it pushed the score up or down. This is the "explainability" feature; it's what makes the score actionable instead of vibey.

Step 3 — Sync scores to your CRM (5 minutes)

Go to CRM Sync → New mapping. Configure:

  • Source field (TexAu): score
  • Destination field (CRM): texau_score (custom number field; create it in your CRM if it doesn't exist).
  • Sync direction: TexAu → CRM (one-way).
  • Conflict policy: TexAu wins (since the score is computed, not edited by reps).

Repeat for top_signals (sync to a custom text field in your CRM).

Within minutes, every contact in your CRM has a TexAu-computed score and the three reasons visible in their record. Reps see the score before they pick up the phone. Marketers can build score-thresholded segments. Sales-ops can build dashboards.

The audit log shows every score-update write, in case anyone asks why a lead's score moved.

Step 4 — Schedule monthly retraining (5 minutes)

Models go stale. Your win pattern in March looks different from your win pattern in October. The fix is scheduled retraining.

Go to AI Scoring → [Your model] → Settings → Retraining. Configure:

  • Schedule: First of every month at 2 AM.
  • Sample window: Trailing 90 days of closed-won data.
  • Drift alert: Notify if model accuracy on recent labeled deals drops by more than 5%.

Click Save.

Now the model retrains on the first of every month. The dashboard shows you the diff: which signals strengthened, which weakened, which dropped out. If anything looks weird (a signal vanished, a new one dominates), you'll see it before it shows up in your pipeline math.

Step 5 (optional) — Run scoring from the API or MCP (5 minutes)

If you want to score leads from outside TexAu — an ad-platform audience builder, a custom internal tool, an AI agent — every score is callable via the API:

curl -X POST https://api.texau.com/v1/score/lead \
  -H "Authorization: Bearer $TEXAU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_domain": "acme.com",
    "person_email": "[email protected]"
  }'
{
  "score": 87,
  "tier": "A",
  "top_signals": [
    "industry_match: SaaS",
    "hiring_velocity: 3+ engineers in 90d",
    "tech_stack: postgres+stripe"
  ],
  "confidence": "high",
  "model_version": "2026-04-15"
}

From an MCP-aware agent (Claude Desktop, Cursor): the same scorer is exposed as texau.score.lead. Useful for "score this lookalike audience before I push it to Meta Ads" workflows.

Common questions

"What if my closed-won list is biased toward one customer profile?"

The model learns whatever your data shows it. If 80% of your wins are SaaS, the model will weight SaaS heavily. If your strategic intent is to expand into a new segment, the model is the wrong tool — it tells you what has worked, not what you want to work. For new-segment exploration, use TexAu's default-ICP scoring or build a separate model on a smaller curated training set.

"How does this handle the lead-to-deal time lag?"

The model trains on the lead-snapshot at the time the lead entered the funnel, not at the time the deal closed. So a lead scored today is compared against "leads that looked like this when they entered" → "did they close?". This is the right framing — you want to score the lead now, not retrospectively.

"Can I bring my own features?"

Yes. The model uses TexAu's default feature set out of the box (firmographics, technographics, hiring, funding, behavioral). You can add custom features by creating AI Columns in TexAu and including them in the training set. Useful for industry-specific signals (e.g., "uses our integration partner's product").

"What about my privacy posture?"

The model is tenant-isolated. Your closed-won data trains your model only. We do not use customer data to train any cross-tenant model. Architecture documented in /trust-center.

Why this works better than generic ICP

Every team that switches from generic ICP scoring to closed-won-trained scoring sees the same pattern: the score distribution looks different from the team's mental model.

  • Leads they were excited about score lower than expected.
  • Leads they would have skipped score higher than expected.
  • Reps push back — until they look at the top-3 reasons and realize the model caught a signal they'd missed.

The bet is that your closed-won data knows more about your real ICP than your ICP doc does. After 30 minutes of setup, you'll have the dashboard to confirm or refute that bet on your own data — not ours.

TL;DR

  • 30 minutes from "no scoring" to "live closed-won-trained scoring with CRM sync."
  • 50-deal soft floor on training data; works above that with confidence flags.
  • Top-3 explainable reasons per score; auto-retrain monthly.
  • API + MCP callable for downstream workflows.

Start free (default ICP scoring on free tier; closed-won training on Pro+). See the full AI Scoring feature.