Evidence

Photo checks

Each case is a real recall photo or a copy made from one. The checks keep the refund pool for real owners: a picture that is not the owner’s own is asked to be retaken, kindly.

The recorded runs

Each fixture photo, what Remedy decided, and how long it took
The photoRecallDecisionDecided byTime
Brightline's sample charger, cord cutPublic-domain photos of one charger, before and after its cord was cut (Dmitry G, Wikimedia Commons). Sample recall; fictional.BH-2026-01VerifiedRight product confirmed by the two reviewers (the photo check scored 0.80, under the pass mark) Vision, Claude Opus 5.5Verified by two agreeing reviewers over soft items (C1 unclear). firm amount 34.99; no linked capture; refund 34.99 USD (firm, the lower); auto cap 50.00 USD. Reviewers: Product reviewer: meets, confidence 0.75; evidence: [right_product] Black charger housing with rounded end caps, opened and lying on its side, matching the shape of the recalled charger body (right side of the photo); [right_product] Black ribbed cord strain relief like the one where the cord meets the charger in official image 2, now pulled out of the housing (left center, held between the fingers); [right_product] Black fixed power cord running from the charger toward a barrel style DC plug (center of the photo, plug near top center); [made_safe] Cord cut at the strain relief with a white insulated wire and two bare stranded wires exposed (center left, sticking out to the right of the strain relief); [made_safe] Yellow insulating sheets removed from inside the housing, one with holes cut in it (top center and top right); [own_photo] Owner's thumb and finger in the foreground, shallow focus with the background blurred, real shadows and a seam line on the white surface (left edge foreground and across the background) | Remedy reviewer: meets, confidence 0.7; evidence: [made_safe] Black power cord end with its molded strain relief collar, with bare stranded metal wires and a white insulated wire sticking out, showing the cord has been severed at the collar where it joined the case (left center, held between the fingers); [made_safe] The separated cord runs loose across the table with no charger body attached to this end (center and bottom of the photo, looping cable); [right_product] Black charger housing, opened, lying on the table near the cut cord (right side of the photo); [right_product] Yellow and black insulating pieces from inside the charger case (top center and top right)19.5 s
The recall's own picture, heaterThe CPSC's official photo of the DREO space heater.27054RetakeYour own photo: it matches the recall's official picture No AI callRetake (own_photo). Own-photo check: Matches this recall's official image https://cpsc.gov/s3fs-public/DREO1.png?VersionId=37rR7xQxj_D2T3WYYPVS6bf6pWt6LZqC ("Recalled DREO Space Heater - model DR-HSH015") at 0 bits (upright). dHash 3878686ef8a63c38; nearest official 0 bits, nearest earlier claim none (reused at 10 or less).139 ms
The recall's own pictureThe CPSC's official photo of the HAIARA power bank, sent as if it were the owner's.27056RetakeYour own photo: it matches the recall's official picture No AI callRetake (own_photo). Own-photo check: Matches this recall's official image https://cpsc.gov/s3fs-public/HAIARA1.jpg?VersionId=myWygu.qNAqSjgZDm8rx5DlFPHoyO9tW ("HAIARA power bank, model W5 PRO (front)") at 0 bits (upright). dHash e48280e0c0c1c9e0; nearest official 0 bits, nearest earlier claim none (reused at 10 or less).59 ms
Rotated and recompressed copyThe official power bank photo turned 90 degrees, shrunk and saved again at low quality.27056RetakeYour own photo: it matches the recall's official picture No AI callRetake (own_photo). Own-photo check: Matches this recall's official image https://cpsc.gov/s3fs-public/HAIARA1.jpg?VersionId=myWygu.qNAqSjgZDm8rx5DlFPHoyO9tW ("HAIARA power bank, model W5 PRO (front)") at 1 bits (turned 270). dHash bcbebe78783a7e38; nearest official 1 bits, nearest earlier claim none (reused at 10 or less).55 ms
Tilted and cropped copyThe heater's label photo tilted 4 degrees and cropped 6 percent on each side.27054RetakeYour own photo: it matches the recall's official picture No AI callRetake (own_photo). Own-photo check: Matches this recall's official image https://cpsc.gov/s3fs-public/DREO2.jpg?VersionId=XQ9PGzTKG443Y4cwtuigpQ93h0DOrv6B ("The manufacture date, in YYYY/MM format, and model “DR-HSH015” are printed on a label on the underside of the recalled DREO space heaters.") at 10 bits (upright). dHash d01607070f0d07b4; nearest official 10 bits, nearest earlier claim none (reused at 10 or less).81 ms
A photo already usedA full-size photo of a power bank, turned and saved again, that an earlier claim on this recall already sent.27056Firm reviewIt matches a photo sent with an earlier claim No AI callFirm review: C1 skipped, C2 skipped, C3 fail, C4 skipped. no firm amount; no linked capture; no refund amount; no auto cap.200 ms
A blurry photoA photo with heavy blur, the way a shaky hand takes it.27056RetakePhoto quality No AI callRetake (quality). Quality precheck: sharpness 4.9 (min 35), mean luma 124, p95 199, p05 58, size 1280x960 (min side 240). Issues: blurry.142 ms
Another recall's pictureThe CPSC's made-safe photo from hair dryer recall 26125, sent for a different hair dryer recall, 26754.26754RetakeYour own photo: it matches the recall's official picture No AI callRetake (own_photo). Own-photo check: Matches recall 26125's official image https://www.cpsc.gov/s3fs-public/RecalledMyOnlyStylerRootBoosterHairDryer.png ("Recalled MyOnlyStyler Root Booster Hair Dryer with the power cord cut in half for disposal") at 0 bits (upright), in the check against every recall's published pictures at 4 bits or under. dHash e0808ed69ce174f8; nearest official 19 bits, nearest earlier claim none (reused at 10 or less).98 ms
Cord cut in halfThe photo the CPSC published with recall 26125 to show the hair dryer made safe: its power cord cut in half.26125RetakeYour own photo unclear: Claude saw the CPSC's published picture; right product 0.95; made safe not confirmed Vision, Claude Opus 5.5Retake (made_safe). Retake: cut_cord (not_visible): The cord appears cut through, with a cut end showing exposed wire near the top center and a second loose end near the velcro tie on the upper left. However, this image is identical to the official CPSC recall image, so it may not show the owner's own dryer.. Model tip: Please take your own new photo of your dryer with the cut cord, and turn the handle so the model number on the back shows.12.3 s
Something else entirelyA photo of a coffee mug (Kurt Kaiser, CC0, Wikimedia Commons) sent for the power bank recall.27056RetakeRight product, scored 0.02; made safe not confirmed Vision, Claude Opus 5.5Retake (made_safe). Retake: write_recalled (missing): No handwriting found on the product.. Model tip: Please take a photo of the whole black power bank with the word recalled written on it in permanent marker.8.0 s
  • Brightline's sample charger, cord cut19.5 s

    VerifiedRecall BH-2026-01Vision, Claude Opus 5.5

    Right product confirmed by the two reviewers (the photo check scored 0.80, under the pass mark)

  • The recall's own picture, heater139 ms

    RetakeRecall 27054No AI call

    Your own photo: it matches the recall's official picture

  • The recall's own picture59 ms

    RetakeRecall 27056No AI call

    Your own photo: it matches the recall's official picture

  • Rotated and recompressed copy55 ms

    RetakeRecall 27056No AI call

    Your own photo: it matches the recall's official picture

  • Tilted and cropped copy81 ms

    RetakeRecall 27054No AI call

    Your own photo: it matches the recall's official picture

  • A photo already used200 ms

    Firm reviewRecall 27056No AI call

    It matches a photo sent with an earlier claim

  • A blurry photo142 ms

    RetakeRecall 27056No AI call

    Photo quality

  • Another recall's picture98 ms

    RetakeRecall 26754No AI call

    Your own photo: it matches the recall's official picture

  • Cord cut in half12.3 s

    RetakeRecall 26125Vision, Claude Opus 5.5

    Your own photo unclear: Claude saw the CPSC's published picture; right product 0.95; made safe not confirmed

  • Something else entirely8.0 s

    RetakeRecall 27056Vision, Claude Opus 5.5

    Right product, scored 0.02; made safe not confirmed

