About · method
Every number on this site is a public record with a date on it
Kova Signals reads named public government files and sells the reading. The product is the feed: records read each morning, cut to what you buy, delivered with the source linked on every row. The permits we read are City of Chicago's today. If you bid work there, the feed is for you — whatever state your yard is in. We add a market when its public data is good enough to measure, never before. This page is the method: where the data comes from, how a record earns its row, what a new market has to clear before we sell it, and who is reading the file.
Four public datasets. The IDs are the product spec.
Everything we sell is a reading of one of these files. All four are public and free at the source — what subscribers pay for is the daily reading, the filtering, and the join work, never access to public data.

| Dataset | Publisher · file | What we read from it | Measured |
|---|---|---|---|
| ydr8-5enu | City of Chicago · building permits | Every new permit the City issues — address, permit type, reported cost, and who is attached. | 2,744 permits issued in the last 30 days · 2026-07-29 |
| wb4f-neki | US DOT / FMCSA · registration orders | Motor carriers served a suspension notice, with the date operating authority is lost. | 3,681 suspension orders in June 2026, nationally · 2026-07-28 |
| r5kz-chrr | City of Chicago · business licences | Licences just issued (openings) and licences approaching expiry (renewals). | 325 openings a month · 4,162 renewals inside 60 days · 2026-07-29 |
| ezma-pppn | City of Chicago · business owners | The business officer's name, joined onto each licence record before delivery. | measured with r5kz-chrr · 2026-07-29 |
How a record earns its row
01 · Source
Named public government datasets, nothing else. No purchased lists, no scraped inboxes, no data broker. Every dataset ID is printed on this page and in the footer of every other one, so you can go around us and pull the same file yourself.
02 · Read
The engine pulls every source each morning at 07:00 America/Chicago. The weekly permit-record pages on this site re-read the City's file daily on top of that, so a finished page keeps catching records the City files late.
03 · Verify
Every row keeps its link back to the government record it came from — check the source before you believe us. Records render as issued; we add no estimates. When a portal fails to answer, the page prints the failure instead of a stale or invented table.
04 · Deliver
Each feed is cut to what you buy — a trade, a state, a licence category — and delivered by email, source link on every row. The first delivery is always the reverse demo: three real records, free, so you check the product before any money moves.
Next morning pull
--:--:--
07:00 America/Chicago, daily — every source re-read, every feed refreshed
What we won’t publish
The caveats carry the same weight as the claims. Five standing refusals:
- [Refused]A number without a named dataset and a measurement date on it.
- [Refused]Rates we have not verified by sampling the records ourselves — cure rates, close rates, conversion rates, ROI figures.
- [Refused]A named firm's counts on a public page. Aggregates only — the record-level detail belongs to the subscriber it concerns.
- [Refused]A stale or invented table. When a source does not answer, the page says so.
- [Refused]A trade we measured and could not help. Roofing and masonry came off the list in August 2026 because targeting them measured worse than random, and we would rather lose the sale than sell you noise.
If we emailed you
Everything we know about you came from a public government file anyone can download. For a Chicago contractor, that is your firm name, your trade, your business mailing city and ZIP, and two numbers: permits last month, permits this month. No personal contact details, no home addresses, no financial data. Reply once and we delete the record — we do not sell, share or rent anything.
Worked example · the trades we stopped selling
Two trades came off the list because the numbers said we would be wasting your money
We tested every trade the same way: take renovation permits whose description matches that trade’s keywords, and count how often a permit in that trade was later filed at the same address, against the rate for renovation permits that did not match. If matching does not raise the rate, the keyword bundle is not a signal — it is a mailing list with a story attached.
| Trade | Matched permits | Follow-on rate | Unmatched rate | Lift |
|---|---|---|---|---|
| Electrical | 5,522 | 24.14% | 8.76% | +15.38 pts |
| Fire alarm | 6,615 | 21.65% | 4.51% | +17.14 pts |
| Signs | 1,743 | 17.79% | 2.88% | +14.91 pts |
| Plumbing[Dropped] | 3,152 | 1.05% | 0.74% | +0.31 pts |
| Roofing[Dropped] | 2,463 | 0.69% | 0.75% | −0.06 pts |
| Masonry[Dropped] | 3,635 | 0.96% | 1.99% | −1.03 pts |
Roofing and masonry are negative. Matching those keywords made the follow-on rate go down, which means a roofing or masonry list built this way is worse than picking addresses at random. We stopped selling both. Plumbing is positive by a third of a point, which is not enough to charge for, so we do not.
A follow-on permit rate is evidence that work follows. It is not a promise you will win it.
What a new market has to clear
We start where the public data is good enough to measure
The market is where the work is, not where the buyer is. A firm based anywhere that bids into Chicago and Cook County is a customer today. What we will not do is name a second market in our copy before its own file has been measured — so here is the gate, and where the nearest candidate actually stands.
- ReadThe market's permit dataset is pulled, its schema mapped, and its trade filters keyed to what the work description says rather than to the publisher's own label for it. A filter keyed to a publisher's label is one silent rename away from an empty feed, and we already have that scar.
- MeasureThat market's own follow-on odds and its own watchlist lift are measured on that market's own data, with its own control group. Chicago's numbers are Chicago's and never transfer — not as an estimate, not as a range, not as “comparable.”
- GateA claims-ledger entry exists for that market's numbers, with a dated measurement a skeptic can re-run, before any copy names the market. No entry, no sentence.
Where Naperville stands · read, not measured, not claimable
STEP 1 PASS — its permit file has been read: 33,217 permit rows across 3,424 firms, pulled 2026-08-04.
STEP 2 FAIL — no follow-on measurement has been run on Naperville data. We do not know its cross-trade rate, its median lag, or whether a watchlist equivalent exists there.
STEP 3 FAIL — no claims-ledger entry.
So no page, email or call from us says Naperville, DuPage, or “the suburbs” as covered ground until steps 2 and 3 pass. Having read a file is not having measured it, and the distance between those two is the entire product.
Worked example · schema drift
When a dataset changes shape, nothing breaks loudly
Public data is free and public data moves. This is the case that explains what the daily reading is actually for, written out in full because a subscriber is entitled to check our work.
Query log · ydr8-5enu · 2026-07-29
[MISS]permit_type = "PERMIT - ELECTRIC WIRING"
→ 0 rows (all time)
hyphen, U+002D · type retired July 2026
[HIT]permit_type = "PERMIT – EXPRESS PERMIT PROGRAM"
→ 165 rows (week of 2026-07-22)
en-dash, U+2013 · where electrical work files now
What changed. In July 2026 the City of Chicago retired the permit type PERMIT - ELECTRIC WIRING in ydr8-5enu. It does not return a deprecation flag or a partial result — it returns zero records, for all time, as though electrical permits had never existed. Electrical work now files under PERMIT – EXPRESS PERMIT PROGRAM.
The second trap, inside the first. The new type is spelled with an en-dash (U+2013), not a hyphen. Typing the obvious hyphen matches zero rows, and the query looks perfectly reasonable in the editor. Two different spellings of the same string, one empty feed.
Why it is dangerous rather than annoying. Neither failure raises an error. A pipeline keyed to the old type keeps running, keeps delivering, and delivers nothing — which is indistinguishable from a genuinely slow week in a trade. A buyer would have no way to tell, and neither would an engine that trusted its own filter.
How we found it, and when. 2026-07-29, while building sample record packets by hand. The week of 2026-07-22 carried 165 electrical-scope express permits that a filter on the retired type would have silently dropped.
What we changed because of it. Trade filters key on the work described in the record, not on the City’s label for it, and weekly volume floors run as a regression test — signs 32, wrecking 16, renovation and new construction 185, electrical-scope express 165 for that week. An electrical count near zero now means the mapping broke, and it gets looked at before anything ships.
Dataset ydr8-5enu · counts measured 2026-07-29 · amendment recorded the same day
Who runs it
Kova Signals is run by Al Cirton from Chicago, Illinois. The emails come from him, and the fastest way to test the method is to ask for three real records.