# Detection: 2,932 companies scanned for a signal that is an absence

Window: Aug 25 to 26

The companies a Stripe partner manager most needs to reach are invisible in the CRM, because nobody has integrated them yet. The signal I wanted is a company with real traction and no visible payment processor. That signal is an absence, and an absence is the easiest thing in GTM data to get wrong.

## Key numbers

- YC companies loaded: 2,932
- Scored above zero, the deliverable: 909
- Credits, predicted vs actual: 11,524 vs 11,518 (5,762 vs 5,756 executions. Cost was predicted before it was spent.)
- UNCLEAR rate, full run: 59.2% (Reported, and it rises with company youth. The instrument is weakest where the thesis is strongest.)
- Evidence URL coverage: 620 of 909 (199 of the 609 top-scoring rows carry an absence claim with no clickable citation. Named in the writeup as the weakest part of the deliverable.)
- Stripe-only companies showing metered pricing: 201 of 433 (The first draft said 24 of 51. Those were sample numbers carried into a full-pool claim without being recomputed. The draft was wrong; this is the corrected pair.)

## The memory layer

So the scan writes snapshots to Supabase through a Deno edge function, and change becomes an event with a date attached instead of an untestable claim. The seeded test produced exactly three change events, at 90, 11 and 45 days, and zero events on 28 first observations, which is the least interesting result to look at and the most important one to get right. Five days of live drift moved 14 of 50 rows.

## What broke

A billing-category run returned a 49.3% opportunity rate: 36 of 73 companies read as payments-closed but billing-open. Then I killed my own number. Zero billing vendors detected across 73 domains whose scans succeeded, and zero detections of Paddle, Chargebee or Recurly across 300 domains, through the same mechanism that found Stripe 56 times. The scanner reads the client side. Server-side billing never renders there, so a NONE for that category was structurally guaranteed. The 49.3% measured BuiltWith's blindness rather than the market.

The guard I wrote afterward is the reusable lesson: run the vendor list against companies known to use those vendors first. If detection is zero, the category is unmeasurable and NONE means nothing. That check is cheap, and it would have caught this before 146 executions.

Two of the model's five signals were cut, and the cuts are named in the deliverable. Hiring intensity died because the jobs provider returned zero across 71 attempts; a controlled retest showed the zero was the instrument, a title filter matching 8.4% of postings. Capital window was cut on budget rather than evidence, which is the honest reason.

## Debrief

Every failure in this stage had the same shape: a thing that did not happen presenting as a thing that did. The four-state detection design exists because Clay cannot tell we looked and found nothing apart from this input is unset, and the signal I care most about is an absence.

Source page: https://suryapugaz.com/special-stage/recon
