ETOT
ETOT
TOOL · RESEARCH SYNTHESIS
Motif
type
agentic loop
version
0.2 · MCP
surface
MCP server · CLI · FigJam via Figma MCP
author
Eric Frye
date
09.2026
license
MIT · data CC-BY-NC
Launch repository ↗

Research synthesis that shows what survived.

Turns a folder of interview transcripts into findings, then tries to knock them down — and shows you what survived. Fifteen transcripts, 101,000 words: thirty minutes, $4.53, twenty insights. Every insight carries its receipts, its confidence, its counter-evidence and the critic's outstanding objections. Read the case study for how it was built and measured.

1.7 → 0.7unsupported claims per four checked, vs a single prompt
1.3 → 0.7confidence errors per report
75% → 69%theme coverage — lower than a single prompt, reported as such
30 min · $4.53fifteen transcripts, one command · manual baseline ≈ 9 h
surface
MCP server · CLI · FigJam via Figma MCP
license
MIT · data CC-BY-NC
what it does

Turns a folder of interview transcripts into findings, then tries to knock them down — and shows you what survived.

who it is for

Teams and freelancers who synthesise in FigJam or Miro with transcripts in a folder — no research platform, just stickies — and who have been burned by a confident AI summary.

01

What it does

in detail

Synthesis produces eight to fourteen insights from your transcripts. A critic with readable rules checks every one against the exact text it cites, reports what is unsupported, missing or overconfident, and a reviser repairs. The loop stops on a pass, on no progress, or after three rounds — and the report says which. Every insight carries turn-numbered receipts, a computed confidence, its counter-evidence, and any objection the critic still had when the loop stopped.

02

The loop

produce, check, revise

Anything that can be checked mechanically is checked before the model is asked. The model is asked only what only a reader can answer. A missing verdict is a failure, never a pass.

architecturecore/ + synth/ + config/synth.yaml
transcriptsdocx · txt ingest[name:0042] intakeHaiku · ×N synthesisSonnet deterministicchecks turn exists · not the interviewerreceipt matches the transcriptconfidence ≤ sources · no deletion criticSonnet · full corpus unsupported · missing countermerged · vague · missing theme revise ×≤3 config/synth.yamlmodels · thresholdsrules, plain language runs/<id>/every prompt, every verdict report.mdcontested flags on stop: critic_pass · no_progress · max_iterations
Anything that can be checked mechanically is checked before the model is asked. The model is asked only what only a reader can answer.
03

Install and run

five minutes

A Python environment, an Anthropic API key, one command. Rules and thresholds live in a config file in plain language.

install · README
$ pip install etot-motif $ echo "ANTHROPIC_API_KEY=…" > .env $ motif ./transcripts --out report.md $ motif-mcp # MCP server, stdio from source: git clone github.com/sleepycobalt/motif && pip install -e . · config/synth.yaml holds models, thresholds and the critic rules in plain language
The install was tried by the builder as a stranger before it was written down.
04

The eval

headline

Three conditions on the same five transcripts, three runs each, scored blind against a hand-built ground truth of sixteen themes and twelve traps. The loop halved unsupported claims and cut confidence errors; it also lost eighteen points of coverage in the first eval, most of which a recall rule then recovered. Coverage is still below a single prompt. That result is published, not hidden.

docs/eval1-results.md · docs/eval2-results.md in the repo

full write-up

The case study — ground truth, what broke, both evals, the trace, the honest ledger.

05

Pricing

today

Free. MIT-licensed; run it on your own API key. A hosted tier is not yet decided.

06

Still open

OPENThe loop never passes: every run stops at three rounds with two or three objections outstanding.
OPENOne dissenter still gets missed; one finding per turn.
OPENUsers: one recorded FigJam run (part 2). No second team yet.
ETOT · Vienna & Minneapolishello@etot.designPrivacy© ETOT 2026