# Technographics Benchmark
Active dataset: `technography-2026-q2`
40 canonical tools across 8 departments × 5 live vendors. Each cell is the number of distinct companies that vendor surfaced as using the tool. `-` means the vendor returned zero / has no coverage for that tool.
## Endpoints
- JSON API: https://benchmarks.openfunnel.dev/api/leaderboards/technographics
- Markdown agent docs: https://benchmarks.openfunnel.dev/llms.txt
- OpenAPI 3.1 spec: https://benchmarks.openfunnel.dev/openapi.json
- MCP server discovery: https://benchmarks.openfunnel.dev/.well-known/mcp.json
## Vendors live (5)
`openfunnel` (OpenFunnel), `builtwith` (BuiltWith), `theirstack` (TheirStack), `sumble` (Sumble), `predictleads` (PredictLeads)
## Vendors not surveyed
- `ZoomInfo` - no public technographic API
- `Apollo` - no public technographic API
- `Clay` - no programmatic technography endpoint
Reason: no programmatic technographic endpoint at survey time. Would add all-`-` columns to the matrix, so they're listed here instead.
## Agent readiness
`agent-ready` vendors expose a no-human-in-the-loop way to obtain an API key. Two shapes today:
- `otp-email` — visit a human-facing sign-up page, verify with a 6-digit code emailed to the agent's inbox.
- `device-code` — pure programmatic OAuth-style device-code flow. No static sign-up page; agent POSTs to start, gets a one-time per-session approval URL.
All other vendors require a manual sales conversation.
| Vendor | Agent sign-up | API docs | llms.txt | MCP |
|--------|---------------|----------|----------|-----|
| OpenFunnel | [otp-email](https://docs.openfunnel.dev/agent-auth/agent-auth/agent-sign-up) | [docs](https://docs.openfunnel.dev/api-reference/technography-apis/search-companies-by-tech-stack) | [llms.txt](https://docs.openfunnel.dev/llms.txt) | [mcp](https://docs.openfunnel.dev/mcp-reference/overview) |
| BuiltWith | [device-code](https://api.builtwith.com/llms.txt) | [docs](https://api.builtwith.com/llms.txt) | [llms.txt](https://api.builtwith.com/llms.txt) | [mcp](https://api.builtwith.com/mcp) |
| TheirStack | manual signup | [docs](https://theirstack.com/en/docs/data/technographic) | — | — |
| Sumble | manual signup | [docs](https://docs.sumble.com/api/technologies) | [llms.txt](https://docs.sumble.com/llms.txt) | [mcp](https://docs.sumble.com/api/mcp) |
| PredictLeads | manual signup | [docs](https://docs.predictleads.com/v3/discover/companies-using-specific-technology-id-or-fuzzy-name) | — | — |
## Leaderboard (vendor totals)
| Rank | Vendor | Companies observed | Distinct tools | Category coverage |
|------|--------|--------------------|----------------|-------------------|
| 2 | builtwith | 4,109,081 | 24 | 100.0% |
| 5 | predictleads | 2,655,190 | 38 | 100.0% |
| 4 | sumble | 763,563 | 40 | 100.0% |
| 1 | openfunnel | 534,064 | 40 | 100.0% |
| 3 | theirstack | 461,387 | 23 | 100.0% |
| 6 | zoominfo | - | - | 0.0% |
| 7 | apollo | - | - | 0.0% |
| 8 | clay | - | - | 0.0% |
| 9 | crustdata | - | - | 0.0% |
- `Companies observed` - sum of distinct companies across all 40 tools the vendor reports on. Pure breadth.
- `Distinct tools` - number of the 40 canonical tools the vendor returns at least one company for.
- `Category coverage` - % of the 8 canonical departments the vendor has at least one tool hit in.
## Tool × vendor matrix
Cell value = distinct companies the vendor surfaced for that tool. Sourced from each vendor's public API; see methodology below for per-vendor query rules and aggregation logic.
### engineering
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Datadog | 10,567 | 108,902 | 25,404 | 29,956 | 136,409 |
| Inngest | 96 | - | - | 155 | - |
| Modal | 15,253 | - | - | 257 | 19 |
| Resend | 436 | - | - | 153 | 852 |
| Vercel | 3,722 | 3,034,980 | 10,122 | 10,154 | 742,056 |
### data
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| dbt | 13,244 | - | 25,372 | 35,736 | 18,156 |
| Hightouch | 346 | 97 | - | 2,840 | 967 |
| Materialize | 274,797 | 456 | 1,486 | 8,604 | 2 |
| MotherDuck | 21 | - | - | 52 | 10 |
| Snowflake | 18,409 | 5,283 | 43,127 | 56,265 | 35,123 |
### sales
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Clay | 4,552 | - | - | 6,017 | 3,541 |
| Gong | 2,351 | 23 | 5,333 | 5,650 | 4,323 |
| Nooks | 366 | - | - | 355 | 16 |
| Orum | 144 | - | 457 | 527 | 3 |
| Outreach | 293 | 1 | 14,513 | 127,729 | 1,868 |
### marketing
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Default | 12,222 | - | - | 2,790 | 7,490 |
| HubSpot | 45,681 | 481,838 | 139,296 | 191,440 | 664,536 |
| Marketo | 4,063 | 19,490 | 11,172 | 25,843 | 43,140 |
| Mutiny | 78 | 511 | 245 | 313 | 3 |
| RB2B | 33 | 10 | - | 67 | 92 |
### finance
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Mercury | 1,562 | 21,978 | 2,929 | 6,890 | 287 |
| Mosaic | 1,282 | 27 | 3,396 | 4,465 | 7 |
| NetSuite | 16,767 | 2,285 | 51,593 | 70,058 | 40,805 |
| Ramp | 20,042 | - | - | 14,984 | 52 |
| Tropic | 2,048 | - | 1 | 36 | 4 |
### hr
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Ashby | 947 | - | 7,450 | 1,624 | 4,766 |
| Gem | 5,863 | 31 | 279 | 6,052 | 24 |
| Greenhouse | 5,722 | 3,948 | 20,571 | 19,820 | 11,483 |
| Pave | 6,864 | - | - | 341 | 13 |
| Rippling | 2,435 | 9,968 | 7,466 | 3,273 | 12,247 |
### support
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Decagon | 58 | 24,645 | - | 32 | 2 |
| Intercom | 4,932 | 123,071 | 8,589 | 12,527 | 122,484 |
| Plain | 9,789 | - | - | 71 | 2,414 |
| Pylon | 563 | - | - | 944 | 557,268 |
| Zendesk | 9,639 | 259,186 | 28,612 | 63,775 | 213,560 |
### ops
| Tool | openfunnel | builtwith | theirstack | sumble | predictleads |
|------|------|------|------|------|------|
| Granola | 196 | - | - | 54 | 4 |
| Lindy | 109 | 176 | - | 55 | - |
| Linear | 11,143 | 11 | 4,093 | 19,658 | 4,080 |
| Notion | 24,565 | 11,194 | 49,881 | 33,946 | 27,032 |
| Reclaim | 2,864 | 970 | - | 55 | 52 |
## Methodology
1. Fix a canonical list of 40 tools across 8 departments (engineering, data, sales, marketing, finance, hr, support, ops). Mix two incumbent tools + three emerging challengers per department so the matrix exercises both well-known and long-tail detection.
2. For every (tool, vendor) cell, query that vendor's public API for the count of distinct companies they say are using that tool. Each vendor has its own endpoint, query shape, rate limit, and name resolution.
3. Apply per-vendor aggregation rules. Most vendors return multiple "variants" for a single query (e.g. NetSuite → NetSuite, NetSuite Implementation, NetSuite Administrator, …). For unambiguous tools we sum the product family; for ambiguous tools ("Modal", "Linear", "Outreach") we keep only the exact-slug match.
4. `-` semantics: a dash means the vendor returned zero or has no record for that tool (taxonomy gap, web-blind to internal tooling, etc.) - distinct from "we didn't ask".
### Per-vendor data sources
- **OpenFunnel** - internal LinkedIn jobs index, last 365 days. Unique `company_slug` count where the tool name appears in the job title or description. Ambiguous names use a stricter phrase (e.g. `"Outreach.io"` instead of `Outreach`).
- **BuiltWith** - `trends/v6` Free API. `Tech.coverage.live` count. Web-fingerprint only - blind to internal-only / non-web-surface tools (Modal, Orum, Pave, Reclaim, etc).
- **TheirStack** - `/v1/jobs` aggregation by `job_technology_slug`. Rolling 365-day window. Limited taxonomy: ~17/40 canonical tools have no entry and return `-`.
- **Sumble** - `/v6/technologies/find`. Unambiguous tools sum the canonical + `canonical-*` family prefix; ambiguous tools use exact-slug only. A few overrides remap canonical → Sumble's slug (e.g. `marketo` → `adobe-marketo`).
- **PredictLeads** - `/v3/discover/technologies/{name}/technology_detections`. Returns `meta.count` for the fuzzy-matched technology.
## Known limitations
- **Surface bias.** Web-fingerprint vendors (BuiltWith) see anything in a HTML/JS payload and miss internal-only tooling. Job-posting vendors (OpenFunnel, TheirStack, Sumble, PredictLeads) see anything in a job description and miss tools that aren't job-relevant. Both biases are real and not symmetric.
- **Ambiguous tool names.** Common English words ("Modal", "Linear", "Outreach", "Default", "Plain") produce false positives under fuzzy keyword matching. We use exact-slug or phrase matching where possible; some inflation remains in the cells marked ambiguous on the human view.
- **Lookback windows differ.** OpenFunnel & TheirStack are 365-day rolling; BuiltWith is "currently live"; Sumble & PredictLeads are vendor-defined and not directly comparable to a rolling window. Counts are not strictly apples-to-apples - read them as orders of magnitude.
- **No precision audit yet.** Cells show surfaced counts only. The "correct" / audited-precision column is on the roadmap but not live.
## License
CC-BY-4.0. Attribute "OpenFunnel Bench" and link back when redistributing.
Technographics Benchmark
40 canonical tools × 5 live vendors - each cell is the number of companies that vendor surfaced for the tool.
Technographic Detection & Precision
Rows are tools, columns are vendors, and each cell is the number of companies that vendor surfaced for the tool.
Engineering5 tools
dev tools, source control, infra, observability
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Vercel | 3,722 | 🥇3,034,980 | 10,122 | 🥉10,154 | 🥈742,056 |
| 02 | Datadog | 10,567 | 🥈108,902 | 25,404 | 🥉29,956 | 🥇136,409 |
| 03 | Modal* | 🥇15,253 | N/A | N/A | 🥈257 | 🥉19 |
| 04 | Resend* | 🥈436 | N/A | N/A | 🥉153 | 🥇852 |
| 05 | Inngest | 🥈96 | N/A | N/A | 🥇155 | N/A |
Data5 tools
warehousing, BI, ETL, ML platforms
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Materialize* | 🥇274,797 | 456 | 🥉1,486 | 🥈8,604 | 2 |
| 02 | Snowflake | 18,409 | 5,283 | 🥈43,127 | 🥇56,265 | 🥉35,123 |
| 03 | dbt | 13,244 | N/A | 🥈25,372 | 🥇35,736 | 🥉18,156 |
| 04 | Hightouch | 🥉346 | 97 | N/A | 🥇2,840 | 🥈967 |
| 05 | MotherDuck | 🥈21 | N/A | N/A | 🥇52 | 🥉10 |
Sales5 tools
CRM, sales engagement, dialers, conversation intelligence
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Outreach* | 293 | 1 | 🥈14,513 | 🥇127,729 | 🥉1,868 |
| 02 | Clay* | 🥈4,552 | N/A | N/A | 🥇6,017 | 🥉3,541 |
| 03 | Gong* | 2,351 | 23 | 🥈5,333 | 🥇5,650 | 🥉4,323 |
| 04 | Orum | 🥉144 | N/A | 🥈457 | 🥇527 | 3 |
| 05 | Nooks* | 🥇366 | N/A | N/A | 🥈355 | 🥉16 |
Marketing5 tools
automation, ads, SEO, ABM, email
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | HubSpot | 45,681 | 🥈481,838 | 139,296 | 🥉191,440 | 🥇664,536 |
| 02 | Marketo | 4,063 | 🥉19,490 | 11,172 | 🥈25,843 | 🥇43,140 |
| 03 | Default* | 🥇12,222 | N/A | N/A | 🥉2,790 | 🥈7,490 |
| 04 | Mutiny* | 78 | 🥇511 | 🥉245 | 🥈313 | 3 |
| 05 | RB2B | 🥉33 | 10 | N/A | 🥈67 | 🥇92 |
Finance5 tools
accounting, payments, billing, spend management
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | NetSuite | 16,767 | 2,285 | 🥈51,593 | 🥇70,058 | 🥉40,805 |
| 02 | Mercury* | 1,562 | 🥇21,978 | 🥉2,929 | 🥈6,890 | 287 |
| 03 | Ramp* | 🥇20,042 | N/A | N/A | 🥈14,984 | 🥉52 |
| 04 | Mosaic* | 🥉1,282 | 27 | 🥈3,396 | 🥇4,465 | 7 |
| 05 | Tropic | 🥇2,048 | N/A | 1 | 🥈36 | 🥉4 |
HR5 tools
HRIS, payroll, recruiting, performance
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Greenhouse* | 5,722 | 3,948 | 🥇20,571 | 🥈19,820 | 🥉11,483 |
| 02 | Rippling | 2,435 | 🥈9,968 | 🥉7,466 | 3,273 | 🥇12,247 |
| 03 | Ashby | 947 | N/A | 🥇7,450 | 🥉1,624 | 🥈4,766 |
| 04 | Pave* | 🥇6,864 | N/A | N/A | 🥈341 | 🥉13 |
| 05 | Gem* | 🥈5,863 | 31 | 🥉279 | 🥇6,052 | 24 |
Support5 tools
helpdesk, live chat, knowledge base
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Pylon* | 🥉563 | N/A | N/A | 🥈944 | 🥇557,268 |
| 02 | Zendesk | 9,639 | 🥇259,186 | 28,612 | 🥉63,775 | 🥈213,560 |
| 03 | Intercom* | 4,932 | 🥇123,071 | 8,589 | 🥉12,527 | 🥈122,484 |
| 04 | Decagon | 🥈58 | 🥇24,645 | N/A | 🥉32 | 2 |
| 05 | Plain* | 🥇9,789 | N/A | N/A | 🥉71 | 🥈2,414 |
Ops5 tools
internal collaboration, project mgmt, workflow automation
| # | Tool | OpenFunnel | BuiltWith | TheirStack | Sumble | PredictLeads |
|---|---|---|---|---|---|---|
| 01 | Notion* | 24,565 | 11,194 | 🥇49,881 | 🥈33,946 | 🥉27,032 |
| 02 | Linear* | 🥈11,143 | 11 | 🥉4,093 | 🥇19,658 | 4,080 |
| 03 | Reclaim* | 🥇2,864 | 🥈970 | N/A | 🥉55 | 52 |
| 04 | Granola* | 🥇196 | N/A | N/A | 🥈54 | 🥉4 |
| 05 | Lindy* | 🥈109 | 🥇176 | N/A | 🥉55 | N/A |
Can an AI agent actually use this vendor?
Most vendors require a human to fill a sales form before issuing an API key. The two below let an autonomous agent obtain a working key on its own (OTP-via-email or device-code), so an agent built on them works end-to-end without human handoff.
| Vendor | Agent sign-up | API docs | llms.txt | MCP | Try it |
|---|---|---|---|---|---|
| OpenFunnel | ✓ readyotp-email | docs ↗ | llms.txt ↗ | mcp ↗ | sign up → |
| BuiltWith | ✓ readydevice-code | docs ↗ | llms.txt ↗ | mcp ↗ | device-code ↗ |
| TheirStack | manual signup | docs ↗ | — | — | — |
| Sumble | manual signup | docs ↗ | llms.txt ↗ | mcp ↗ | — |
| PredictLeads | manual signup | docs ↗ | — | — | — |
Agent sign-up = autonomous agent can fetch an API key without a human in the loop. otp-email= visit a sign-up page, verify with a 6-digit code emailed to the agent's inbox. device-code = pure programmatic flow (OAuth-style device-code: agent POSTs, gets a per-session approval URL).llms.txt= machine-readable index of the vendor's docs for LLM consumption.MCP = hosted Model Context Protocol server so a client like Cursor / Claude can call the API directly.
[02] methodology, metric definitions, and known limitations+
How the matrix is built
- Fix a canonical list of 40 tools across 8 departments (engineering, data, sales, marketing, finance, hr, support, ops). Mix two incumbent tools + three emerging challengers per department so the matrix exercises both well-known and long-tail detection.
- For every (tool, vendor) cell, query that vendor's public API for the count of distinct companies they say are using that tool. Each vendor has its own endpoint, query shape, rate-limit, and name resolution - those details live in 02.e.
- Apply per-vendor aggregation rules. Most vendors return multiple "variants" for a single query (e.g. "NetSuite" → NetSuite, NetSuite Implementation, NetSuite Administrator, …). For unambiguous tools we sum the product family; for ambiguous tools ("Modal", "Linear", "Outreach") we keep only the canonical-slug match. See 02.d.
- Store the number in the (tool, vendor) cell as
companies_countwith a UTCaudited_attimestamp. A cell with no coverage - either the tool isn't in that vendor's catalog, or the query returned zero - is stored withaudited_at: nulland rendered as-, not0. - Sample-audit each cell by hand to compute precision (queued - current matrix shows surfaced counts only). For a given cell, pull a random subset of the flagged companies and verify each via LinkedIn, the company site, and job posts. The cell's precision is the fraction that checked out.
- Render. Toggle the sort metric to re-rank rows by reach (surfaced) or by trust (correct, once audits land).
What each metric means
surfaced· cell value when the toggle is set to surfaced. Distinct companies the vendor flagged as using that tool. Raw output volume - bigger means more reach, but it can also mean more noise.correct· cell value when the toggle is set to correct. Percentage of the vendor's flags for that tool that held up under a hand audit.-means we haven't audited that cell yet. Hover any cell to see the raw counts and audit sample size.category coverage· top-of-page stat. Of the 8 canonical departments, how many did the vendor surface at least one tool for?broadest surfacing· total distinct (company, tool) pairs across the matrix for that vendor. Pure breadth.
Why precision is sampled, not whole-cohort
A whole-cohort ground truth ("company X really does use tool Y in engineering") would need either insider attestation (rare, biased, expensive) or an exhaustive audit on every cell (impractical even at modest cohort sizes). Instead, every cell's precision comes from a sampledhand audit: pull a random subset of the vendor's flags, verify each, and report the fraction that checked out.
Two ways to read the matrix:
- Sort by surfaced if you care about reach - which vendor flags the most companies for the tools you care about, regardless of how clean each flag is.
- Sort by correct if you care about trustworthiness - how many of those flags actually held up under audit. A smaller correct count from a tight vendor is often more useful than a bigger surfaced count from a noisy one.
Why "Modal", "Linear", "Plain", "Default" are the real test
Roughly half the canonical tools have names that are also common English words - "Modal" (a UI primitive), "Linear" (math), "Plain" (an adjective), "Default" (a config term), "Mercury" (a planet), "Resend" (a verb), "Gong" (an instrument), "Clay" (a material), and so on. These rows are marked with a small * marker in the matrix.
A vendor whose detection is built on naive keyword match against job posts or web copy will inflate the "surfaced" count on these rows with false positives - every JD that mentions "modal dialog", "linear progression", or "default values" gets miscounted as a buying signal. A vendor doing entity disambiguation (context, vendor URL match, co-occurrence with role titles, capitalization rules) will hold its precision steady.
This is the whole reason the precision column exists. Two vendors can both report "300 companies using Modal" and look identical at the surface - until you audit. The vendor at 92% precision actually found 276 real Modal customers; the vendor at 38% only found 114. Always read these rows with the sort flipped to correct.
How each vendor was queried
Every vendor exposes a different surface - public API, web fingerprint, jobs feed, third-party signals - so the ingestion logic is per-vendor. Each script in scripts/ingest_*_technography.py writes the resulting counts into data/latest-technography.json.
- OpenFunnel· queries our internal LinkedIn jobs index (
linkedin-jobs-search, ~365d lookback). For each tool we run amatch_phraseovertitle OR descriptionand aggregate distinctcompany_slugvia an OpenSearchcardinality(HyperLogLog, precision_threshold=40k). Filters out garbage slugs ("",https:,http:) and excludes the vendor's own careers postings. For tools whose name is a common English word, the search term is narrowed to a disambiguated form (e.g.Outreach→"Outreach.io") - high precision, lower recall. All 40 cells live. Structural ceiling: LinkedIn only, vs. TheirStack's multi-board index. - TheirStack ·
POST /v1/companies/searchwithjob_filters.job_technology_slug_or = [tool_slug]andposted_at_max_age_days = 365. Readsmetadata.total_results. Slug-overrides map tools whose canonical name doesn't match TheirStack's tech taxonomy (MotherDuck →motherduck, Customer.io →customer-io, …). Rate-limited at 50/hour, with backoff parsed fromratelimit-resetheaders. - Sumble ·
POST /v6/technologies/findwith{ query: tool_name }. Returns up to 50 related "technologies" via substring match. Per-tool aggregation rule: ambiguous tools (Modal, Linear, Outreach, …) sum only the variant whoseslugequals the canonical slug; unambiguous tools sum the product family - canonical slug plus any slug prefixed withcanonical-, so NetSuite capturesnetsuite+netsuite-implementation+netsuite-administrator… while droppingquorum/forumnoise on a query for "Orum". Includes a vendor-rename override (Marketo →adobe-marketo, post-acquisition). - PredictLeads ·
GET /v3/discover/technologies/{fuzzy}/technology_detections?page=1&limit=1. Passingpage=1is required: per the docs, PredictLeads omitsmeta.countfrom the response unless a page is requested. Thelimit=1keeps the per-tool cost at 1 credit. Result lands as the company count. Fuzzy-name lookup handles most tools directly; 1 cell errored (no fuzzy match for Lindy). - BuiltWith ·
GET /trends/v6/api.json?TECH={name}on the free Trends endpoint (0credits per call). ReadsTech.coverage.live- current sites running the tool. The paid Lists API would give a richer per-site breakdown but requires a subscription. Casing-sensitive overrides:HubSpot→Hubspot,Reclaim→Reclaim-AI. BuiltWith is structurally blind to ~40% of our catalog (dbt, Modal, Ramp, Plain, Pylon, Clay, Pave, Granola, … - tools that don't leave a public-web fingerprint). Those cells render as-, not0.
A 0from any vendor is treated as "not in this vendor's catalog" (or no detection in the lookback window) and persisted with audited_at: null, so the cell renders as -. Real coverage gaps are visible at a glance.
What this benchmark does not tell you
- Surface bias.BuiltWith only sees what renders on the public web; it's blind to ~40% of our catalog (dbt, Modal, Ramp, Plain, Pylon, Clay, Pave, Granola, Lindy, … - internal SaaS without a website fingerprint). Those cells are
-, not zero. - Job-posting bias. Job-derived vendors (OpenFunnel, TheirStack, Sumble) only surface tools that appear in postings. Stable stacks with little hiring activity are underrepresented; growth orgs are over-indexed.
- Source-set bias inside the same surface. OpenFunnel indexes LinkedIn only; TheirStack and Sumble aggregate LinkedIn + Indeed + Greenhouse + Lever + Ashby + others. That alone accounts for a ~2-3× recall gap on unambiguous tools (NetSuite: OpenFunnel ~17k vs Sumble 70k vs TheirStack 52k).
- Lookback windows differ.OpenFunnel and TheirStack use a strict 365-day window. Sumble and PredictLeads return all-time observations from their catalogs. BuiltWith's
coverage.liveis "currently detected" (rolling). Direct count comparisons across vendors should be read as order-of-magnitude, not exact. - Resolution rules vary. Sumble matches by substring across product variants; we wrap that in a family-prefix filter (canonical +
canonical-*) to drop substring noise (quorum,forum, …). TheirStack runs entity disambiguation server-side and returns small, tight counts. OpenFunnel runs naivematch_phraseby design - its recall ceiling is high, its precision ceiling is the whole point of the benchmark. - Precision sample size varies. Audits are queued - current matrix shows surfaced counts only. Once audits land, a cell audited at n=10 has a much wider confidence interval than one at n=30. Cell tooltip will show sample size.
- Taxonomy mapping is opinionated.Each vendor uses a different category schema; we re-bucket to our 8 canonical departments. Edge cases ("growth tooling" → marketing or sales?) are decided once and applied consistently across all vendors.
Inclusion queue and how to request a provider
Live: OpenFunnel, BuiltWith, TheirStack, Sumble, PredictLeads.
Requested but no technographic product: ZoomInfo, Apollo, Clay. None expose a programmatic technographic endpoint we can query.
Under review next: HG Insights, 6sense/Slintel, Wappalyzer, Datanyze, Coresignal (job-derived), Ocean.io.
To request a provider, email founders@openfunnel.dev with a link to the public API docs and pricing page.















