What each case shows, and how it was run
  • Brightline's sample charger, cord cut: Public-domain photos of one charger, before and after its cord was cut (Dmitry G, Wikimedia Commons). Sample recall; fictional.
  • The recall's own picture, heater: The CPSC's official photo of the DREO space heater.
  • The recall's own picture: The CPSC's official photo of the HAIARA power bank, sent as if it were the owner's.
  • Rotated and recompressed copy: The official power bank photo turned 90 degrees, shrunk and saved again at low quality.
  • Tilted and cropped copy: The heater's label photo tilted 4 degrees and cropped 6 percent on each side.
  • A photo already used: A full-size photo of a power bank, turned and saved again, that an earlier claim on this recall already sent.
  • A blurry photo: A photo with heavy blur, the way a shaky hand takes it.
  • Another recall's picture: The CPSC's made-safe photo from hair dryer recall 26125, sent for a different hair dryer recall, 26754.
  • Cord cut in half: The photo the CPSC published with recall 26125 to show the hair dryer made safe: its power cord cut in half.
  • Something else entirely: A photo of a coffee mug (Kurt Kaiser, CC0, Wikimedia Commons) sent for the power bank recall.

The free checks run before any AI call: the photo’s quality, and a 64-bit perceptual hash compared with the recall’s official CPSC images and every earlier claim photo, in all eight orientations (four turns, each mirrored or not). A match within 10 bits asks for the owner’s own photo, and within 4 bits of a picture published with any other recall or a photo claimed on one, the same. That catches the official picture, a turned and recompressed copy, a tilted and cropped copy, and a photo sent before. The same hash is then compared with the 1,779 published pictures of other recalls that are distinct enough to tell their recall apart (at least 5 bits from every picture of a different recall; 1,825 are stored, making 1,794 distinct hash values), and with every photo already claimed on any recall at any firm, within 4 bits: a re-saved, halved or turned copy of a published picture stays within 2 bits, and none of the test photos that are not a published picture comes within 9. Between firms, only the hash is compared, never the photo.

