# OpenDraft: a 19-agent pipeline that checks every DOI before it cites it

> OpenDraft is an MIT-licensed Python engine that drafts long-form research papers from a prompt and only keeps a citation when its DOI is confirmed by at least two of CrossRef, OpenAlex and Semantic Scholar. The interesting part is the verification gate; the weak part is everything the README does not say about evaluation.

**federicodeponte/opendraft** — Free & open-source AI research-paper writer: 19 agents draft 20k-word academic papers in ~10 min with citations verified against CrossRef/OpenAlex/Semantic Scholar. Export PDF/Word/LaTeX. Hosted at openpaper.dev

- Repository: https://github.com/federicodeponte/opendraft
- Website: https://openpaper.dev?utm_source=github&utm_medium=repo_about&utm_campaign=opendraft
- Stars: 486 · Forks: 85
- Language: Python
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/federicodeponte-opendraft

## The failure mode OpenDraft was written against

Most AI writing tools fail in a specific, expensive way: they produce a fluent paragraph with a plausible author, year and journal, and the reference does not exist. For a literature review or a thesis draft that is worse than an empty page, because the fake citation is harder to spot than a missing one. OpenDraft's README states the project was built after the authors kept running into exactly this, and the design follows from it: rather than trusting a model's assertion that a paper exists, the engine queries scholarly databases and drops anything it cannot confirm. The target user is named fairly precisely in the README: researchers preparing literature reviews or journal submissions, graduate students working on a thesis or dissertation, and developers who want to extend the pipeline itself. The README also lists who it is not for, including one-click final papers and assignment cheating, which is a candid framing rather than a marketing one.

## How the 19 agents are arranged, and where the DOI gate sits

The README describes a pipeline of 19 specialized agents grouped by function: research, structure, writing, citation, polish and export. The research phase finds candidate papers through CrossRef, OpenAlex and Semantic Scholar plus web search, and then the citation stage confirms each DOI. The default rule, as stated in the README, is that a source is included only once its DOI is held by at least two of the three databases. Each citation also records which databases confirmed it and which ones the engine re-queried itself. That last detail matters more than the agent count. It means the output carries provenance per reference, so a reader can distinguish a citation confirmed by three databases from one confirmed by two, instead of getting a flat list where every entry looks equally trustworthy. The README is explicit that this establishes the DOI resolves in multiple databases and does not establish that the paper says what the draft claims it says. That distinction is the honest boundary of the whole design, and it is the sentence to hold onto when reading the feature list.

## Installation, keys and the command-line surface

The README gives a setup time of roughly ten minutes for local installation and states Python 3.10+ as the requirement, matching the Python 3.10+ badge. Cost is not included: the README says you bring your own model API keys, and the At a Glance table estimates roughly $0.35 per draft on Gemini Flash up to roughly $3.00 on Claude Opus. Those figures come from the project's own table and are not something this review measured. Export targets are PDF, Microsoft Word (.docx) and LaTeX, and the LaTeX export arrived in v1.7.4. The README notes that the typical output is 5 to 80+ pages, 10k to 20k+ words and 30 to 50+ citations, and that those numbers were measured before multi-source confirmation became the default. That parenthetical is worth taking seriously: tightening the citation gate changes how many sources survive, so the older figures should not be read as a current expectation. One release note is also worth flagging for anyone installing from a wheel rather than a checkout: v1.7.3 fixed a Scribe FileNotFoundError by shipping prompt files in the wheel, so versions before that could fail on a missing prompt file.

## What the citation gate does not check

The verification step confirms that a DOI is held by at least two of the three databases. It does not confirm that the cited paper supports the sentence it is attached to. A draft can therefore be fully clean on the reference list and still misattribute a finding, overstate a result, or cite a real paper for a claim that paper never makes. The README acknowledges this directly by saying the engine is a research assistance and drafting tool, not an autonomous author, and by carrying a Human Review Required badge. Treat the verification as a filter on fabrication, not on interpretation. The second limitation is coverage. All three databases are DOI-centric, so work without a registered DOI (many conference papers, preprints that were never deposited, non-English journals, books and grey literature) is structurally harder to confirm and more likely to be dropped by the two-database rule. A draft in a field that lives on arXiv preprints and workshop papers will come out thinner than one in a field with dense DOI coverage, and the engine has no way to tell you that is what happened. The third is that a stricter gate and a longer draft pull against each other: requiring two independent confirmations removes candidates, so raising the confirmation bar is the direct cost of the citation behaviour the project is selling.

## Where the documentation is thin

