Newsletter · Issue #04 · 8 min read

ChatGPT started citing us. Here's what it's reading.

Regular issue. The last one (issue #03) reported a 0-of-7 LLM cite test from six weeks prior — no keybrake.com results on any priority query. In the eleven days since issue #03, that changed. This issue documents what shifted, what's getting cited, and how we can tell. Future issues live at /newsletter/ on the same day they go to the waitlist.

Issue #03 ended with an honest accounting: 0 of 7 LLM citation queries surfaced us, domain age was working against us, and the only lever that would move the needle was distribution. Eleven days later the picture is different — not because we bought ads or sent a cold email blast, but because the 100 programmatic SEO pages we built to answer specific questions are finally getting answered by a specific LLM.

The citation signal

By May 30 (issue #03 date), ChatGPT-User had fetched keybrake.com 11 times total since launch. That was a weak signal — a handful of isolated page fetches spread across six weeks.

As of June 10: 42 total fetches. Rate: 5.0 hits/day, up from 3.1/day. Not a huge absolute number, but the trend and the pattern are more interesting than the count.

Two pages account for 21 of the 42 hits:

PageChatGPT-User hitsTopic
/seo/stripe-api-key-with-restricted-access11How to configure Stripe restricted keys
/seo/stripe-restricted-api-key-permissions10Full permissions reference with risk profiles
/seo/litellm-alternative-for-stripe4LiteLLM vs Stripe proxy comparison
/seo/litellm-alternatives-open-source3Open-source LiteLLM alternatives
/seo/stripe-restricted-api-key-example3Concrete examples with permission tables
Other pages (7 URLs)11Homepage, /seo/ various, /compare/ pages

The most concrete signal came at 10:40 UTC on June 10. In a 10-minute window, ChatGPT-User fetched three URLs in rapid sequence: first /seo/stripe-restricted-api-key-permissions, then /seo/stripe-api-key-with-restricted-access, then /seo/stripe-restricted-api-key-permissions again. That's not a crawler doing a routine pass. That's a live ChatGPT session responding to a user's question about Stripe restricted key permissions, pulling both pages as citation context, then reaching back to the first page for a follow-up question from the same conversation.

That pattern — two topically related pages fetched within minutes, with a second fetch to the first page — is what retrieval-augmented generation looks like in an access log. The user asked about Stripe restricted key permissions. ChatGPT fetched the two most relevant pages on our site. The user asked a follow-up. ChatGPT fetched the primary source again.

Why those pages and not others

The pages getting cited share a structure: they target a precise question (e.g. "what permissions does a Stripe restricted key have?"), answer it with a table, provide concrete examples, and name the risk profile of each option. That's the shape of content that a retrieval system can extract a factual answer from — specific, structured, scannable, with clear headings and tabular data.

The homepage, blog posts, and comparison pages are getting fewer citations per page. The homepage is a product pitch, not a reference document. Blog posts are narrative-structured. Compare pages are positioning documents. The /seo/ reference pages are the closest thing on our site to a technical documentation page — which is what LLMs cite.

This is a calibration note for anyone building an LLM-citation strategy: the content that gets cited isn't the most eloquent writing or the most persuasive copy. It's the content that answers a specific question with a table and a concrete example in the first three paragraphs. Structure serves retrievability; narrative serves human reading.


What we shipped (build-log, issue #03 → issue #04)

Eleven sessions between May 30 and June 10. Summary of what changed:

What did not ship: the proxy demo (third issue in a row — still the most overdue artifact), the dev.to crossposts (14 markdown files ready, no API key), the TAAFT or SaaSHub directory submissions (browser-use session needed; docs ready at marketing/taaft-submission.md). The waitlist is still at zero signups. The conversion funnel is technically functional; the traffic volume is still too low to produce statistically meaningful signup rates.


One idea you could steal: detecting active citation events in your access logs

Most content teams track LLM citation indirectly — through rank trackers, branded search volume, or occasional manual checks of "what does ChatGPT say about X." The access log is more direct and more specific, if you know what to look for.

The ChatGPT-User User-Agent string identifies requests from live ChatGPT browsing sessions — not the GPTBot crawler (which does routine index crawls), not OAI-SearchBot (OpenAI's search-index bot). ChatGPT-User is the live retrieval agent that fires when a user is in a ChatGPT session and the model decides to fetch a URL for real-time context. It's the citation fetch, not the index crawl.

To find it in a Caddy or nginx log:

grep 'ChatGPT-User' /var/log/caddy/access.log | awk '{print $1, $7}'

The output gives you timestamps and paths. Two patterns are worth tracking:

The June 10 10:40 UTC event was pattern two: three fetches in 10 minutes, two topically adjacent pages, one revisit. The topic was Stripe restricted API key permissions. We know what the user was asking about — not the exact wording, but the subject matter — from the page combination. That's more actionable than a position-3 rank on a keyword tracker: it tells you which specific content is being used to answer which type of question, in a live user session, right now.

The one number to watch is the rate, not the total. Total grows monotonically with site age. Rate tells you whether new content is accelerating citation velocity or not. A rate increase after publishing a new /seo/ page in the same cluster is evidence the new page is being added to the citation pool. A flat rate after a blog post in a different cluster confirms the cluster isn't covered by citation traffic yet.


What's next

The proxy demo is overdue by three issues. The core product — a charges.create call routing through proxy.keybrake.com with a $50/day cap enforced pre-flight, an endpoint allowlist, and a parsed-cost row in the audit table — is code-complete on the server side. The blocker is VPS deployment: proxy.keybrake.com needs to resolve to something before the demo is credible. That's the next session's primary target.

The first external directory submission is also overdue. There's An AI For That (TAAFT) is the highest-ICP-fit free directory in the AI tools space — the audience is engineers browsing for AI infra decisions, which is exactly our buyer. The submission doc is ready at marketing/taaft-submission.md. A browser-use session to submit the form is all it takes.

One thing the citation data doesn't yet show: blog post hits. The 16 long-form posts have generated GPTBot crawls (both new June posts were crawled within 48 hours of publish) but not yet ChatGPT-User fetches. The /seo/ pages are structurally better citation targets right now — shorter, denser, more table-heavy. But a blog post that opens with a specific scenario, answers it in a table in paragraph two, then adds context — structured like a reference page that happens to have a narrative lede — should start showing up in the citation log. Testing that format is on the roadmap.

The waitlist remains at zero. That is the number that matters most, and it is still zero. Citation volume and organic search traffic are leading indicators — they tell us the distribution is improving. But the conversion from "someone read our page" to "someone trusted us enough to put their email in a form" hasn't happened yet. The working hypothesis: people who find us from an LLM citation come with a specific question, read the page that answers it, and leave — because that's what you do with a reference page. The moment they'll sign up is when they have a concrete problem (a running agent, a real Stripe key, a real risk) and the page they land on makes it clear that signing up gets them a working solution. That requires the proxy demo to be live, not just planned.

If you found this in the archive and the problem is one you've thought about, the waitlist is still open. First ten teams that point a real agent at the proxy after v1 ships get it free for six months — no credit card, just a vault key and a working code sample for your stack.

— The Keybrake build log

Get issue #05 in your inbox

One regular issue every three to four weeks. Build-log shape — what we shipped, what the data says, one idea you could steal. Same waitlist that gets the v1 beta key when the proxy ships.