⚡ Swarm Architecture

Prospect Look-alike Communities — v1 (2026-05-18)

# Prospect Look-alike Communities — v1 (2026-05-18)

For: Daniel Shu + Tiago (WISE Lead Gen) From: Pierre + Lucas Companion file: exports/prospect_lookalike_.xlsx

What you asked for

You have ~26,000 prospects from Eloqua campaign responders — none of them are Lyreco customers, so we have zero purchase history to predict what they'd buy. Pierre asked: "for prospects who don't exist in our database, can we predict their product-family appetite by finding similar Lyreco customers?"

This is the v1 answer.

How it works (one paragraph)

For every prospect we have public firmographic signals: postcode, SIC industry code, employees, modeled turnover, market sector, registered status from Companies House. We have the same signals (or close proxies) for our real customers. We group customers into ~60 communities based on similarity across all those signals at once — not exact-match buckets. Pierre's phrasing: "find common grounds across all variables." Then, for each prospect, we soft-match them to their 3 most-similar communities, blend those communities' actual buying mix, and emit that as the prospect's predicted product-world appetite. Worlds are the 9 cross-family categories Lucas defined: BUREAUTIQUE, IT, HYGIENE, CAFETERIA, MOBILIER, LOGISTIQUE, EHS, GOODIES, OTHER.

What's in the workbook

| Sheet | Purpose | |---|---| | README | Plain-English explainer for any new reader | | Top Prospects Action | Daily prospecting list — sorted by confidence × top-world fit | | Per-Prospect Detail | Drill-down: top-3 communities + full propensity per prospect | | Communities Catalogue | What each community looks like + its product mix | | World Rollup | Per product world, how many prospects match — for thematic campaigns |

Confidence labels

Each predicted world inherits a confidence bucket:

  • HIGH — top community similarity > 0.70 and community has ≥30 active members
  • MEDIUM — top similarity > 0.40 or community ≥15 members
  • LOW — neither — treat as directional only

Use HIGH-confidence rows first. They're the ones where (a) the prospect looks strongly like a real customer cluster, and (b) that cluster has enough mass to give a stable product-mix signal.

Known v1 limits

1. Industry data on the customer side is sparse — we don't yet have Companies House SIC enrichment for the 27k UK Lyreco customer accounts, so the customer-side feature vector relies on geography + size + Lyreco-internal business-line code, not full SIC. A v2 pass after running companies_house_enrich.py for ecom_accounts will tighten industry-driven matches. 2. Customer spend window is 365 days — communities' product mix reflects what they bought over the last year, not their whole history. 3. No behavioral data from the prospect side — Eloqua opens/clicks aren't in the matching feature vector. They could be (v3); for v1 we kept the matching purely firmographic so the model stays explainable.

How to action this

1. Filter Sheet 1 to Confidence = HIGH. That's your tier-1 list. 2. Sort by Predicted % descending within each Predicted #1 World. Group prospects with the same predicted top world — those are natural campaign cohorts (e.g. "all HIGH-confidence prospects predicted to want BUREAUTIQUE, sorted by predicted strength"). 3. The Common Ground column tells you why the match landed — useful for pitch language ("we work with similar SIC 47 retailers in your postcode area"). 4. Cross-reference Sheet 3 (Communities Catalogue) for "what kind of company is community 17?" when a rep asks.

Model version

soft_v1_2026-05-18 — sklearn KMeans k=60 on a 71-dimension one-hot + numeric feature vector. Cosine similarity for prospect→community matching. Top-3 soft membership with weight-normalised blending.