The README points to EVALUATION.md for the benchmark plan, which is a plan rather than published results. Nothing in the supplied material gives measured citation precision, a false-positive rate for the two-database rule, or an accuracy comparison against a single-model baseline. The At a Glance numbers for word count and citation count are described as measured before the current default, so they do not describe the shipping configuration. The README also mentions that the maintainers use Codex and OpenAI models for PR review, regression test generation, issue triage and release automation, which is a statement about how the project is maintained rather than evidence about output quality. For an engineer deciding whether to adopt this, the practical consequence is that the verification mechanism is inspectable in the source but its error rate is not documented. You can read the code to see how a DOI is confirmed; you cannot read a number telling you how often the gate is wrong. That gap is the main thing to close before trusting the pipeline on real work.

## The alternative, and the actual difference in approach

The obvious comparison is a general-purpose chat model with a search or retrieval plugin. The difference is not model quality, it is where the trust decision happens. A chat model with browsing decides during generation whether a reference looks right; the reference is part of the prose and there is no separate artefact recording what was checked. OpenDraft separates drafting from verification: the research phase proposes candidates, and an independent step re-queries CrossRef, OpenAlex and Semantic Scholar and applies a two-of-three rule before the citation enters the draft. The output also carries per-citation confirmation metadata, so the check is auditable after the fact rather than implied. That is a real architectural difference and it is the reason to pick this over a chat window for a literature review. The trade-off is that you inherit a fixed pipeline with 19 stages, a Python 3.10+ environment and your own API keys, where a chat model is one subscription and no installation. If your need is a two-page summary with a handful of links, the pipeline is more machinery than the task requires.

## Licence, maintenance and what upgrading costs you

OpenDraft is MIT-licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. This is not legal advice; if you plan to redistribute a modified engine or ship it inside a product, read the licence text yourself and check the terms of the model APIs you connect, since those are separate agreements and the MIT grant covers OpenDraft's code only. On maintenance, the repository is active rather than archived, with v1.8.0 in August 2026, v1.7.4 in July 2026 and a patch release the day before it. The release history shows the kind of cost you take on by tracking it: v1.7.3 was a packaging fix for prompt files missing from the wheel, and v1.8.0 changed citation confirmation to multiple sources by default. That second change is the one to watch on upgrade, because it alters how many citations survive into a draft. If you have prompts or downstream tooling tuned to the previous single-source behaviour, pin your version and re-run a known draft after moving to v1.8.0 rather than assuming the output will look the same.

## Conclusion

Adopt OpenDraft if you want a self-hostable, MIT-licensed pipeline that produces a structured first draft with citations whose DOIs were confirmed by at least two scholarly databases, and you are willing to supply your own model API keys and read the output critically. Do not adopt it if you need a finished submission, if you cannot pay for model tokens, or if your field's literature lives outside CrossRef, OpenAlex and Semantic Scholar's DOI coverage. Before committing, read EVALUATION.md to see what the benchmark plan actually measures, and run a single draft on a topic where you already know the canonical papers, then check whether those papers appear and whether the ones that do carry the two-database confirmation flag.

## FAQ

### What is federicodeponte/opendraft?

An open-source Python engine that drafts academic documents with 19 specialized agents, covering research, structure, writing, citation, polish, and export. It exports to PDF, Word, and LaTeX, and it is MIT licensed.

### How does opendraft decide whether to keep a citation?

By default a source is kept only when its DOI is held by at least two of CrossRef, OpenAlex, and Semantic Scholar, and each citation records which databases confirmed it. The example environment file warns that disabling Semantic Scholar leaves exactly the two required.

### How do I install opendraft?

As a skill with `npx skills add federicodeponte/opendraft --skill autonomous-research`, or as a library and command-line tool. Note that pyproject.toml declares no runtime dependencies, so the sixteen libraries in requirements.txt, from the model SDKs to weasyprint, have to be installed separately.

### How much does one opendraft draft cost?

The summary table quotes about 35 cents per draft with Gemini Flash and about 3 dollars with Claude Opus, on top of the model keys you supply yourself. Time to draft is given as ten to twenty minutes.

### Can opendraft check that a citation is really about the claim?

That is a separate switch from the DOI check. `ENABLE_CLAIM_VERIFICATION` asks whether a source is about what it is cited for, `CLAIM_VERIFICATION_DROP_IRRELEVANT` decides whether a negative verdict removes it or is only reported, and `CLAIM_VERIFICATION_MIN_CONFIDENCE` sets the bar at 0.7.

### Who is opendraft meant for?

Researchers preparing literature reviews, journal submissions, or structured first drafts, plus open-source maintainers building on a reproducible drafting pipeline and graduate students writing a thesis or dissertation. The project classifies itself for science and research as well as education audiences.

## Sources

- [federicodeponte/opendraft on GitHub](https://github.com/federicodeponte/opendraft)
- [License: MIT](https://github.com/federicodeponte/opendraft/blob/master/LICENSE)
- [Project website](https://openpaper.dev?utm_source=github&utm_medium=repo_about&utm_campaign=opendraft)
- [README](https://github.com/federicodeponte/opendraft/blob/master/README.md)
- [Releases](https://github.com/federicodeponte/opendraft/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/federicodeponte-opendraft
