Every managed services provider in your market, judged one at a time.
Most markets aren't written down anywhere. This one now is — sourced from directories and datasets, harnessed into structured evidence, and put through a written qualification rubric that decides, company by company, whether it is actually an MSP. Here is how it was built, what it found, and how to work it.
Four stages, and a check
at the end of each.
Nothing here is a single model call. A market gets built by finding companies, turning each one into evidence, judging that evidence against a written standard, and then measuring whether the judgement was right — with the last stage feeding back into the third.
A market is not one list.
It is forty of them, deduped.
No single source contains the MSP market. It is scattered across vendor partner directories, franchise locators, review marketplaces, official registers and lookalike datasets — each with a different shape, a different bias, and a wildly different hit rate. The build treats sourcing as a portfolio, and measures every source by what survives qualification.
| Source | What it is | Status |
|---|---|---|
| discolike | Lookalike-expansion dataset | scraped |
| lookalikes | Second lookalike pass | scraped |
| Job-title reverse | Find MSP-only titles, reverse to the employer | scraped |
| openmart | Local SMB discovery | scraped |
| firmable | ANZ-native B2B company + people data | scraped |
| theirstack | Job-ad technographics — PSA/RMM in job ads | scraped |
| Clay · Prospeo · PDL | Firmographic search + waterfall enrichment | scraped |
| BuiltWith | Website technology fingerprinting | scraped |
| Source | What it is | Status |
|---|---|---|
| globalmspdirectory | Horizontal MSP directory, 23 countries | scraped |
| mspdirectory.com | Horizontal MSP directory | scraped |
| CloudSecureTech | City-organised, Google ratings + verified data | scraped |
| Franchise locators | TeamLogic · CMIT · Computer Troubleshooters | scraped |
| Google Business Profile | Local-native index — address + phone by construction | scraped |
| Microsoft Solutions Partner | Largest partner ecosystem in the market | scraped |
| Clutch.co | Reviews, size band, hourly rate, service split | scraped |
| The Manifest | Clutch's sister index, different long tail | scraped |
| TechBehemoths | 43 countries — best non-US coverage | scraped |
| Cloudtango | Per-country MSP Select lists | scraped |
| Expertise.com | Curated 'Best IT Services in <city>' pages | scraped |
| discovermsps | Per-country pages incl. Netherlands | scraped |
| MSPAlliance | Association + MSP Verify accreditation | scraped |
| Pax8 marketplace | Distributor marketplace + partner directory | scraped |
| Vendor partner locators | ConnectWise · Kaseya/Datto · NinjaOne · N-able | scraped |
| Security partner locators | Huntress · SentinelOne · ThreatLocker · Sophos | scraped |
| Elioplus | Channel-partner aggregator across many vendors | scraped |
| Robin Robins | Largest MSP CEO peer group; owner-led members | scraped |
| Canada directories | ManagedServices.ca · ManagedByte · mspdatabase | scraped |
| UK Companies House | SIC 62020 — free, official, bulk-downloadable | scraped |
| SAM.gov | NAICS 541513 — Computer Facilities Management | scraped |
| Source | What it is | Status |
|---|---|---|
| Huntress | Cybersecurity vendor | scraped |
| Datto | PSA + RMM + backup | scraped |
| Acronis | Backup + security | scraped |
| SentinelOne | Cybersecurity vendor | scraped |
| Rewst | Direct competitor | scraped |
| ASCII Group | Peer group (gated community) | scraped |
| Gradient MSP | MSP automation platform | scraped |
| N-able | RMM | scraped |
| IT Glue | Documentation vendor | scraped |
| ConnectWise | PSA | scraped |
| NinjaOne | RMM | scraped |
| MSP Geek | Independent community | scraped |
| Pia | Direct competitor | scraped |
| SuperOps | PSA + RMM | scraped |
| Right of Boom | Security conference | scraped |
| CrowdStrike | Cybersecurity vendor | scraped |
| Pax8 | Marketplace | scraped |
| Hatz AI | AI platform for MSPs | scraped |
| MSPbots | Direct competitor | scraped |
| Syncro | PSA + RMM | scraped |
| Hudu | Documentation vendor | scraped |
| Resolve | Direct competitor | scraped |
| Managed Services Summit | UK event | scraped |
| MSP Global | EU event — the only EU-oriented source | scraped |
| ProVal Technologies | MSP consultant | scraped |
| Mitzo.Tech | Direct competitor | scraped |
| Neo Agent | Direct competitor | scraped |
A domain is not evidence.
Something has to go and look.
Between a raw domain and a verdict sits the harness: the machinery that turns a URL into structured, quotable evidence. The rubric can only be as good as what the harness hands it — and most of the loss in a build like this happens here, not in the judgement.
In every confirmed recovery across two independent evaluations, the qualifying evidence was not on the homepage. Following four obvious sub-paths, sending a browser user-agent, and rendering JavaScript raises the ceiling on everything downstream.
One definition, four tests,
and a question that settles it.
Qualification is not keyword matching. The rubric is a written constitution — seven documents, a locked vocabulary, and a validator — that decides what a company is and then uses vocabulary as evidence for that judgement, never as the verdict.
unknown, never no. That distinction is why the two are emitted separately.The rubric reads one row — a ≤350-word homepage summary and the LinkedIn fields. It is fast, deterministic and right about seven times in eight. Its one structural blind spot is that the qualifying evidence is very often not on the homepage: across every confirmed miss in this build it sat on a pricing page, a services page, inside a JavaScript bundle, or behind a redirect.
insufficient_evidence — the scrape failed, not the company.2.
low confidence — the rubric flagged its own thin evidence.3. The judgement calls — consultancy, break-fix, specialist.
Measured against blind ground truth,
not asserted.
A rubric that grades its own homework proves nothing. So the qualification agent was never allowed to be its own referee: a second, independent system produced the answers, and the rubric was rewritten until it matched them.
The traps run both ways, which is why convergence is hard. A staffing firm publishing Silver/Gold/Platinum "managed services" tiers is not a provider. A reseller whose SOC belongs to a vendor partner is not a provider. A rural repair shop with per-device monthly pricing is one. Vocabulary decides nothing; the delivery model decides everything.
The shape of the market,
once you can see all of it.
Qualification produces more than a yes. Every confirmed provider carries a tagged profile — where it sells, what it runs, who it serves, what it has certified, and how it talks about AI. Read together, these are the segmentation axes: the difference between one list of MSPs and a market you can cut.
both run broad managed IT and a separately marketed security practice.generalist is a real answer, not a gap. Three quarters serve whoever is nearby. The vertical-focused quarter is where a compliance-led message lands hardest — healthcare alone is 3,886 providers.ai_led (0.5%) is the only value that ever disqualified.stack_tools = [ "microsoft 365", "datto", "connectwise", "aws" ] · provider_type = both · ai_posture = ai_active
Empty is normal and never counts against a company. A tool is only recorded when the page names it, so 15,742 of 32,918 carry one. Most keep the rest behind the login — but where it appears it is a precise targeting hook: a ConnectWise shop and a NinjaOne shop are different conversations.
One file. Every company
fully described.
Everything on this page is computed from the delivered list — no sampling, no estimates. One row per company, deduped on domain, twenty columns each, every tagged value drawn from a locked registry so the whole file filters cleanly.
Number Of Employees = 0 as zero staffLocal confirmed = FALSE as "national"Stack Tools without normalisingai_absent as a weak leadCountry Code for languagePage Language — a Belgian or Swiss provider may publish in any of three. 35 codes appear across the list.Stack Tools = [] and Governance registry = [] mean the page named nothing — most providers keep their stack behind the client login.The whole system, on your machine.
The rubric is plain Markdown — not a black box and not a service. Change what qualifies, re-run it, and check your edit with the two consistency scripts that ship with it.
LLM_GUIDE.md ← paste this to any assistant first START_HERE.md per-route instructions 01-rubric/ the processing agent · 7 docs 02-research-agent/ the fallback 03-sourcing/ sourcing paths · context harness 04-data/ the qualified list + schema 05-howto/ reading the sheet · VS Code
Plain Markdown and Python. No account, no service, no vendor lock — the rubric is documents you can read, edit and re-run.
LLM_GUIDE.md is written for the model, not for you — it explains the three pieces, the definition, and the rules that stop it misreading a verdict.05-howto/SHEET_INTERPRETATION.md — every column, six filter recipes, and the five common ways to misread the sheet.02-research-agent/ with 3–9 domains. It reads the live sites and comes back with verbatim quotes and source URLs.01-rubric/ and give it a batch — the same seven documents that produced this list, run on whatever you bring.03_qualification_doctrine.md and 05_runtime_prompt.md together, then run parity.py and check_pack.py. A rule in 03 with no block in 05 does not run.