qldpcwatch maintains a local, version-aware repository of arXiv papers related to decoding quantum LDPC codes.
- Periodic arXiv polling with conservative rate limiting (single worker, >=3s between requests).
- Per-paper folder outputs:
metadata.jsonextraction.json(schema-validated structured extraction)summary.mdbibtex.bibchangelog.md- version snapshots under
versions/vN/
- Global indexes:
data/indexes/index.jsondata/indexes/index.csv- weekly digest
data/digests/YYYY-WW.md
- CLI:
qldpcwatch update [--since ...] [--download-pdfs] [--rebuild-site]qldpcwatch rebuild-siteqldpcwatch search "<query>"qldpcwatch diff <arxiv_id>qldpcwatch report [--only-relevant]
- Optional static website output in
/site/.
repo_root/
qldpcwatch/
scripts/
data/
papers/
<arxiv_id>/
metadata.json
extraction.json
summary.md
bibtex.bib
changelog.md
versions/
indexes/
index.json
index.csv
digests/
cache/
pdfs/
text/
site/
.github/workflows/update.yml
config.yaml
Use Python 3.11+.
python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]export OPENAI_API_KEY="..."
export OPENAI_MODEL="gpt-5" # optional overrideIf OPENAI_API_KEY is not set, update still runs with conservative fallback extraction from metadata/abstract only.
Edit config.yaml:
queries: list of arXiv query expressions. Default strategy is abstract-first (abs:), withquantum ldpc+ decoder terms for higher-recall corpus collection.filters.categories: default category allowlist (quant-ph,cs.IT,math.IT, optionalcs.DS).arxiv.rate_limit_seconds: keep>= 3.0.
qldpcwatch update --download-pdfs --rebuild-siteTo refresh existing abstract-only fallback entries with full extraction:
qldpcwatch update --since 2000-01-01T00:00:00+00:00 --download-pdfs --refresh-fallback --rebuild-site--refresh-fallback requires OPENAI_API_KEY to be set in the current shell.
Or incremental:
qldpcwatch update --since 2026-02-01T00:00:00+00:00qldpcwatch rebuild-siteqldpcwatch search "belief propagation hypergraph product"qldpcwatch diff 2401.01234qldpcwatch report --all-papersOutputs:
data/reports/decoder_report.mddata/reports/decoder_report.csv
Workflow: .github/workflows/update.yml
- Triggers weekly (
cron) and manual (workflow_dispatch). - Installs dependencies.
- Runs:
qldpcwatch update --rebuild-site- Commits
data/andsite/changes back to the repository.
OPENAI_API_KEY(repository secret)- optional
OPENAI_MODEL(repository variable)
If you want to serve /site/:
- Enable Pages in repository settings.
- Set source to GitHub Actions or branch/folder as preferred.
- Publish generated
site/artifacts.
ruff check .
ruff format .
pytest- State is persisted in
data/state.db. - If source hash for a paper version is unchanged, extraction is skipped.
- If a new version has the same source hash as a prior version, extraction is reused.
extraction.jsonis validated against thePaperExtractionJSON schema.- No hallucinated fields by design:
- missing/unknown values remain
nullor empty - unresolved items are listed in
missing_fields
- missing/unknown values remain
- arXiv query recall is heuristic; manual review is still recommended.
- PDF parsing quality depends on document structure.
- Fallback extraction (no API key) is abstract-level and intentionally conservative.
When needed, edit the paper folder directly:
data/papers/<arxiv_id>/metadata.jsondata/papers/<arxiv_id>/extraction.jsondata/papers/<arxiv_id>/summary.md
Then run:
qldpcwatch rebuild-siteto refresh derived outputs.