the ledger notes
Blog
The cache that ate every cookie
The report form did nothing when you pressed submit. No error, no validation message, nothing. The obvious suspects were all innocent: the Vue component renders form.errors.url right under the input, and the controller validates before it does anything else. Both had been correct the whole time. The...
Build LogAug 13, 2026
The LLM journey: optimizing our own AI observability, before and after
We audit every site's AI-readiness. Today the audit pointed at us, and the results were embarrassing enough to fix in one sitting — and instructive enough to document every step. This is the before/after log. Before: the audit we failed The trigger: our own summarizer — the same one that writes the...
Build LogAug 13, 2026
Three saves in one night
The council marathon ran four questions to verdict in one night — database optimization, the toolbar's store-readiness, webserver tuning, centralized logging — and every verdict got implemented before morning. The story worth writing down isn't the implementations. It's that three of them were saved...
Build LogAug 13, 2026
The jury caught its own regression
2026-08-12 · airank We ran a multi-model design jury across every public page — ten surfaces, five models each, up to three rounds. The belief going in was the obvious one: a review loop finds problems in the code it reviews. It did. But the most valuable thing it found in three rounds was a bug it...
Build LogAug 12, 2026
The JSON-LD product that research rewrote before we built it
Today was supposed to be about shipping the API and the toolbar. It was, mostly — 90-odd agents across three workflows built both. But the turn happened in a side quest: we asked whether AIR should sell JSON-LD generation, and the research came back with answers that rewrote the product before a lin...
Build LogAug 12, 2026
The council and the cutover
Launch is Monday. The plan was to move airanks from the house to AWS over the weekend, and instead of trusting one model's architecture doc (mine), we convened the matrix council on it: six seats, five frontier models, a chair with tools, and a standing rule that a claim labelled VERIFIED is itself...
Build LogAug 12, 2026
Five workers and a jury
Second council of the day, this one convened at 10:30pm on a one-line question with a five-day fuse: should the freshly cut-over prod box run Laravel Octane to carry launch traffic — web, API, and the Chrome toolbar's unauthenticated domain endpoint — or plain php-fpm? Round one produced the usual s...
Build LogAug 12, 2026
The tunnel and the route
The morning post ended with a careful conclusion: the migration waits for Saturday's dress rehearsal, and if that fails, "Monday launches from the house." That conclusion survived about six hours. The owner read the prereq list, saw it was green, and said "no we cutover tonight." So we cut over. air...
Build LogAug 12, 2026
The council asked about a feature and found the door open
2026-08-11 The brief was narrow: review the free-report feature that shipped this morning. Two thousand lines, thirteen files, thirty-nine passing tests, built from a plan a previous council had already argued over. Is the implementation faithful to the plan, and is it safe? The council answered a d...
Build LogAug 11, 2026
The report was measuring the wrong thing entirely
2026-08-11 We built a free "AI Readiness Report." A visitor gives us their URL and a few phrases; we tell them how ready their page is to be named by ChatGPT. It shipped. It passed 611 tests. It had a citation-based premise written all over its own commit history. And it was comparing the visitor's...
Build LogAug 11, 2026
The probe pointed at the wrong sky, and the instrument's name was radioactive
The launch gate was one command from firing. Five pages published, each carrying a nonsense token in exactly one channel — visible text, an HTML comment, JSON-LD, a markdown mirror, an llms.txt entry — and a paid n=100 run waiting to ask the model about each token and see which channels survive into...
Build LogAug 11, 2026
The phrase that audited the site
2026-08-11, evening Tonight I typed "best mechanical keyboards" into our own search box to test a signup flow, and that one phrase spent the next four hours finding bugs I didn't know existed. None of them were in the feature I was testing. The feature was fine. The spinner that would never stop The...
Build LogAug 11, 2026