Case study · SEO + AEO · A product I built myself

Bet Better: 1,200 organic clicks a week in six weeks, on a product I own.

Bet Better is a sports analytics product I built from a blank file. Models, site, content: all of it mine. There is no client confidentiality in the way. I can open Google's own traffic report on a call and scroll it with you. It went to 1,200 organic clicks a week in six weeks, from a small base. That is a small site doing well. This page shows the method that got it there.

One of four things I sell: Websites · SEO + AEO · CRO · Automations & AI. This is the SEO + AEO method, on my own site.
Product
Bet Better (betbetter.world): sports analytics, one free pick a day, a public results ledger, paid access to the full board
Who owns it
I do. Built solo, blank file to production. Nothing on this page is client-reported.
Scope
Site structure, content generated from data, machine-readable data, answer-engine access, a free API and published research.
Stack
ASP.NET WebForms behind CloudFront. An older stack, chosen on purpose, running a current search and answer-engine setup.
Window
Six weeks, Google Search Console, organic only.
Verified
By me, on my own property. Every mechanism below can be checked by you from outside the site.
1,200organic clicks a week · six weeks · from a small base
The number, and where it comes from

An absolute number.

A multiple off a small base is arithmetic. I am not publishing one. 1,200 organic clicks a week is the level the site reached over six weeks. The base it started from was small. If you want to see the base, book a call and I will open the report in front of you.

Search Console Organic only Six weeks My own property
Google Search Console, Performance > Search results, organic only, six weeks. Bet Better is my own product.
No AI-answer figures on this page. The report that produces them does not yet meet my standard for a number I would publish. It stays off until it does.
The situation

A crowded category and a site with no client to protect.

Sports betting content is one of the most competitive categories on the web. Bet Better enters it in public.

Bet Better publishes one free pick a day. It grades every pick against the final score. It keeps the whole record on a results page anyone can read. The paid tier is the same product at greater volume. That makes it a useful test bed for search and answer-engine work. The content has to be specific enough to be checked. The site has to be trusted enough to be cited.

It is also mine. That changes what I can show you. On a client job I publish the mechanism and leave the traffic alone, because a client's traffic report is not mine to open. Here I can do both.

Nothing reports when an AI answer leaves you out.

What did the work

Six decisions that produced the result.

Each is a choice about how the site is built. Each applies to a clinic, a vet group or a trade business as much as to a sports site. None is a tactic that stops working when a platform changes its mind.

01
Every page answers its question in the first screen.

The web address, the title, the main heading and the first sentence all state the same question and answer it in plain language, before any preamble. A stats page titled "How many home runs does Max Muncy hit?" opens with a dated number. An AI answer engine reads the words on the page. A fact that only lives in the code is invisible when it matters. For a clinic, the equivalent is a heel-pain page whose first line says what heel pain is and which clinic treats it.

Visible facts in visible text
02
Let the AI crawlers in, on purpose.

Most sites blocking the crawlers from OpenAI, Perplexity or Anthropic are doing it by accident: a hosting rule, a plugin default, a setting left as installed. Bet Better's robots.txt, the file that tells crawlers what they may read, names ten AI crawlers and allows each one in writing. Nobody reports a citation you never got. The decision has to be made on purpose and written down where a machine will find it.

Ten crawlers, named, allowed
03
Gave the machines a manual.

The llms.txt is a plain-text file at the root of the site written for AI systems rather than people. This one is 23,540 bytes. Most of it is not a list of pages. It explains how the site's addresses are built, then says in words which page to cite for which kind of question. A second file carries the research summaries so an engine can read the substance without crawling for it.

llms.txt as a manual
04
Made the business impossible to confuse with another.

Every page carries one connected block of machine-readable data about the business. That block lists thirteen outside places where the same name can be confirmed: social profiles, company registers, a researcher ID for me, knowledge-graph entries for the company and the founder, and public identifiers. Machines cite a business they can identify without doubt. A business whose details differ from page to page fails that test.

Thirteen identifiers, one graph
05
Published the research as research.

Three working papers with permanent DOIs, the citation identifiers academic papers carry, and four open datasets, all free to reuse. The first paper measures bookmaker margins across 4.27 million odds observations. A free API, a way for other software to fetch the data directly, sits behind a published specification. Citable research is a stronger signal of authority than any number of blog posts. Nobody else in this category produces it.

Three DOIs, four datasets, one API
06
Kept the addresses still and shipped weekly.

Article pages update in place as the odds move. They do not move to a new dated address each time. Authority builds on one address instead of scattering. A separate news sitemap lists the freshest 242 pages on a rolling 48-hour window so new material is found within hours. There was no launch and no campaign. The site got a little larger and a little more precise every week.

Stable addresses, rolling freshness
Verifiable by you

Seven facts you can check without asking me.