The vision check reads the photo against the proof rule: the product, each required action, and signs of a screen or printout. The decision, the amount and the payment route are plain code. Unclear cases go to two independent AI reviewers and a referee, and then to a person at the firm.

Brightline's sample charger, cord cut: Brightline Home's sample recall BH-2026-01, refund $34.99, auto-approve cap $50.00. One live Claude Opus 5.5 run recorded 2026-11-08 ($0.1158), replayed here. Your photo checks out.

Cord cut in half: Official-picture match turned off for this run, so the AI check can be seen; reviewers off. Please cut the cord first, then take a new photo.

Something else entirely: Reviewers off. Please write RECALLED on the product first, then take a new photo.

The cord-cut case is the owner flow’s recorded answer for this photo, read with the recall’s official pictures and replayed through the verifier, so it matches the Try page and the home page. Its time is that one live call.

Recorded November 8, 2026 by scripts/public/record-runs.ts. The two vision runs cost $0.02 together. The user’s own photos of products made safe are added as they are taken.

One reviewer against the referee

Each recorded row the two reviewers saw: the referee’s decision, the final decision, the known answer, and each reviewer’s own vote where it was kept
CaseRunRefereeFinalKnown answerProduct reviewerRemedy reviewer
look-alike-hair-dryersweep, trial 1A person decidesFirm reviewDo not paynot recordednot recorded
made-safe-hair-dryer-cord-cutsweep, trial 2A person decidesFirm reviewReading onlynot recordednot recorded
look-alike-hair-dryersweep, trial 2A person decidesFirm reviewDo not paynot recordednot recorded
sample-charger-cutsample sweep, trial 1Both agree: payVerifiedPaynot recordednot recorded
sample-charger-cutsample sweep, trial 2Both agree: payVerifiedPaynot recordednot recorded
sample-charger-cutsample sweep, trial 3A person decidesFirm reviewPaynot recordednot recorded
sample-charger-cutrecorded presetBoth agree: payVerifiedPaymeets, 0.75meets, 0.70
  • look-alike-hair-dryerFirm review

    sweep, trial 1A person decidesKnown answer: do not pay

    Each reviewer’s own vote was not recorded in this run.

  • made-safe-hair-dryer-cord-cutFirm review

    sweep, trial 2A person decidesKnown answer: reading only

    Each reviewer’s own vote was not recorded in this run.

  • look-alike-hair-dryerFirm review

    sweep, trial 2A person decidesKnown answer: do not pay

    Each reviewer’s own vote was not recorded in this run.

  • sample-charger-cutVerified

    sample sweep, trial 1Both agree: payKnown answer: pay

    Each reviewer’s own vote was not recorded in this run.

  • sample-charger-cutVerified

    sample sweep, trial 2Both agree: payKnown answer: pay

    Each reviewer’s own vote was not recorded in this run.

  • sample-charger-cutFirm review

    sample sweep, trial 3A person decidesKnown answer: pay

    Each reviewer’s own vote was not recorded in this run.

  • sample-charger-cutVerified

    recorded presetBoth agree: payKnown answer: pay

    Product reviewer meets, 0.75; Remedy reviewer meets, 0.70.

