Skip to content

Case study 3 of 3

Designed to be found by Google and AI assistants

Product
RiskFloor
Role
Solo founder: design, product, shipping
When
September 2026
The RiskFloor currency strength meter on a laptop and a phone: eight currencies ranked strongest to weakest, with a bar for each.
The free currency strength meter on a laptop and a phone. Live pages, captured November 2, 2026 UTC. Shown in grey; the live bars are in colour.

Context

RiskFloor has no ad budget, so the product has to be discoverable by itself. In August, server logs showed 41 hits from ChatGPT links over two weeks, all of them on the free tools. When checked, ChatGPT, Claude and Gemini each recommended RiskFloor by name. Something was already happening, but not on the pages that show what the product does.

The problem

With no ad budget, people had to find RiskFloor on their own. But the public briefing pages sent crawlers a near-empty shell (26 words, no briefing content), so search engines and AI assistants couldn't read them.

Raw page source of a briefing page. Apart from navigation and a sign-up link, its only content is the line: Loading the latest session briefing.
BeforeWhat a crawler received: one loading line. Rebuilt from the September 2026 code. No data.

What I considered

The work was technical, but the design question was simple: what should a reader that doesn't run JavaScript receive?

  • Rebuilding on a new framework or adding a server layer. Ruled out.
  • Another system to render pages. Ruled out by an existing rule against adding one.
  • Publishing each briefing the moment it's generated. Rejected. A weak briefing could reach the most heavily cached page on the site.
  • Pushing traffic before measuring it. I chose to measure the channel first.

The decision

I put free tools up front (a currency strength meter, an economic calendar and more) and gave each public briefing page a text summary that loads without JavaScript (September 2026). Within days, I saw ChatGPT answer a EUR/USD question using a RiskFloor briefing; all six price levels it quoted matched that day's briefing.

I pressure-tested the decision with an AI model as a critique partner. I had earlier written tools off as a search channel, and the traffic later disagreed.

Raw page source of a briefing page, now containing the bull case, the bear case, key levels and the primary invalidation as plain text.
AfterWhat a crawler receives now. Raw source of the live page, captured November 1, 2026, showing the October 30 briefing.

What happened

About 250 unique visitors a month with no ads and no social media. Of the tool visitors whose source is known, 243 of 246 came from search or AI assistants, and ChatGPT alone was the first source for 122. The open problem is that 24 people came back to the free tools on 3 or more days, almost all for the strength meter, but never signed up. That's what I'm designing for next.

AI-assistant visitors landed on the tools, not the briefing pages, and the ChatGPT answer is one query I saw myself. These are small numbers, so I'm not claiming a lift.

What I learned

What a crawler receives is a design surface. The page looks almost the same to a person before and after this change. The whole difference is in what a reader without JavaScript gets.

AI assistants don't send people where you planned. I built for the briefing pages, and they sent people to the tools. That's why the next problem is the 24 returning visitors, not more crawlable pages.

This site follows the same lesson: every page is complete HTML before any JavaScript runs.