A transparent research prototype for ranking evidence and combining anonymous community reviews without allowing a model to declare truth autonomously.
How can machine assistance help community fact-checkers find relevant evidence while preserving provenance, disagreement, uncertainty and accountable human approval?
- Accepts a claim, topic, evidence records and anonymous reviewer assessments.
- Ranks evidence with an explainable TF-IDF relevance baseline and a small verified-source bonus.
- Aggregates reviewer votes using declared confidence scores.
- Returns
uncertainwhen consensus or evidence is insufficient. - Pauses high-stakes cases and always retains human approval.
- Writes a reproducible JSON report containing evidence metadata and safeguards.
The original TF-IDF workflow remains the transparent baseline. An optional local Ollama model can now analyse only the supplied evidence and return a structured label, confidence, explanation and evidence IDs.
The software validates every cited ID, rejects conclusions without citations, pauses invalid model output and always requires human review. The LLM never controls the final decision.
ollama pull gemma3:4b
factcheck-demo data/example_case.json --llm --ollama-model gemma3:4b --output outputs/llm_report.jsonOllama must be installed and running locally. Normal baseline use does not require Ollama or any API key.
- It does not browse for evidence or verify that a URL is truthful.
- It does not infer evidence stance; stance is recorded by a reviewer or upstream process.
- The version 0.1 baseline does not use an LLM; version 0.2 makes LLM analysis optional.
- It must not be described as an automated truth detector or production system.
This baseline is deliberate. A later LLM-assisted component can be compared against it for retrieval quality, calibration, unsupported claims, demographic bias and reviewer usefulness.
python -m pip install -e .
python -m unittest discover -s tests -v
factcheck-demo data/example_case.json --output outputs/example_report.jsonranked_evidence: relevance and provenance fields remain visible.community_review.disagreement: higher values mean weaker consensus.publication_status:pausedorready_for_editorial_review, never automatically published.final_label: a provisional workflow label, not an objective statement of truth.
- Retrieval: precision@k and nDCG against reviewer relevance judgements.
- Classification support: macro F1 and abstention coverage, if a labelled dataset is introduced.
- Calibration: Brier score or expected calibration error for probabilistic outputs.
- Human factors: time saved, reviewer agreement and usefulness ratings.
- Safety: unsupported-citation rate, high-stakes pause recall and subgroup error analysis.
The system stores no reviewer names in the example workflow. Real deployments would need consent, retention limits, access controls, abuse monitoring and a documented appeal process. Evidence verification and reviewer identity protection are governance responsibilities, not problems that an LLM can solve alone.
Akshith Moharampudi — Computer Science MComp graduate interested in responsible AI, information systems and reproducible research.
A first three-case synthetic evaluation is documented in docs/controlled_evaluation_results.md. The reproducible supported, refuted and uncertain cases are stored in data/evaluation.