Case study · The Council
Give an answer more than one kind of review
Verification across model providers: an application that separates answers, peer critique, claim checking, and synthesis, with a record of each stage.
When agreement leaves a wrong step intact
A convincing answer can contain a mistake even when its conclusion is right. Asking another model to rate the whole answer may leave that mistake untouched. I wanted an application where reviewing an answer and checking its individual claims are separate jobs.
I built The Council with AI coding assistance: a React interface, an API that coordinates model responses and peer critique, and a separate claim-checking service. The public implementation connects multiple providers and exports the intermediate outputs alongside the synthesis.
My contribution is the application and workflow connecting these stages. The language models and provider SDKs supply the underlying model capabilities. The research question is when the additional checking earns its cost.
Four stages you can inspect
- Generate answers
Providers answer the same question. Their responses remain visible separately.
- Compare and critique
Peer review surfaces disagreements and evaluates the answers. Its ratings are model judgments, not correctness measurements.
- Check individual claims
The verifier breaks answers into claims and routes them for checking. With multiple providers configured, it selects a provider other than the claim’s author.
- Synthesize with the checks available
The final stage combines the material. A JSON record preserves answers, critiques, claim verdicts, and the synthesis for inspection.
A useful design decision sits inside claim checking: a calculation needs re-derivation, while a factual claim may need supporting evidence. The claim-routing helper distinguishes those categories. The current verifier falls back to the author when only one provider is configured; the cross-provider design requires multiple configured providers.
A recorded run makes the distinction concrete
The public June 30, 2026 capture asks which has more total energy: a photon or a free electron, each with a wavelength of 1.0 nm. The run is labeled live, with web search off. Here is one trajectory within that recorded output.
Recorded live output · One question
A correct conclusion, with an incorrect intermediate claim
One answer correctly concluded that the electron has more total energy, but also put its kinetic energy at about 1.24 keV. Peer critiques gave that answer high ratings without flagging this step.
The claim checker marked the kinetic-energy claim as refuted. Its re-derivation gave about 1.5 eV, and the final synthesis used that value while preserving the correct total-energy conclusion.
Read the answers, claim gpt-7, and synthesis →The example shows a useful behavior of the implemented pipeline: a mistake survived whole-answer review and was identified at the claim level. It does not establish an overall accuracy improvement. Different providers can share errors, and model confidence is not a calibrated probability that a claim is correct.
Inspect it without spending on a live run
The repository includes a deterministic offline replay: npm run demo:fixture. It exercises the pipeline without provider keys or network calls and writes JSON and Markdown reports. Its evidence is simulated; use it to understand the application’s structure.
The live quickstart runs the interface and services with your own provider keys. The recorded live output is a separate artifact, so a visitor can inspect what happened in an actual run without initiating a new one.
Explore the work
- Architecture and live versus fixture modes.
- Claim-checking service and provider selection.
- Captured live trajectory, including the example above.
Independent project by Jonathan Simone, developed with AI assistance. The public repository contains the implementation, setup instructions, and sample outputs.