This site’s own data
Each night a pipeline collects this site’s Cloudflare analytics and its GitHub activity, models them with dbt in DuckDB, and tests them before anything here is published.
Data through (UTC days). 152 of 152 tests passed.
Python, dbt and DuckDB, rebuilt every night by GitHub Actions;
Reading this site
Since launch on 10 October 2026, clients naming a browser asked for 2,359 pages, and 140 browsers downloaded the site’s font.
The numbers
| Day | Browser page views |
|---|---|
| 10 October 2026 | 321 |
| 11 October 2026 | 204 |
| 12 October 2026 | 502 |
| 13 October 2026 | 513 |
| 14 October 2026 | 267 |
| 15 October 2026 | 123 |
| 16 October 2026 | 136 |
| 17 October 2026 | 114 |
| 18 October 2026 | 179 |
| Day | Browser page views |
|---|---|
| 10 October 2026 | 321 |
| 11 October 2026 | 204 |
| 12 October 2026 | 502 |
| 13 October 2026 | 513 |
| 14 October 2026 | 267 |
| 15 October 2026 | 123 |
| 16 October 2026 | 136 |
| 17 October 2026 | 114 |
| 18 October 2026 | 179 |
The numbers
| Day | Font downloads |
|---|---|
| 10 October 2026 | 26 |
| 11 October 2026 | 29 |
| 12 October 2026 | 10 |
| 13 October 2026 | 8 |
| 14 October 2026 | 25 |
| 15 October 2026 | 13 |
| 16 October 2026 | 3 |
| 17 October 2026 | 4 |
| 18 October 2026 | 22 |
| Day | Font downloads |
|---|---|
| 10 October 2026 | 26 |
| 11 October 2026 | 29 |
| 12 October 2026 | 10 |
| 13 October 2026 | 8 |
| 14 October 2026 | 25 |
| 15 October 2026 | 13 |
| 16 October 2026 | 3 |
| 17 October 2026 | 4 |
| 18 October 2026 | 22 |
Who else reads it
Page requests from anything that isn’t a person’s browser, by week, Monday to Sunday. Crawlers are named from what their user agent says, which anyone can fake. The latest complete week is 12 to 18 October 2026.
| Name | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| ClaudeBot (Anthropic) | 10 | 0 |
| OAI-SearchBot (OpenAI) | 7 | 2 |
| Meta-ExternalAgent | 0 | 8 |
| CCBot (Common Crawl) | 7 | 0 |
| GPTBot (OpenAI) | 5 | 0 |
| PerplexityBot | 5 | 0 |
| Google-CloudVertexBot | 4 | 0 |
| Bytespider (ByteDance) | 0 | 2 |
| ChatGPT-User (OpenAI) | 2 | 0 |
| Name | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| Googlebot | 28 | 2 |
| Applebot | 2 | 9 |
| Bingbot | 7 | 3 |
| PetalBot | 1 | 9 |
| Baiduspider | 5 | 3 |
| YandexBot | 4 | 0 |
| Name | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| Other bot | 25 | 50 |
| SemrushBot | 0 | 10 |
| AhrefsBot | 2 | 5 |
| MJ12bot | 6 | 0 |
| Facebook link preview | 4 | 0 |
| LinkedIn link preview | 1 | 0 |
| Slack link preview | 1 | 0 |
| X link preview | 1 | 0 |
| Name | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| curl | 187 | 32 |
| Headless Chrome | 119 | 2 |
| Python aiohttp | 12 | 36 |
| axios | 8 | 11 |
| Go HTTP client | 1 | 13 |
| Python requests | 4 | 3 |
| Python httpx | 3 | 2 |
| Scrapy | 0 | 1 |
| Name | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| Unrecognised | 716 | 1,376 |
Scans for software this site doesn’t run
This site is static HTML. These requests look for WordPress, PHP, hidden files and admin pages, hoping to find something to break into.
| Looking for | 10 Oct to 11 Oct | Week of 12 Oct |
|---|---|---|
| Admin pages | 59 | 304 |
| Hidden files | 545 | 1,696 |
| PHP | 1,000 | 1,982 |
| WordPress | 480 | 2,158 |
Pages, by month
Pages are counted for whole calendar months, once each month has ended and its last days have been read again. A page is named only when Cloudflare certainly saw at least 5 views of it from browsers that month; the views shown are Cloudflare’s estimates. October 2026 closes for counting on 4 November 2026.
Countries, by month
A country is named only when Cloudflare certainly saw at least 10 page views from browsers there, on at least 3 different days of the month; every other country is counted as Other. The views shown are Cloudflare’s estimates, and include the few views of pages outside the sitemap. October 2026 closes for counting on 4 November 2026.
Building the site
In the complete weeks since launch, 55 commits reached the main branch, 82% of them co-authored with Claude Code. Merges and the nightly data commits are not counted.
| Week | Commits | With Claude Code | Pull requests merged |
|---|---|---|---|
| 10 Oct to 11 Oct | 31 | 21 | 3 |
| Week of 12 Oct | 24 | 24 | 14 |
- October 2026 so far: 17 pull requests merged, a median of 20 minutes from opening to merge.
- CI ran 41 times and passed 40 (98%). Each run type-checks and builds the site, then audits every page with axe in both themes at four widths.
The numbers
| Step | Median time per step | Share |
|---|---|---|
| Accessibility (axe, both themes, four widths) | 1 min 21 s | 60% |
| Install browser | 25 s | 19% |
| Install | 11 s | 8% |
| Type check | 7 s | 5% |
| Test the MCP data bundle | 5 s | 4% |
| Build | 2 s | 1% |
| Bundle the Worker as a deploy would (nothing is uploaded) | 2 s | 1% |
| Check out | 1 s | 1% |
| Set up Node | 1 s | 1% |
| Step | Median time per step |
|---|---|
| Accessibility (axe, both themes, four widths) | 1 min 21 s |
| Install browser | 25 s |
| Install | 11 s |
| Type check | 7 s |
| Test the MCP data bundle | 5 s |
| Build | 2 s |
| Bundle the Worker as a deploy would (nothing is uploaded) | 2 s |
| Check out | 1 s |
| Set up Node | 1 s |
The pipeline
A Python collector writes each day’s totals as JSON in the site’s repository. dbt reads those files into DuckDB, models them in three layers and runs 152 tests, 3 of them unit tests of the publishing rules. Each mart is published either here or on Sleep Anchor’s website in numbers, which uses the same pipeline.
-
Raw files
raw/_lograw/brentburgess/countriesraw/brentburgess/fontraw/brentburgess/pagesraw/brentburgess/probesraw/brentburgess/responsesraw/brentburgess/rollupraw/github/commitsraw/github/pullsraw/github/runsraw/github/stepsraw/sleepanchor/clicksraw/sleepanchor/web
-
Staging
stg_bb__countriesstg_bb__fontstg_bb__pagesstg_bb__probesstg_bb__responsesstg_bb__rollupstg_gh__commitsstg_gh__pullsstg_gh__runsstg_gh__stepsstg_pipeline__runsstg_sa__click_daysstg_sa__clicksstg_sa__web_daysstg_sa__web_tables
-
Intermediate
int_bb__requests_classifiedint_calendarint_gh__ci_runsint_monthsint_sa__clicks_outboundint_sa_calendarint_weeks
-
Marts
agg_ci_steps_30dagg_countries_monthlyagg_pages_monthlyagg_sa_clicks_monthlyagg_sa_countries_monthlyagg_sa_web_breakdown_monthlyagg_sa_web_monthlyfct_checksfct_ci_dailyfct_crawlers_weeklyfct_font_dailyfct_github_monthlyfct_github_weeklyfct_pipeline_runsfct_probes_weeklyfct_reading_dailyfct_sa_dailysa_insights_monthly
Tests
| Model | Tests | Passed |
|---|---|---|
agg_ci_steps_30d |
8 | 8 |
agg_countries_monthly |
9 | 9 |
agg_pages_monthly |
7 | 7 |
agg_sa_clicks_monthly |
9 | 9 |
agg_sa_countries_monthly |
6 | 6 |
agg_sa_web_breakdown_monthly |
8 | 8 |
agg_sa_web_monthly |
7 | 7 |
fct_checks |
6 | 6 |
fct_ci_daily |
7 | 7 |
fct_crawlers_weekly |
7 | 7 |
fct_font_daily |
6 | 6 |
fct_github_monthly |
5 | 5 |
fct_github_weekly |
8 | 8 |
fct_pipeline_runs |
7 | 7 |
fct_probes_weekly |
6 | 6 |
fct_reading_daily |
4 | 4 |
fct_sa_daily |
13 | 13 |
sa_insights_monthly |
6 | 6 |
stg_bb__countries |
2 | 2 |
stg_bb__pages |
6 | 6 |
stg_bb__rollup |
2 | 2 |
stg_gh__commits |
2 | 2 |
stg_gh__pulls |
2 | 2 |
stg_gh__runs |
2 | 2 |
stg_sa__click_days |
1 | 1 |
stg_sa__clicks |
1 | 1 |
stg_sa__web_days |
4 | 4 |
user_agent_rules |
1 | 1 |
Checks
- Note Sampling. Cloudflare sampled requests on 9 days and scaled the counts up.
- Passed No day is missing. Every day since launch was collected.
- Passed No query was cut short. No query hit Cloudflare's row limit.
- Passed Totals agree with Cloudflare’s own daily count. 9 of 9 days within 20% of Cloudflare's daily rollup.
- Passed Up to date. Data through 18 October 2026, collected 19 October 2026.
Recent runs
The collector’s last 4 runs: 3 read every source.
- : every source read, 24 s
- : every source read, 8 s
- : every source read, 15 s
- : 2 sources failed, 29 s
Sources
- Cloudflare request analytics: through 18 October 2026
- GitHub activity: through 19 October 2026
- Collector log: through 19 October 2026
How these numbers are made
Cloudflare serves this site and counts every request it handles. Each night the collector copies the previous day’s totals, reduced as the privacy page describes: no IP addresses, no full user agents, no referrers and no query strings are kept. A user agent becomes a class and a name from a fixed list, and a page outside the sitemap is counted only as other.
Cloudflare counts some requests from a sample and scales the totals up, so small numbers can move a little. The thresholds for naming a page or a country count only the views Cloudflare certainly saw, never its scaled-up estimate. The collector reads each day on three nights in a row as Cloudflare fills in late data, which is why monthly breakdowns wait until the 4th of the next month.
A failed test stops the nightly update, so the page keeps the last numbers that passed. GitHub activity comes from GitHub’s API: commits, pull requests and CI runs, with no commit messages, names or branch names.