Skip to main content
DoneThat

AI Adoption GuideGovernmentPlan

Scenario comparison matrix generator

LLM generates structured option comparison tables from planning briefs, surfacing trade-offs across cost, risk, and outcome dimensions.

Government processPlanFundAuthorizeDeliverInspectEnforceReportClose

By Don, DoneThat’s AI coach · updated

What a comparison matrix should do

A scenario comparison matrix is a working table, not a recommendation. Each row is a locked option. Each column is a dimension the brief actually uses: cost, risk, outcome, delivery constraint, or any other heading the pack named. A cell is usable when it paraphrases a specific passage from that option's brief and carries a cite the planner can open. If the brief is silent on a dimension, the cell stays empty. The planner still ranks the options.

The generator exists to make trade-offs visible and checkable. It does not complete the appraisal, pick a winner, or paper over missing evidence.

Teams already store option notes in Microsoft libraries, Palantir case files, OpenGov budget packs, and Notion-class docs. Generate from those locked briefs. Do not generate from a conversational recap of them. If the only source is a meeting chat, write and lock a brief first.

Use this when two or more live options must sit on the same dimensions before a resource conversation or a public write-up. Later policy impact simulation only helps if the options are already stated the same way. The matrix is that shared statement.

Lock option briefs before any cell is filled

Do not generate against moving text. For each option, freeze a brief with a title, a short description of what would actually be done, the owner, the date, and the source pack. Version it. If two options share a paragraph, split it so each brief can be cited on its own.

A locked brief is the only input the generator may read for that option. Side comments, earlier drafts, and unofficial cost figures stay out until they are written into a brief and locked. Export or snapshot the brief in the system of record so each cite resolves: a file name and version, a case id, or a budget-pack page. If two people can still edit the source, it is not locked.

Illustrative example. A county recreation team compares three ways to offer supervised evening activity for 13-to-17-year-olds on weeknights: (A) extend community-centre hours with existing staff, (B) contract a mobile recreation van that rotates sites, (C) hire school gyms after the last class. The locked briefs are three short notes. Brief A names current caretaker overtime rules and a residents' association complaint about evening noise. Brief B describes the van's weekly circuit and a procurement note that the contract would be a one-year trial. Brief C names which three schools have offered halls, and that letting staff would need DBS checks already held by the schools. None of the three briefs states a full-year cost. Brief C does not assess residual safeguarding risk beyond the DBS line. Brief B is silent on noise. That is the pack. Do not complete it in the table.

If public comment will matter, lock a synthesis as an annex rather than quoting raw transcripts in cells. A public consultation synthesizer output belongs in the brief before it belongs in a cell. If an option hinges on a duty or legal gap, run a regulatory gap scanner and write the finding into the brief first.

Cite the brief in every filled cell

Fill a cell only when the brief or a locked annex supports a statement on that dimension. Keep the cell short enough to scan, then add a cite: brief id, section, and a quoted fragment when the paraphrase could drift.

For option A on cost, leave the cell empty. The overtime rule is a constraint, not a price. Inventing an annual figure because the cost column exists is the first failure mode. The generator must not invent a cost.

For option A on risk, cite the noise complaint and the overtime rule as delivery risk (staff availability), each pointing back to brief A. Do not turn those lines into a traffic-light score.

For option B on outcome, cite the weekly circuit and the one-year trial as what residents would actually get. For option B on cost, leave empty. A trial length is not a price.

For option C on outcome, cite the three named halls and after-class timing. For option C on risk, the DBS line is a control already in the brief, not a residual-risk rating. If the brief does not assess leftover safeguarding risk, that risk cell stays empty. Filling it with "low" because DBS is mentioned is the second failure mode. An unassessed risk is not a low risk.

Apply the same rule to every extra dimension (site equity, weekday coverage, partner dependency). If the brief does not speak, the cell does not speak.

A second reader who only has the brief should find the passage. If they cannot, delete the cell or revise the brief and regenerate that row.

Leave silent dimensions blank

Empty is a signal. It tells the ranking meeting what still has to be commissioned: a costed estimate, a risk assessment, a legal view. Filling blanks so the table looks finished hides that work.

Do not let the model infer a cost from analogous programmes, last year's budget, or a typical contractor quote. Those belong in a new locked brief if you want them in the matrix. Until then a cost column of blanks is a valid matrix.

Do not use placeholders such as "TBC", "low", "similar to A", or a hyphen that reads as zero. Blank means blank.

If every option is silent on the same dimension, drop the column until a brief exists. A column of blanks trains people to ignore columns. Keep the column when at least one option has a cite, so the other rows' blanks stay meaningful.

Rank options after the table, not inside it

The third failure mode is treating the generated matrix as the decision. It is not. The table equalises what is known. Ranking is a planner judgement that weighs empty cells, political constraints, and values the brief never scored.

Run ranking as a separate step. The people who own the briefs assign a rank or a shortlist and write one sentence on why an empty cost cell or an empty risk cell did or did not block an option. Keep that note beside the table, not inside a cell the generator wrote.

Do not ask the model for a recommended column, a weighted score, or a colour that implies a winner. If leadership wants a preferred option, a human writes it against the matrix and the blanks.

After ranking, the matrix still works as the audit trail: filled cells still cite, blanks stay blank, and anyone can see what the rank rested on. A later resource allocation optimizer discussion should start from that ranked shortlist, not from a model-picked winner.

When to regenerate, and what not to ask the table to do

Regenerate a row when its brief changes, an annex is locked, or a commissioned estimate arrives and is written in. Do not regenerate to "fill gaps" without new source text.

Do not use the matrix to invent options, to simulate population effects, or to spread a budget. Those are different plan-stage jobs. Keep option text stable first. Then commission the missing cells as real work, lock the new evidence, and fill only what the new brief supports.

The operating loop is short: lock briefs, fill cells that cite, leave silence empty, rank outside the table, commission what the blanks demand, regenerate the affected rows.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first