https://github.com/qwerty239qwe/submission-nav
A practical AI skill for academic submission workflows—turn manuscripts into structured journal shortlists, compare author guidelines, and plan revisions with strategy-aware recommendations.
https://github.com/qwerty239qwe/submission-nav
academic-publishing ai-agent-tools claude-code-skill codex-skill journal-selection manuscript-preparation submission-workflow
Last synced: 3 days ago
JSON representation
A practical AI skill for academic submission workflows—turn manuscripts into structured journal shortlists, compare author guidelines, and plan revisions with strategy-aware recommendations.
- Host: GitHub
- URL: https://github.com/qwerty239qwe/submission-nav
- Owner: qwerty239qwe
- Created: 2026-04-27T12:25:37.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-08T10:08:18.000Z (23 days ago)
- Last Synced: 2026-05-08T12:10:59.096Z (23 days ago)
- Topics: academic-publishing, ai-agent-tools, claude-code-skill, codex-skill, journal-selection, manuscript-preparation, submission-workflow
- Language: Python
- Homepage:
- Size: 297 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# submission-nav
Turn "where should I submit this?" into a ranked shortlist with visible tradeoffs.
`submission-nav` parses your manuscript, pulls candidate venues from public sources (OpenAlex, DOAJ, Crossref, Elsevier, DBLP), and produces a strategy-aware ranking with fit, impact, OA, APC, and risk signals — plus a shareable HTML report.

## Install
```bash
# Claude Code
npx skills add https://github.com/qwerty239qwe/submission-nav --skill submission-nav -a claude-code
# Codex
npx skills add https://github.com/qwerty239qwe/submission-nav --skill submission-nav -a codex
```
Or check out the repo and run `bin/install.ps1` (Windows) / `bin/install.sh` (macOS/Linux).
Optional: set `OPENALEX_EMAIL`, `ELSEVIER_API_KEY`, `DOAJ_KEY`, `CROSSREF_EMAIL` in `.env`. See [`.env.example`](.env.example).
## Quick start
Ask your agent in natural language:
> "Use submission-nav. Where should I submit `~/papers/draft.pdf`?"
Or run `sn` directly:
```bash
sn strategist manuscript.docx --strategy balanced # rank venues
sn report manuscript.docx # render HTML report (above)
sn rules "PLOS ONE" "" # cache author rules
sn check manuscript.pdf --journal plos-one # format check
sn triage reviews.txt --manuscript manuscript.pdf # triage reviewer comments
```
Run `sn --help` for the full surface. Outputs cache per manuscript so later commands compose.
## Strategies
| Strategy | Favors | Use when |
|---|---|---|
| `balanced` (default) | Suitability + fit, modest impact | First-pass shortlist |
| `ambitious` | High-impact stretch venues | Top-tier shot, can absorb desk reject |
| `safe` | Article-type fit, suitability | Need a likely acceptance |
| `fast` | OA + cost fit, low prestige weight | Time-sensitive submission |
| `low-cost` | APC vs budget | Tight or zero APC budget |
| `oa-only` | Open-access fit | Funder mandates OA |
| `broad` | Wider net, scope/impact | Exploratory survey |
Combine with `--apc-budget ` and `--oa-preference any|oa-only|avoid-oa`.
## What you get
- **Bucketed shortlist**: stretch / target / safe / fallback / avoid — never a single guess.
- **Sortable HTML report** with field-normalized impact percentile, h-index, i10, citations, OA, APC (approximate, with a "confirm →" link), and per-venue rationale.
- **Author-rule caching** for format checks against the cached rules.
- **Reviewer-comment triage** and response-letter drafting.
- **Strategy reweighting** without re-fetching — `sn rank ... --strategy safe` reuses cached venues.
## Caveats
- Venue rankings are prioritization aids, not acceptance predictions.
- APC, OA flag, and ranking signals come from public APIs; always verify fees on the publisher page.
- Some publisher pages block automated fetching — pass `--from-file` with the text you copy.
- Conference support is currently strongest for CS venues via OpenAlex + DBLP.
- OpenAlex rate limits apply; set `OPENALEX_EMAIL` for higher quotas. Treat `HTTP 429` as a data outage, not a ranking signal.
## Development
```bash
uv run --project scripts python -m pytest
```
Generated artifacts belong under `temp_sn/` (gitignored).