Skip to main content

Pre-submission manuscript checker powered by Claude agents

Project description

sub-checker

繁體中文 | English

Pre-submission manuscript checker powered by Claude agents with a Plan-Execute-Verify harness. Each check is performed by a specialized AI agent, then validated by deterministic checks and a reviewer agent to eliminate false positives.

What it checks

Agent What it does
typo_grammar Spelling, grammar, awkward phrasing (skips reference list)
figure_table Figure/table references exist, numbering is sequential, files present
citation_exist In-text citations match the reference list (deterministic pre-scan + agent)
citation_format Reference list follows target journal's citation style (APA, Vancouver, AMA, etc.)
journal_guidelines Word count, required sections, abstract format, required statements (COI, ethics, data availability)
logic Contradictions, unsupported claims, methods-results mismatches
citation_claim Multi-source verification (PubMed + Semantic Scholar + Crossref), then verifies claims against abstracts

Install

pip install sub-checker

Setup

You need an Anthropic API key:

export ANTHROPIC_API_KEY=sk-ant-...

Or create a .env file in your working directory:

ANTHROPIC_API_KEY=sk-ant-...

Usage

CLI

# Full check with target journal
sub-check paper.docx -j "The Lancet"

# Chinese report output
sub-check paper.docx -j "Nature Medicine" --lang zh-TW

# Only run specific checkers (cheaper & faster)
sub-check paper.docx --only figure,citation

# Skip expensive checkers
sub-check paper.docx --skip claim,logic

# Output as styled HTML report (includes COT viewer + confidence scores)
sub-check paper.docx -o html --output-file report.html

# Output as JSON (for programmatic use)
sub-check paper.docx -o json --output-file report.json

# Dry run (just parse, no agents)
sub-check paper.docx --dry-run

Web GUI

# Start backend
uvicorn sub_checker.api:app --reload

# Start frontend (in another terminal)
cd frontend && npm run dev

Open http://localhost:5173 — upload a .docx, pick a journal, run, and view the report with confidence badges and filtered false positives.

CLI options

sub-check [OPTIONS] MANUSCRIPT_PATH

Arguments:
  MANUSCRIPT_PATH    Path to .docx file or directory containing one

Options:
  -j, --journal      Target journal name (e.g. "The Lancet")
  -o, --output       terminal | json | markdown | html (default: terminal)
  --output-file      Write report to file
  --lang             Report language: en (default) or zh-TW
  --only             Comma-separated: typo,logic,figure,citation,format,guidelines,claim
  --skip             Comma-separated checkers to skip
  -v, --verbose      Show agent tool calls in real-time
  --dry-run          Only parse .docx, don't run agents
  --init             Generate default .sub-checker.yaml

Pipeline (5 phases)

Phase 1-3  │  7 checker agents (parallel within each phase)
Phase 4    │  Deterministic post-validation (date math, citation cross-check)
Phase 5    │  Reviewer agent validates all findings → confidence scores
  • Pre-execution: deterministic citation pre-scan + multi-source reference verification
  • Post-validation: false positives filtered, remaining findings get confidence scores (0-100%)
  • See harness-architecture.md for full technical details

HTML report features

  • Dark-themed styled report with severity badges
  • Confidence scores — each finding shows reviewer-assigned confidence (%)
  • False positive filtering — deterministic + reviewer agent removes incorrect findings
  • Chain of Thought viewer — expand to see every API call, tool use, and reasoning step
  • Model display — shows which Claude model generated the report
  • i18n support (English / Traditional Chinese)

Cost estimate

Uses Claude Opus 4.8 by default. Approximate cost per manuscript (~4000 words):

Scope Agents Time Cost
Quick check --only figure,citation ~4 min ~$3
Standard --skip claim ~8 min ~$7
Full check all 7 agents + harness ~12 min ~$12–16

You can change the model in .sub-checker.yaml (e.g. use claude-sonnet-4-6 for cheaper runs).

Logging

All logs are stored in ~/.sub-checker/:

  • logs/sub-checker.log — application log (auto-rotated, 10MB x 5)
  • logs/sub-checker.error.log — errors only
  • cot/ — agent chain-of-thought JSON logs (every tool call, every response)

Set cot_dir: "disabled" in .sub-checker.yaml to turn off COT file logging (entries still appear in HTML reports).

Architecture

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sub_checker-0.1.0.tar.gz (77.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sub_checker-0.1.0-py3-none-any.whl (85.8 kB view details)

Uploaded Python 3

File details

Details for the file sub_checker-0.1.0.tar.gz.

File metadata

  • Download URL: sub_checker-0.1.0.tar.gz
  • Upload date:
  • Size: 77.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sub_checker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7dfad5d0c964b62cbd8fccc421cf9a424891bc100f74235f83dbdfca1c44ce36
MD5 f756f2c8bf17e4f144f32f963191ceac
BLAKE2b-256 a6a62493f23c7d95364bdf1a8414252ae2ed51474a525f5dcae32bc61ecd9fbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for sub_checker-0.1.0.tar.gz:

Publisher: publish.yml on odafeng/sub-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sub_checker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sub_checker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 85.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sub_checker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4bdf4f51168d9965a8d1d76404ba3af372a7a93e7e3f63c159394b6a92eb018
MD5 f5ff9eb786900821f5d4902e432828c3
BLAKE2b-256 9eeb6374c8223eb0a23eaa6b72f777088fbd8a242542d9b5af33072ef94b2d68

See more details on using hashes here.

Provenance

The following attestation bundles were made for sub_checker-0.1.0-py3-none-any.whl:

Publisher: publish.yml on odafeng/sub-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page