Web-enrichment live acceptance¶
Measured results of web enrichment with real providers: DataForSEO live
search and AI Mode, OpenRouter (z-ai/glm-5.3-flash), OpenAI embeddings,
and company websites through the Webshare proxy. Companies come from the
test hub.
Company pass, before deployment (2026-09-24, #842)¶
The pass (ADR-0029) ran from a developer machine against a migrated local database with the test hub's 6,165 companies, twelve passes in parallel in one process. The numbers below are from the final code of #842.
Same companies as the last full campaign¶
The 29 companies of campaign 338 (request
c3181221-ed25-4858-ba07-deebe9f728fe):
| Outcome | Earlier pipeline | Company pass |
|---|---|---|
| Verified website | 6 | 21 |
| Website and extracted profile | — | 20 |
| No website | 15 | 8 |
| Blocked | 8 | 0 |
| Time per company | mean 277.7 s | mean 28.1 s, 95th percentile 51.1 s |
Every accepted website was checked by hand. The eight companies without a
website are six holding or investment companies and two others. WITT INVEST
ApS and PER HENRIKSEN HOLDING ApS show the phone and street of an operating
company's site, but that site prints the operating company's CVR; the model
calls it related, and it is not attributed to the holding company.
100-company shortlists (charter M3)¶
The charter's M3 target: for a 100-company shortlist, ≥70 % have a resolved website and extracted profile. Each shortlist is 100 active companies drawn at random from the test hub with at least two employees and no holding, housing-cooperative, or fund industry. The three shortlists do not overlap.
| Shortlist | Use | Website | Website and profile | Contacts | Mentions | People | AI Mode signals |
|---|---|---|---|---|---|---|---|
| A | rules tuned on its misses | 71 | 68 | 64 | 60 | 46 | 82 |
| B | first holdout | 66 | 65 | 62 | 67 | 36 | 86 |
| C | final holdout, after one more rule | 73 | 73 | 71 | 71 | 46 | 93 |
Shortlist A informed three rule changes (issue #842, entry 3). Shortlist B,
measured without changes, showed subsidiaries that trade under their group's
brand (gea.com, zenegy.com, elfa.com) refused as related; the brand
rule followed. Shortlist C was measured once, with no change afterwards, and
meets the target.
On shortlist C: 24 companies have no website (holding, property, farm, and
one-person companies), 3 are blocked (a registry site that does not
answer), and no run failed. Per company: mean 25.2 s, 95th percentile
41.7 s, USD 0.0058 search and AI Mode cost, 1.9 model calls. The 100
companies took 271 seconds in one process with twelve parallel passes (0.37
companies per second).
Deployed measurement (2026-09-24)¶
The web-enrichment service in test, with requests sent by the
web-starter job and results read with inspect --details. Every accepted
website of shortlist D was checked by hand.
Named cases¶
| Company | First deployed run | After #845 and #847 |
|---|---|---|
| PFP A/S | pfp.dk (cvr), no about page |
pfp.dk (cvr), about page read |
| HORN BORDPLADER A/S | byhorn.com (identity) |
same |
| LAVABO A/S | lavabo.dk (cvr) |
same |
| NYKREDIT A/S | no-website |
nykredit.dk (judge-related, brand) |
| Zenegy Danmark ApS, KEEPIT HOLDING ApS, WITT INVEST ApS, ALUMECO HOLDING ApS | no-website in local runs |
group site (judge-related, brand) |
Four companies on boligsiden.dk and hjemsted.dk profile pages |
accepted in local runs | no-website |
| ALARM EKSPERTEN A/S | no-website ("coming soon" page called parked) |
alarmeksperten.dk (registry-website) |
| BOGART KØGE ApS | blocked (Wix host root 404) |
bogartkoege.wixsite.com/bogart |
ELFA Danmark A/S stays no-website: the model answers unclear for
elfa.com (registry: furniture wholesale; site: storage systems).
Shortlist D (100 new companies)¶
Drawn like A–C. D was measured once with the code of #845; its misses led to #847, so the second row is tuned on D. E is the last ten hub companies that match the selection (the hub has about 534); A–D used the rest.
| Shortlist | Website | Website and profile | Contacts | Mentions | People | AI Mode signals | Blocked | Failed |
|---|---|---|---|---|---|---|---|---|
| D, measured once | 76 | 74 | 71 | 45 | 50 | 88 | 2 | 0 |
| D again, after #847 | 78 | 76 | 73 | 46 | 51 | 82 | 2 | 0 |
| E (10 companies) | 7 | 6 | 7 | 4 | 7 | 9 | 0 | 0 |
On D, measured once: 50 of the 76 websites are accepted on the exact CVR,
and no false accept was found. Per company: mean 37.7 s, 95th percentile
63.5 s, USD 0.0058 search and AI Mode, 1.9 model calls, no retry. The 19
other no-website companies are holding, property, farm, and one-person
companies, or one.com placeholder pages. One run of 100 waited 180 s for a
model answer (the client time limit) before its retry answered.
Throughput (#313)¶
300 active companies not used before, without the employee filter (201 with 0–1 employees, 97 holding companies, 2 others): 300 companies in 246 s from admission to the last result, 1.22 companies per second, no retry, no failed run. Per company: mean 22.7 s, 95th percentile 41.0 s. 44 have a website; every company with a registry website resolved.
The batch queue runs at most 40 passes at a time and dispatches at most four
per second (infra/web_service.tf), so a large batch runs at about one
company per second. This batch showed two faults, fixed afterwards:
admission took 65 s for 300 companies (#850), and 13 runs whose registry
email domain has no web server were blocked instead of no-website (#852).
After #850, #852, and #854¶
| Check | Result |
|---|---|
| Admission of a 422-company request | 0.94 s (before #850: 65 s for 300) |
The 13 blocked runs of the throughput batch, refreshed |
11 no-website (mail-only domains, 404 roots), 2 blocked (the server answers 403) |
| Re-extraction of the same 422 companies | 9 runs for the companies with a version-3 bundle, 413 no-retained-evidence; all 9 resolved / re-extract with no search and no page fetch, 5 to 29 s each |
Earlier pipeline baseline (ADR-0016/0020)¶
Deployment 4bfbc6a processed 29 companies in 480.87 seconds (0.0603
companies per second) and resolved six. Across all test runs in the 20 days
before 2026-09-24, 34 of 274 run outcomes resolved a website (12 %). The
failure analysis that led to the company pass is in ADR-0029.
Named development cohort¶
The current named cohort is PFP relationship cohort:
| Company | CVR | Financial periods | Participants | Presence | Contacts | Mentions |
|---|---|---|---|---|---|---|
| PFP A/S | 10010691 | 5 | 4 | 4 | 43 | 83 |
| NYKREDIT A/S | 12719248 | 20 | 27 | 0 | 0 | 0 |
| HORN BORDPLADER A/S | 25798902 | 4 | 6 | 0 | 0 | 24 |
| LAVABO A/S | 29519501 | 5 | 5 | 1 | 3 | 0 |
PFP publishes three current graph neighbors: NYKREDIT A/S through a 90%
customer-of edge, HORN BORDPLADER A/S through a 60% competitor-of edge,
and LAVABO A/S through a 50% customer-of edge. The graph contract also
returns PFP when HORN, Nykredit, or Lavabo is the anchor. Each edge includes
its source URL, excerpt, observation time, and extractor version.
The counts above were measured with the earlier pipeline on 2026-09-11.
HORN and Nykredit did not publish website data then because ownership could
not be verified. On the deployed company pass HORN resolves to byhorn.com
(identity) and Nykredit to nykredit.dk (judge-related, brand); see
the deployed measurement above.