Leak Agent · Channing & Co

Eight revenue leaks, scored from outside the building.

A publisher's own site is the only thing a stranger is allowed to audit. This agent reads it the way a buyer would — where the email capture sits, what the ad load costs, whether the affiliate links still pay, what the schema qualifies for, what monetizes the betting traffic, whether the events take money — and returns a score with the evidence attached to every claim.

8
leaks checked
6
detected automatically
<20
requests per publisher
0
claims without evidence

How it reads a site

01

Sample

Homepage plus a handful of article pages, found through the sitemap rather than guessed. Robots respected, one request per second, every fetch cached so re-scoring never re-crawls. These are people worth emailing later — showing up as a bad crawler first is a cost, not a detail.

02

Score

Each leak returns a severity, a confidence, and a revenue weight. The leak score is weighted severity across the checks that actually ran — and coverage reports how much of the model that was. A score at 71% coverage is a different claim from one at 100%, and saying so is the difference between an honest number and a flattering one.

03

Evidence

Every finding carries the URL and the observation behind it. Not "newsletter capture could be stronger" but "no email input, ESP embed, or subscribe form on any of four content pages, here they are." A claim a stranger can verify in ten seconds is the only kind worth putting in front of one.

The eight leaks

Weights are revenue impact for a regional or independent sports publisher. They are a defensible prior, not a measured finding — drawn from how these sites actually earn, and due to be re-derived from the benchmark once enough engagements show which fixes moved money. The page says so because the report says so.

01
No email capture on the highest-traffic content typeauto
Looks for an email input, an ESP embed, or a subscribe-shaped form on article pages — and separately whether it sits inside the article body or only in the footer. Footer-only capture converts so badly that publishers running it usually conclude newsletters don't work for them.
0.18
02
Ad density costing more than it earnsauto
Distinct ad placements per thousand words, third-party script hosts, transfer weight. Reports itself as a structural proxy unless a PageSpeed key is present — it will not quote a Core Web Vital it did not measure.
0.08
03
Untagged, broken, or dead affiliate linksauto
Separates two different failures with two different fixes: links that work but carry no tracking parameter, so the commission goes to nobody, and links that no longer resolve because the offer expired or the operator left the state. Usually the biggest line running unattended.
0.20
04
A newsletter with no monetizationmanual
Requires subscribing and reading three sends, which take days to arrive. Takes structured manual input rather than pretending to automate it.
0.06
05
No structured data on content that qualifiesauto
Parses every JSON-LD block, checks for an Article-family type, then checks whether that Article carries the fields required for rich results. Partial schema is the most common real state and the most useful finding — naming the missing field is what proves someone looked.
0.11
06
Invisible in AI answersmanual
Three questions the archive should own, and a record of who gets cited instead. Judgment-heavy enough that automating it would mostly automate being wrong.
0.13
07
Betting-adjacent traffic with no betting unitauto
Requires a real concentration of betting language before calling a page adjacent — "preview" appears everywhere. An untagged operator link counts as a leak, not as monetization: that is free traffic handed to the book.
0.14
08
Events with no commerce pathauto
Finds the events surface from navigation, then follows it looking for ticketing, checkout, or an RSVP capture. Records whether events run at all separately from whether they are monetized — the audience shows up and nothing on the site takes money.
0.10

What it refuses to claim

The output goes to a stranger who did not ask for it. That makes a confident wrong answer more expensive than no answer, and most of the design work went into the places where the agent has to say it doesn't know.

A check that didn't run is not a passing grade

Unscorable checks drop out of the denominator instead of quietly counting as clean. Scoring a check that failed to run would reward broken detection with a better number — exactly backwards.

An unreachable link is not a dead link

Blocked egress, a refused user agent, and a genuine 404 are indistinguishable from outside. Only real HTTP failures are reported as dead; the rest are listed as unverified. Telling a publisher their links are broken when the network was the problem is the single most credibility-expensive mistake available.

A hosted platform is not a decision

Substack and its equivalents supply capture, schema, and a clean ad stack for free. Three checks then pass without the publisher choosing anything. Those runs are flagged, excluded from the benchmark, and reported as not comparable — otherwise they poison every percentile drawn from it afterward.

A prior is not a finding

The leak weights are reasoned, not measured. The report says so in its own footer, and will keep saying so until the benchmark is large enough to replace them with evidence.

Three bugs the tests caught

Twenty-seven fixture tests run without a network, each with a known-correct answer. They exist for one reason: to catch the false positive before it reaches somebody's inbox. Three found so far, all of which would have shipped.

Every site looked over-monetized

One physical ad slot appears in the markup three times — as a defineSlot call, as a div with a matching id, and as an ad-ish class. Summing the matches tripled the count and flagged healthy sites as heavy. Fixed by counting two independent views of the same thing and taking the larger.

An untagged sportsbook link marked the leak clean

A raw operator link was being read as a betting unit, which closed the check and hid the worst version of the problem: betting traffic sent to the book with no affiliate parameter on it. Operator links now only count as monetization when they are actually tagged.

A blocked network reported four dead links

Found in a live end-to-end run, not in a test. Every affiliate probe returned no response and the report confidently called them broken. Now only real HTTP failures count as dead, and a site where nothing could be probed returns unknown rather than a flattering clean.

The agent is the tool. The benchmark is the asset.

Every run appends one row — one per publisher, so re-scoring a site while tuning detectors never lets it vote twice. Percentiles stay suppressed until the sample is large enough to mean something, because a percentile drawn from four sites is a lie with a decimal point on it.

What accumulates is the part that cannot be copied by pointing a general-purpose model at the same page: a record of how mid-market sports publishers actually monetize, built one verified scan at a time. It is what turns "this could be better" into "this sits in the bottom third for sites your size," and it costs nothing extra per run.

The detectors are replaceable. Vendor fingerprints rot and get rewritten. The record does not.

Status · v1

Eight checks defined, six automated, twenty-seven fixture tests passing. Hosted-platform detection, evidence capture, and the benchmark are in. The first live runs against real publishers are pending — which is stated here rather than implied away, because fixture tests prove the logic works and prove nothing about the open web.

This agent measures one region of a larger map. The terrain it sits inside — every place a sports publisher earns, and what has to be true underneath each line — is documented separately.

The sports publisher monetization stack

Run it on your site

Name the site and the report comes back: all eight leaks scored, the evidence behind each one, and the single finding worth acting on first. No charge, and nothing follows it unless you ask.

Got it. The scan is run by hand, so expect the report within a few days — it arrives as one email with the findings and the evidence behind them.
That didn't send. Email channing7@gmail.com with the site and the scan will still get run.

Every scan is run and read by hand before it goes out — an automated report that is confidently wrong about someone's own site is worse than no report. Expect a few days, not a few seconds. One email, no sequence, no list.