Skip to content

Case study 1 of 3

An AI briefing that doesn't overclaim

Product
RiskFloor
Role
Solo founder: design, product, shipping
When
September 2026
Before: 'Range-bound' beside a fresh higher high. Rendered from RiskFloor's code at September 2026, with a real stored briefing. Its amber accents are shown in grey here.

Context

RiskFloor is a pre-trade briefing for forex, gold and crypto traders: an AI-written read of the bull case, the bear case, key levels and what would prove it wrong. At the top of each briefing, a strip of short status labels summarized the market. It was the first thing a reader saw.

The problem

Each briefing showed status labels for market state, volatility and structure. I suspected some never changed, so I checked 101 real briefings (June to September 2026). Volatility read "Low" on 101 of 101. Market state read "range-bound" 90 times and "trending" never. One live EUR/USD briefing said "Range-bound" right next to "Daily just made a higher high."

What the labels said across 101 briefings
LabelReadings
Market stateRange-bound 90 · Calm 11 · Trending 0 · Volatile 0
VolatilityLow 101
Regime strengthMixed 101
Structure reliabilityModerate 64 · Reduced 37 · High 0

The market-state label wasn't reading the market. It was one ratio with one threshold that almost no forex or metals pair could clear. It looked like a reading, and it behaved like a constant.

Before'Range-bound' beside a fresh higher high. Rendered from RiskFloor's code at September 2026, with a real stored briefing. Its one amber marker is shown in grey here.

What I considered

I considered rescaling the labels, renaming them, or building a new indicator.

  • Rescaling. This would have turned some briefings' structure label to "High". A check found that 0 of the 21 briefings that would have moved actually had aligned structure, so the new reading would have been wrong.
  • Renaming. A more accurate word on a miscalibrated number is still a miscalibrated number.
  • A new indicator. I rejected a new volatility label built on a different measure, and wrote down the conditions any future label has to meet.

The decision

I removed them instead (September 2026) and set a rule for the product: an empty slot is honest; a constant is not.

I pressure-tested the decision with an AI model as a critique partner.

I then applied the same reasoning to the risk label. It wasn't constant. It failed differently: nothing defined its scale, and it flipped between reruns of the same briefing. I retired it the next day.

A risk panel whose header shows three status labels: event risk elevated, volatility state low, structure confidence moderate.
BeforeStatus labels in the panel header. Historical build, September 2026, sample data.
The same risk panel with only its title in the header. The status labels are gone.
AfterThe same panel without them. Historical build, September 2026, sample data.

What happened

The labels came off the product in two changes on September 3 and 4. Traders act on what a screen implies. A label that never moves still looks like a reading. The same thinking runs through the rest of the design: colour shouldn't signal a verdict, and the briefing weighs evidence but never tells anyone what to trade.

This made the output more honest. I'm not claiming a lift in trust or retention.

What I learned

Count what a field has actually said before designing around it. This took a tally, not a redesign, and it changed the answer from "improve the label" to "remove the label".