The referee, as designed
Paid when it should not have been: 0 of 2
Held when it could have been paid: 1 of 4
7 rows
Product reviewer alone
Paid when it should not have been: 0 of 0
Held when it could have been paid: 0 of 1
1 row
Remedy reviewer alone
Paid when it should not have been: 0 of 0
Held when it could have been paid: 0 of 1
1 row

On the one row with recorded votes, either reviewer alone would have paid what the referee paid; the referee's extra step did not change a payment there. The referee's own record is wider: of the 7 rows it saw, it sent 4 to a person and paid none it should not have. The reason the two reviewers read two different rulebooks, and why a disagreement goes to a person, is in where the design comes from, below.

A reviewer alone pays when its vote says meets and the evidence check counted it. Known answers: Pay and Do not pay from content/verify/fixtures/cases.json; Reading only is a published picture sent with the official-picture match off, outside both money rates. Read by src/components/evidence/reviewer-data.ts from content/verify/sweep-results.json, content/verify/sweep-sample.json, content/presets/recorded/*.json, content/verify/fixtures/cases.json; tests/reviewers-recorded.test.ts counts the files again.

The sample recall’s reference pictures

In all three sweep trials and the recorded preset, the sample charger with its cord cut scored 0.75 on the right-product check, under the 0.85 bar, and was verified only through the two reviewers. The model named what it could not compare: the case is opened and no label is in the owner's photo. The second reference picture it was given was a 440 by 340 crop of the whole-charger picture, mostly the area where the label had been removed, with the cord's strain relief small at its lower edge. A firm's recall notice shows the product, the place the remedy acts on, and its connectors, so the sample recall now publishes three pictures of the same public-domain charger: the whole charger (unchanged), where the cord meets the case (a new crop of the original photo below the label, so no brand mark is in it), and the DC plug (from a second public-domain photo of the same charger). The claim path still sends the first two to Claude.

  • Brightline 65W laptop charger (sample)
    Brightline 65W laptop charger (sample)
  • Where the cord meets the charger
    Where the cord meets the charger
  • The charger's DC plug
    The charger's DC plug

Right-product score for the sample charger with its cord cut: 0.75 with the earlier pictures, 0.80 to 0.82 with these, in 4 runs each. Both stay under the 0.85 pass mark, so the two reviewers look closer each time. With these pictures, 3 of 4 were verified, and one was sent to a person at the firm. The pass marks and the prompts did not change.

Right-product score and outcome for each run, before and after Nov 8, 2026
RunBefore, right productBefore, outcomeAfter, right productAfter, outcome
Recorded preset0.75verified by the two reviewers0.80verified by the two reviewers
Sweep trial 10.75verified by the two reviewers0.80verified by the two reviewers
Sweep trial 20.75verified by the two reviewers0.80verified by the two reviewers
Sweep trial 30.75verified by the two reviewers0.82sent to a person at the firm

Changed Nov 8, 2026. Before: content/verify/history/sweep-sample.2026-11-07.json and content/verify/history/sample-charger-cut.2026-11-07.json. After: content/verify/sweep-sample.json and content/presets/recorded/sample-charger-cut.json. Why and which pictures: content/verify/sample-references.json; credits in public/samples/charger/CREDITS.json.

What the model read on the CPSC’s own photos

With the official-picture match off, the claim path’s setting read the CPSC’s own photos of 3 recalled products made safe, 3 trials each: right product 9 of 9, made safe 7 of 9, 16 of 18 readings in all.

  • Hair dryer, cord cut (recall 26125): asked for a new photo in 2 of 3, each time by the made-safe check (C2). The model did not confirm the cut, and its own-photo check came back unsure in each: it recognized the CPSC's published picture. On a claim, the hash match answers this picture first.
  • Helmet, straps cut (recall 25007): verified in each of 3 trials, both readings right.
  • Helmet in the trash (recall 25007): asked for a new photo in 3 of 3, each time by the made-safe check (C2). That is the right reading: the recall asks for two photos, the straps cut and the helmet in the trash, and this one does not show the straps.

Where the two-reviewer design comes from

The part that is new here. The Product reviewer sees only the recall’s official pictures; the Remedy reviewer sees only the remedy text. Each must cite what it saw, a referee in code counts only votes whose evidence checks out, and a disagreement goes to a person at the firm, in payments: nothing is paid until that person decides. “The agent proposes, a person approves” is a pattern many payment agents share this year; the two rulebooks and the abstention on disagreement are the design choice. The reviewers and the referee: src/lib/verify/reviewers.ts; the decision: src/lib/verify/decide.ts; tests/verify.test.ts. See the two reviewers on a look-alike claim

The two reviewers on one model and on two

Both runs read the 3 photos that reach the two reviewers, 5 trials each: a look-alike hair dryer (known answer: do not pay), the CPSC's own photo of the recall 26125 hair dryer with its cord cut (a reading, in neither money rate) and Brightline's sample charger with its cord cut (known answer: pay). The second run re-read the photo check and the Product reviewer's vote from the first run's replay cache, so the Remedy reviewer's model is the only difference.

Each run of the comparison: how often the two reviewers gave the same answer, the two money mistakes, and the cost per claim
MeasureBoth on Opus 5.5 (the default)Remedy reviewer on Sonnet 5.5
Same answer from both reviewers4 of 100 of 13
Paid when it should not have been0 of 50 of 5
Held when it could have been paid1 of 55 of 5
Cost per claim, list price$0.0562$0.0541

What it shows. A second model made the pair no safer on these photos: neither run paid a photo it should not have (0 of 5 and 0 of 5), and with the Remedy reviewer on Claude Sonnet 5.5 the sample charger, the one photo here that should be paid, went to a person in every trial (5 of 5), so both reviewers stay on Claude Opus 5.5.

The two reviewers' independence comes from the different rulebook each reads: on Claude Opus 5.5 they gave different answers on the look-alike hair dryer and the CPSC's hair dryer photo in all 6 claims they reviewed, and the same answer on the sample charger in all 4. The sample is small, 3 photos and 5 trials (15 claims a run), so it shows how the two settings behaved on these photos rather than a rate.

On Claude Opus 5.5 the photo that should be paid was held once (1 of 5), in a trial where the reviewers did not finish, and a claim the reviewers do not finish goes to a person. The reviewers did not finish on 3 claims in the first run and on none in the second, each sent to a person, so the first run has 10 reviewed claims and the second 13. Counted by src/components/evidence/reviewer-models.ts from content/verify/reviewer-models.json (scripts/verify/sweep.ts --claim-path, run Nov 9, 2026), against the known answers in content/verify/fixtures/cases.json; cost per claim is the list price of every model call a claim makes, the photo check and any reviewers. The run's model calls cost $1.04 over 51 calls in the usage log ($0.98 by the sweep's own count of its live calls). tests/reviewer-models.test.ts counts the file again.

Which model setting checks the photo, and why

The four model settings in the sweep: paid wrongly, known answers right as scored the day the sweep ran, re-scored with today’s answers, the CPSC’s own pictures paid with the match off, cost and time
SettingPaid when it should not have beenRight, scored the day of the sweepRe-scored with today’s answersWould have paid a CPSC picture, match offCost per checkMedian time
Claude Opus 5.5, medium effort (the claim path)0 of 1818 of 24 (75%)22 of 243 of 6$0.02978.7 s
Claude Opus 5.5, low effort0 of 1820 of 24 (83%)23 of 243 of 6$0.02037 s
Claude Sonnet 5.50 of 1819 of 24 (79%)23 of 245 of 6$0.01167 s
Claude Haiku 5.5, medium effort0 of 1813 of 24 (54%)16 of 241 of 6$0.00096.7 s

On the measure that matters for money, the settings tie: none paid a photo it should not have (0 of 18 for each). Scored the day the sweep ran, the claim path’s setting was right on 18 of 24; re-scored after the two revisions listed below, on 22 of 24. Held back can only be measured on an owner’s own photo that should be paid, and only the claim path’s setting has run on one: Brightline’s sample charger, paid in 3 of 4 decisions, the other one sent to a person at the firm. So the claim path stays on Claude Opus 5.5, medium effort. Claude Opus 5.5, low effort scores at least as well on both counts, with no more CPSC pictures paid with the match off, at $0.0203 a check, and is the next to measure on owners' photos. It stays on that setting because every recorded answer on this site, and the verification cache, are keyed to it: switching means a paid re-run of those recordings. The switch itself is one line, effortFor() in src/lib/verify/vision.ts.

Known answers revised after the sweep

  1. Nov 6, 2026, case made-safe-helmet-in-trash (official/25007-droyd-5-in-trash.jpg): was right product pass, made safe pass, now a new photo asked for; right product pass, made safe fail.

    Recall 25007 asks for two photos, one of both straps cut off and one of the helmet in a trash can. This is the second, and on its own it does not show the straps cut, so a request for the other photo is the right answer. Every setting in the three-trial sweep read it that way (made safe: fail, 12 of 12).

    Trials whose score moved: Opus medium 3 of 3, Opus low 3 of 3, Sonnet 3 of 3, Haiku 0 of 3.

  2. Nov 6, 2026, case look-alike-hair-dryer (official/26125-hair-dryer-cord-cut.png): was sent to a person at the firm, now anything but paid.

    What matters for a look-alike is that it is never paid. Sending it to a person and asking for a new photo both keep the refund for the recalled product, so either is a right answer. No setting paid it (0 of 12).

    Trials whose score moved: Opus medium 1 of 3, Opus low 0 of 3, Sonnet 1 of 3, Haiku 3 of 3.

Each revision, with the answer before and after, is in content/verify/answer-changes.json. tests/facts.test.ts fails when the day-of-sweep score differs from the pass marks the sweep wrote when it ran, or when a case drifts from its listed answer.

Scored by src/components/evidence/errors.ts from content/verify/sweep-results.json, three trials of eight photos per setting, against the known answers in content/verify/fixtures/cases.json.