
Option Comparison Matrix
Compare a set of options against weighted criteria and ship an interactive HTML comparison matrix with a recommendation: a planner locks the options, the criteria, and their weights, a researcher fills every cell with an evidence-backed value, and a developer builds a single-file HTML page with a sortable/filterable comparison table and a scored recommendation. The ordering matters because criteria and weights chosen after seeing the data bias the winner, and a static table buries the decision; locking weighted criteria first makes the comparison fair and lets the build compute a transparent score. Use this for option/tool/vendor comparisons, decision matrices, buying guides, 'help me choose between X, Y, Z', and weighted pros/cons tables.
Steps
Entry step: criteria-scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Criteria scopeplannerentry
lock options, weighted criteria, and the scoring rule
Show working prompt
1. List the options to compare (3-8 named candidates) and confirm they are genuinely comparable for the stated goal. 2. Choose 5-9 decision criteria, define each precisely, and assign each a weight (e.g. percentages summing to 100, or 1-5 importance) BEFORE looking at any data — justify each weight in one line. 3. Decide how each cell is scored (a 1-5 rating, a raw value, or yes/no) and the rule that turns ratings x weights into a total score. 4. Decide the page features: a comparison table (options x criteria), per-option total score, and a highlighted recommendation. 5. Write an acceptance-criteria checklist (e.g. 'every option x criterion cell is filled with evidence', 'weights are fixed before research and sum correctly', 'the page computes and shows a weighted total per option', 'the table is sortable or filterable', 'the recommended option is highlighted and justified'). 6. Record decisions. Call write_task_note with options, weighted criteria, scoring rule, and checklist; write the same to notes/criteria-scope.md.
- Fill the cellsresearcher
evidence-backed value + rating for every option x criterion
Show working prompt
1. For each option, research every locked criterion and record in notes/data.md: the raw value/fact, the rating per the scoring rule, the source [n], and a one-line note. 2. Rate consistently across options so scores are comparable; do not let a known favorite get generous ratings. 3. Cite each value to a real source; mark genuinely unknown cells UNKNOWN with a conservative rating and a note, never a fabricated value. 4. Pre-compute each option's weighted total using the locked rule and show your arithmetic so the developer can reproduce it. 5. Note any decisive strength or dealbreaker per option. Good looks like a complete, cited data file the build can render verbatim. Do not write HTML yet.
- Build the matrix pagedeveloper
single-file HTML sortable comparison + scored recommendation
Show working prompt
1. Build index.html (inline CSS + JS, no external assets) rendering the comparison as a table with options as rows (or columns) and criteria as columns, showing each cell's value/rating and the per-option weighted total. 2. Make the table interactive: at minimum sortable by total score and by any criterion, ideally with a filter; clicking a column header re-sorts. 3. Show the weights in the header and compute totals in JS from the locked rule so the math is transparent and verifiable. 4. Highlight the recommended option (highest weighted score) with a short justification drawn from notes/data.md, and carry source references. 5. Make it readable and responsive with real inline CSS: table layout, weight badges or header treatments, score/total emphasis, recommendation highlight, hover/focus states, and a mobile layout. Do not ship a bare unstyled table. 6. On a loop-back, fix only the named gaps. 7. Call write_task_note with the page path and which criteria now pass.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Open index.html (render it or trace the source) and check EACH criterion PASS/FAIL: (1) every option x criterion cell from notes/data.md is present with no blanks; (2) the weights shown match notes/criteria-scope.md and the JS-computed totals reproduce the locked scoring rule (recompute one option by hand); (3) the table actually sorts (and filters if specified) without console errors; (4) the recommended option is the highest-scoring one and is highlighted with a justification; (5) cells are evidence-backed with sources (spot-check 3). A static or mis-scored table, or one where weights were clearly tuned to the answer, FAILS. Then route — this is the whole point of the loop: - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "build" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- comparison matrix
- help me choose between
- compare these options
- decision matrix
- buying guide table
Source
View this craftbook on GitHub · MIT license