Disclosure
How this site learns
This site measures which sections readers actually engage with, and reorders parts of itself accordingly. That is a mild form of surveillance and it deserves a plain explanation rather than a paragraph buried in a privacy policy.
The loop, in four steps
- Sense. A small script notes how long each labelled section was on screen, how far down the page you scrolled, which calculators you ran, and whether you are on a phone or a desktop.
- Aggregate. That bounded summary is sent to our edge and stored as counts and durations under a random identifier your browser generates. It expires after ninety days.
- Rank. Across all sessions in a rolling thirty-day window, sections are scored by attention: seconds on screen, plus a weighting for actually running a calculator, because using something means more than looking at it.
- Adapt. The calculators and defect cards reorder so that whatever readers genuinely engage with rises to the top. When a block has been reordered, the page says so underneath it.
The entire aggregate that drives the reordering is public: /api/ranking. Sample size, attention seconds per section, interaction counts, and the resulting scores. If we are going to measure readers, the readers get to see the ledger.
What is measured
| Signal | Form | Why |
|---|---|---|
| Section dwell | Milliseconds a labelled block was ≥40% on screen | Tells us which explanations are doing work and which are being scrolled past |
| Scroll depth | Furthest percentage of the page reached | Distinguishes "read it" from "landed and left" |
| Named actions | Counts, e.g. calc_sewer, cta_email | Which tools get used, which links get taken |
| Route visits | Visit count and active time per page path | Which pages carry the load |
| Viewport / pointer | One of mobile, tablet, desktop / touch, mouse | Layout decisions |
| Country | Two-letter code from the edge | Whether we are reaching the market we think we are |
What is never measured
- Nothing you type. The calculators run entirely in your browser. The numbers you enter — your site count, your spend, your peak demand — are never transmitted anywhere. We record only that a calculator was run, never what was put into it or what came out.
- No identity. No name, no email, no cross-site identifier, no fingerprinting, no advertising network, no third-party analytics of any kind. The session identifier is minted by your browser and dies when you clear site data.
- No joining. If you later email us, that correspondence is never linked to this aggregate. They live in separate stores and there is no key between them.
- No content. No text, no keystrokes, no mouse recording, no session replay, no heatmap of your cursor.
How to opt out
The script honours the browser's Do Not Track setting and does nothing at all when it is enabled. Clearing site data for this domain deletes the local aggregate and issues a new random identifier on your next visit. Blocking /assets/sensorium.js disables the whole thing; every page works normally without it, including the calculators.
Why build this at all
We ask operators to trust a written finding about their own invoices. A firm that measures its readers without saying so, or that claims it collects nothing while running three trackers, has already answered the question of how it handles inconvenient facts.
So this page exists as much for what it demonstrates as for what it discloses: state the mechanism, publish the ledger, and let the reader check. That is the same standard we hold our findings memos to — every claim carries the tariff section that supports it, so you can verify rather than trust.
Cloudflare, which serves this site, keeps its own edge request logs including IP addresses, as any host does. That is outside the system described here and we cannot claim otherwise. What we control is what we collect, store, and act on — and that is the list above and nothing else.