Skip to content
Stetwright

Research

What we measured, and how it held up.

Reports from our own testing. None of it is an outside audit. We lead with the real-claims results because they are the hardest and the most honest.

Reports

  1. · 25 min read

    Stetwright: system and evidence

    How the rules, the source library and the on-device model were built and tested, and what they find. On a sealed half of real claims quoted by regulators, the shipped stack flags 98.2% of the claims two independent reads agree are real advertising. Scored on every record it reaches 84.4%, short of our 90% target, and the report shows why.

    Read the report

Headline results

From the latest report, on rule-set 0.8.0. Scored on a sealed half of real claims quoted in FDA and FTC actions, which no model trained on.

Sealed half, agreed real ad claims (570): share flagged

Rules alone 55.4%; On-device model (22 MB) 96.3%; Model + rules 98.2%; Teacher (DeBERTa) + rules 98.6%; Three layers combined 99.1%

22 MB model on held-out real text, at the shipped threshold

Real FDA and FTC warning-letter claims (150) 93%; Held-out real violations flagged (487) 97%; False positives, held-out real acceptable (5,521) 1.7%

Scored on every record in the sealed half, including regulator text that is not advertising, the shipped stack reaches 84.4 percent, short of our 90 percent target. The report explains the gap in numbers. Results by layer.

Earlier measurements, rule-set 0.6.0

These were measured before the latest report and were not repeated. Where a figure differs from the report above, use the report.

Test material
SetSizeWhat it is
Real warning-letter claims150 verifiedReal FDA and FTC claims, checked word for word against the cited document
AI-written violations2,500 over 7 setsWritten blind by AI agents that never saw the rules
AI-written compliant copy800 over 6 setsCareful compliant copy, including negations and tricky cases

Source: Research report, rule-set 0.6.0, section 4.2

Tuning the rules stopped helping

Rules alone, by tuning round, on a fresh set
Measured on a fresh setViolations flaggedViolations blockedCompliant copy wrongly blocked
After the broad-claims round80%52%3%
After round 185%71%6%
After round 281%68%10%
After round 380%67%10%

Source: Research report, rule-set 0.6.0, section 4.3

Blocking improved once, then stalled while false alarms climbed. On the sets the rules were tuned on they block nearly everything, which means nothing. The fresh-set number is the one to read.

The AI second read

AI second read results
SetViolations with a high-confidence issueCompliant copy with a high-confidence issue
omega (never tuned on)97% (291 of 300)0% (0 of 100)
psi (sealed)94% (282 of 300)0% (0 of 100)

Source: Research report, rule-set 0.6.0, section 5

The first version of the prompt flagged 43 to 49 percent of compliant copy. Version 2 fixed that, and letting the AI judge each blocking rule hit cut blocking false positives on one compliant set from 10 percent to 0. It is model output and cannot be re-run to the same answer, so the record labels it reviewer-attested.

False alarms

Compliant copy wrongly flagged, by layer
LayerCompliant copy wrongly flaggedOn which text
Rules, blocking0 to 10%AI-written compliant copy, 6 sets
AI second read, high confidence0%200 AI-written compliant snippets
Trained classifier, version 14 to 7%1,100 AI-written compliant snippets
Trained classifier, version 24 to 11%600 AI-written compliant snippets, 5 sets
Trained classifier, version 22%5,521 held-out real acceptable texts, mostly government text

Source: Research report, rule-set 0.6.0, section 6.3 and 7, and Classifier model card, 2026-10-12, how it was tested

The research classifier

Classifier version 2 results
Test setSizeClassifier flagsRules block
Real FDA and FTC warning-letter claims15094%56%
Same, only claims sharing no five-word phrase with a training violation11893%not measured
Held-out real regulator text48798%not measured

Source: Classifier model card, 2026-10-12, how it was tested (claims-v2, research prototype)

What these numbers do not show

  • The AI-written test sets were written by Claude, and the classifier's synthetic training data was too. A shared style may flatter the model. Real human copy may score lower.
  • Nothing here is tested on real compliant marketing from real small businesses. The low false-alarm figures come mostly from government text, regulator-accepted ads and AI-written copy. Expect more false alarms on messy real copy.
  • The rule numbers were measured on rule-set 0.6.0. The rule-set has changed since, so today's figures may differ. The only held-out measurement on real claims, 57 of the 150, blocked about 49 percent at rule-set 0.4.1 and has not been re-run.
  • Rule scores on the sets the rules were tuned on are near perfect and mean nothing. After three tuning rounds the fresh-set blocking rate sat at 67 percent.
  • Labels for the classifier came from two AI passes agreeing, not from people. A human audit of sampled labels has not been done.
  • Precision on real customer copy has not been measured.
  • The AI second read is model output. It cannot be re-run to the same answer, so the record labels it reviewer-attested.

Next step

Try the checker on your own copy.

Paste an ad or a landing page and see each finding with its rule and source.