Systems · 2026 · Source code ↗

QualModel

Structured survey analysis with a quote behind each claim.

A qualitative report condenses many free-text responses into a smaller set of claims. Review becomes difficult when those claims lose their supporting quotations.

I built QualModel to extract structured claims from survey responses while preserving the text and source location behind each claim.

Structured extraction makes claims inspectable

The pipeline reads CSV, TXT, PDF, and DOCX files, then creates sentence-aware chunks in a vector store.

A language model extracts variables, relationships, hypotheses, and moderators. Pydantic schemas require the fields that later steps need.

Versioned prompts and recorded model settings help explain how a run was produced. They do not guarantee identical model output on every run.

Evidence survives consolidation

Each claim retains its verbatim quote and chunk identifier as the pipeline merges results across chunks. Deterministic rules handle contradictions before optional literature checks.

The evidence report places claims beside their quotations. A reviewer can inspect the source without reconstructing the extraction process.

Exports include a YAML specification, a Mermaid graph, HTML, a Markdown evidence report, a DOCX appendix, and a JSON bundle.

Literature checks are optional

The literature step retrieves relevant material from Semantic Scholar and PubMed. It depends on those services and on whether they cover the survey topic.

Disabling that step lets the extraction path run without the external literature APIs. The runlog records prompts, model settings, seed, and git state.

Traceability does not establish truth

Coverage and testability scores are heuristics for review. They do not show that the extracted model is correct.

Extraction still depends on a language model. A source quote makes a claim easier to check, but does not guarantee that the interpretation follows from it.

QualModel structures what respondents said. It cannot determine whether their statements are true.

All projects →