I own the property, so there is no client to confirm any of this. This table lets you check it yourself. Each line is something you can open in a browser from outside the site.

The claim
Where to look
What you will find
9,008 URLs across four sitemap familiesPages, intel, articles and profiles, in one sitemap index.
betbetter.world/robots.txt: the two sitemap lines at the bottom, then open the index they point to
Four family sitemaps. Pages 1,375, intel 500, articles 2,245, profiles 4,888. Add them up.
A news sitemap with 242 URLs on a rolling 48-hour windowFresh material declared separately so it is found within hours.
Listed in llms.txt under "Freshest articles (last 48h, machine-readable)"
A sitemap whose contents change day to day. The count was 242 when I wrote this and will differ when you look. That is what it is for.
A 23,540-byte llms.txtA curated map with address patterns and explicit citation instructions.
betbetter.world/llms.txt: save the file and check its size
Sections for proof, picks by sport, predictions, articles and tools, with "Cite these for" lines under each pattern.
Ten named AI crawlers allowed, in writingSearch, AI input and AI training all declared welcome.
betbetter.world/robots.txt
A Content-Signal line, then ten AI crawlers from OpenAI, Anthropic, Perplexity, Google and Apple, each explicitly allowed.
Thirteen outside identifiers for the businessIncluding a researcher ID and two knowledge-graph entries.
View the page source on any page and count the sameAs entries.
Thirteen identifiers on one business record, referenced from every other block on the page.
Three DOIsWorking papers with permanent identifiers, free to reuse.
Listed in llms-full.txt on betbetter.world.
Three records under my name, the first covering 4.27 million odds observations across 52 bookmakers.
A free, no-key API with a published specificationAny content page also answers as data.
betbetter.world/api/openapi.json
A standard API specification, with the licence and the disclaimer written into it.

The paths above are written out rather than linked so you fetch them yourself.
The method for checking any of this from outside a site is on how I measure.

The claims

What I claim, and what I do not.

What I claim
  • 1,200 organic clicks a week, reached over six weeks, from a small base, in Google Search Console
  • Every mechanism in the section above is live on the site and checkable from outside it
  • The site was built and is run by one person
  • The category is competitive and the growth came without paid traffic or a launch
What I do not claim
  • An enterprise result. 1,200 clicks a week is a small site doing well
  • A growth multiple. The base was small. A multiple off a small base is arithmetic
  • Independent verification. It is my own product. There is no client to confirm the figure
  • Any revenue, subscriber or profit outcome from the traffic
  • Any figure for how often the site appears inside AI answers. I am not publishing one
  • That any one of the six decisions caused the result on its own. I cannot separate them

The number is real and it is mine. That cuts both ways. Nobody else has countersigned it. So I have built the page on things you do not have to take my word for. If the mechanism section holds up when you check it, the traffic figure is more believable. If it does not, it is not.

The method for checking any of this from the outside is written up in one place. How I measure

The supporting exhibit

Zyro: the same method in a category with almost no casual search volume.

The objection to the Bet Better number is that sport is a big category with traffic to spare. Zyro is the answer to that objection.

~250organic clicks a week · a technical category · low volume, high intent
Zyro · server-side attribution and CRO

Low volume, high intent.

Zyro is a tool that tracks which marketing brought in each sale. Nobody idly searches for that. The volume in this category is small and commercial. That makes it the honest test of whether the method works with no easy traffic. About 250 organic clicks a week, from roughly 108 pages: 54 long-form articles, 8 calculators and 7 comparison pages. The searches it wins are the ones that turn into customers.

~108 pages 54 articles 8 calculators My own product
Google Search Console, organic only. Stated as a level. No baseline is published because none is claimed.
Same method, different economics. A click from a buyer is worth more than a click from a browser, whatever the category.
The same work, for you

Two ways to get this for your own site.

The mechanism above works for any site that wants to be found by Google and named by the AI tools that answer for it. Both of these are priced on the pricing page.

SEO + AEO
Answer Engine Audit: what the AI engines can see of your site.
The audit reads your site the way a crawler and an AI answer engine do. It tells you what they can and cannot see. Ten business days, with a free re-scan at 60 days so you can see what moved.
Which AI crawlers your site is blocking, and whether you meant to
Whether your facts are in the visible text or only in the code
Whether a machine can tell your business from another with the same name
Answer Engine Audit A$1,500 + GST
See the audit
AI search tracking
AI search tracking: know when an AI answer names you, and when it stops.
Your client questions checked every week in ChatGPT, Google's AI answers, Perplexity, Copilot and Claude, with who is named in each reply.
Your questions, checked on a schedule
Who is cited, you or a competitor
An email when a competitor overtakes you
A$249 a month + GST
How it works

The same SEO, AEO and backlink work, for your site.

In every package from A$2,900 a month + GST, or start with the Answer Engine Audit at A$1,500 + GST.

Melbourne, Australia All prices + GST