AMD Developer Hackathon ACT III · Intelligent Industry

SAYAGAIN

Nobody on the channel noticed. The radio
log did.

Checks each read-back of a radioed safety order against the plant registry; wrong ones, and any it cannot check, reach the supervisor.

MISMATCH

H-01 · CH-01 · English

tag: XV-203 ≠ XV-208 XV-208 is on line A (registry)

OPERATORH-01-0

Close valve two-oh-three, line Bravo.

FIELD TECHH-01-1

Copy, closing two-oh-eight, line Bravo.

  • speaker text·scripted
  • extraction Gemma-4-31B-IT · AMD-hosted API
  • referee local · 1.07 ms

zsh · build/

jq -r '…' bench/results/text/llm-judge-r1-reaudit.json

llm_judge false-VERIFIED 2 false alarms 1/48

jq -r '…' bench/results/text/ladder-r1-reaudit.json

Gemma-4-31B-IT false-VERIFIED 0 false alarms 2/48

regex false-VERIFIED 0 false alarms 0/48

# 3 more rungs, false-VERIFIED 0 on each

CH-01 · how the channel hears it today

Two lines. Nobody flags them.

OPERATORClose valve two-oh-three, line Bravo.

FIELD TECHCopy, closing two-oh-eight, line Bravo.

no flag · no card · the crew walks to XV-208

LINE A · CLARIFICATION LINE B · PRESS STATION XV-208 XV-203

In the registry the demo runs on, XV-203 is on line B at the press station; XV-208 is on line A, in clarification.

Three-way communication

Read-back is the check. Nothing checks it.

Wrong read-backs caught, of every 100 · aviation, Helmke 2021

tower63
approach50

filled: caught by the controller · empty: went through

No rate

published for plant radio

The supervisor queue · stored shift replayed

The supervisor gets the one wrong word.

SayAgain supervisor queue: the list of exchanges, and card H-01 with two-oh-eight blocked red under the order two-oh-three, buttons Confirm error and Dismiss 123
  1. 1the diff, checked against the registry
  2. 2the read-back word that differs
  3. 3a human confirms or dismisses

One model job · everything else is code

The model points. Code decides.

1 · the exchange the model read

order

Close valve two-oh-three, line Bravo.

read-back

Copy, closing two-oh-eight, line Bravo.

H-01 · written words, text·scripted

2 · what Gemma-4-31B-IT returned

{
  "commands": [
    {
      "action_span": "closing",
      "line_span": "line Bravo",
      "state_span": null,
      "tag_span": "two-oh-eight"
    }
  ],
  "kind": "readback",
  "retracted_spans": []
}
  • AMD Token Factory
  • developer.amd.com.cn
  • median latency 4.304 s, first pass
  • cost USD 4.8937e-06

3 · what code decided

  1. instruction: grounded + covered (1 command(s))
  2. read-back: grounded + covered (1 command(s))
  3. audio: no gate (no token probabilities, no unprompted pass)
  4. instruction: XV-203 line B (registry ok)
  5. compare: tag: XV-203 ≠ XV-208

MISMATCH

tag: XV-203 ≠ XV-208

speech-to-text: not run yet · span extraction: AMD Token Factory · referee: local, plain Python · queue: local

receipt, as stored · request_id c9647a04cfcc4eeaadbfa965a4d74c6d · model_served self-dploy/Gemma-4-31B-IT (sic, as served) · host developer.amd.com.cn · latency_s 35.4972 (a slow call; the first pass’s median was 4.304 s) · cost_usd 4.8937e-06

XV-205 · a valve the plant registry does not have

Judging is not the model’s job.

LLM-as-judge
DeepSeek-V4.1-Flash · no registry

VERIFIED

Order and read-back match; the valve does not exist.

It also passed 2 wrong read-backs.

ABSTAIN

R-01 · CH-01 · English

ABSTAIN · unknown tag cannot clear this exchange: a human must check it

OPERATORR-01-0no recording

XV-205 not in registry

Close valve two-oh-five, line Charlie.

FIELD TECHR-01-1no recording

Copy, closing two-oh-five, line Charlie.

  • speaker text·scripted
  • radio none (no audio)
  • extraction Gemma-4-31B-IT · AMD-hosted API
  • referee local · 0.768 ms

Model ladder · AMD Token Factory · 89 held-out · text·scripted

2 versus 0 wrong read-backs passed.

The LLM-as-judge baseline passed 2. Each of the five rungs passed 0.

rungfalse-VERIFIEDfalse alarms on 48 correct read-backs · dashed: 5 % budgetrule

regexrung 0 · no model00/48meets
MiniCPM5-2Bsmallest on the ladder048/48all 48 to a human
Gemma-4-31B-ITthinking off · re-audit02/48meets
DeepSeek-V4-Flashthinking off · re-audit04/48over budget
Qwen3.8-27Bthinking on · re-audit04/48over budget
LLM-as-judgebaseline · DeepSeek-V4.1-Flash · no registry21/48passed XV-205

On written words, regex meets the rule too; audio decides.

Who pays

Priced per channel. Bought by HSE.

1,318mills, Indonesia 2022 (Trase)

× 30 %addressable*

× 6channels per mill*

× USD 2,400per channel-year*

≈ USD 5.7 Ma year, mills only (estimate)

* assumption

Wedge

Free 30-day listen-only baseline

Who else listens to plant radio

Loggers transcribe. None we checked compares.

transcribes radiocompares a read-backplant tag registry
NICE Inform AIyes——
Eventide NexLog + Speech Factor AIyes——
Motorola Assistyes——
IntelliPERMIT—radioed codes, not speechyes
HAAWAII (air-traffic research)yesyes, aviationno
SayAgainplannedyesyes

— not in the public documentation we read, 2026-10-09 · sources: evidence/sources.json

README

What we abstain on.

ABSTAIN

No recorded speech has been measured.

The plant, its 120 tags and every exchange are fictional…

…what a language model adds is unproven until the audio rows exist.

No audio evaluation in this submission

  • Audio rowthe rule on recorded speech
  • Failure case−6 dB look-alike tags
  • Kill testEnglish, Bahasa or auto
  • Blind auditorby ear vs the queue

The ask

Put it on one mill’s radio.

One mill. Thirty days. Listen only.

  1. Q1 2027paid pilot, one palm-oil mill
  2. Q3 2027DCS check: did it close?
  3. Q4 2027Malaysian palm belt

github.com/edycutjong/sayagain

Releases

Edy Cu · Jakarta

← → navigate · Esc overview · P notes · Cmd+P PDF

This deck is 16:9. On a phone, open the PDF or turn the phone sideways.