Quality assurance is a cyclic graph, not a central LLM agent

We are turning Audify’s linear DAG pipeline into a self-correcting cyclic graph in which quality checks can fire back-edges that re-run earlier nodes. The “agent” is the graph topology itself — autonomous re-execution driven by quality feedback — not a central LLM that reasons about routing. LLMs are used only at the nodes that genuinely require judgment (the script-validity judge and metadata infer-and-fill); every other detector is deterministic (WER, text extraction quality, duration ratio).

Status

accepted

Considered options

  • Central LLM Critic that ingests all signals and chooses the back-edge via reasoning/tool-calls. Rejected: slower, costlier, non-deterministic to test, and indefensible under review (“why is an LLM choosing between three if branches?”).

  • Graph-is-the-agent (chosen). Deterministic router + LLM only at judgment nodes. Testable, cheap, and the autonomy lives in the topology — which is the architectural shift this change is built around.

Consequences

  • Each back-edge must have a bounded halting condition (max attempts) and a terminal action (keep best-effort result + flag) so the graph provably halts — no infinite loops.

  • Detectors are unit-testable in isolation; the graph is testable by asserting which edge fires for a given state.