Skip to main content

A CLI tool to help researchers manage paper deadlines by decomposing milestones into daily tasks

Project description

Paper Bartender

Paper Bartender

PyPI version Python 3.9+ License

A CLI tool to help researchers manage multiple paper submission deadlines by tracking milestones into daily tasks using AI.

Features

  • Natural language interface - Just tell it what you want in plain English
  • Track multiple papers with deadlines
  • Link papers to PDF files for context-aware task generation
  • Create sequential milestones with automatic task decomposition
  • AI reads your paper's PDF to generate tasks tailored to your current progress
  • View today's tasks at a glance

Installation

# Using pip
pip install paper-bartender

# Or using pipx (recommended for CLI tools)
pipx install paper-bartender

Configuration

Set your API key:

# For Anthropic Claude (recommended)
export PAPER_BARTENDER_ANTHROPIC_API_KEY="your-anthropic-key"

# Or for OpenAI
export PAPER_BARTENDER_OPENAI_API_KEY="your-openai-key"

Usage

The do Command - Natural Language Interface

The easiest way to use Paper Bartender is with natural language:

# Add a paper with deadline
paper-bartender do "add paper ABC deadline Feb 20"

# Add a paper with PDF for smarter task generation
paper-bartender do "add paper ABC deadline Feb 20 pdf ~/papers/draft.pdf"

# Link a PDF to an existing paper
paper-bartender do "add pdf ~/Downloads/draft.pdf to ABC"

# Add a single milestone
paper-bartender do "milestone for ABC: finish experiments by Feb 10"

# Add multiple milestones at once (they become sequential!)
paper-bartender do "for ABC paper: fix pipeline bug by 2/4, rerun experiments by 2/10, rewrite results by 2/15"

When you add multiple milestones, they are automatically sequenced:

  • fix pipeline bug: Today โ†’ 2/4
  • rerun experiments: 2/4 โ†’ 2/10
  • rewrite results: 2/10 โ†’ 2/15

View Your Tasks

# Show today's tasks (default)
paper-bartender

# Show all upcoming progress
paper-bartender all

# Show timeline for a specific paper
paper-bartender timeline "ABC"

# Or filter any view by paper
paper-bartender today --paper "ABC"
paper-bartender all --paper "ABC"

Mark Tasks Complete

# Mark a task as done (partial match)
paper-bartender done "fix pipeline"

# Skip a task
paper-bartender skip "review literature"

Example Workflow

# 1. Add a paper with your PDF draft
paper-bartender do "add paper ICML Submission deadline Feb 20 pdf ~/papers/icml-draft.pdf"

# 2. Add all your milestones in one command
paper-bartender do "for ICML Submission: fix training bug by 2/4, run all experiments by 2/10, rewrite results section by 2/15, final polish by 2/19"

# 3. Check your tasks daily
paper-bartender

# 4. Mark tasks as done
paper-bartender done "identify bug"

# 5. See the full schedule
paper-bartender all

Today's tasks with progress bars:

๐Ÿ“‹ Today's Tasks (Sat, Jan 31)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Paper            โ”ƒ Checkpoint                                    โ”ƒ Detailed Task                   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ ICML Submission  โ”‚ โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  25% fix training bug            โ”‚ Review pipeline code and...     โ”‚
โ”‚ Other Paper      โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  50% finish experiments          โ”‚ N/A                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Timeline for a specific paper:

$ paper-bartender timeline "ICML Submission"

๐Ÿ“… Upcoming Progress  (8 tasks across 5 days)

Today (1 task)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Paper            โ”ƒ Checkpoint                                    โ”ƒ Detailed Task                   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ ICML Submission  โ”‚ โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  25% fix training bug            โ”‚ Review pipeline code...         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Tomorrow (1 task)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Paper            โ”ƒ Checkpoint                                    โ”ƒ Detailed Task                   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ ICML Submission  โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘  50% fix training bug            โ”‚ Implement fixes...              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Advanced Commands

Add Paper (explicit command)
paper-bartender add paper "My Paper" --deadline 2025-05-15 --pdf ~/draft.pdf

Date formats: 2025-05-15, 5/15, in 2 weeks, tomorrow

Add Milestone (explicit command)
paper-bartender add milestone "My Paper" "Write intro" --due 5/10

# With priority (1-5)
paper-bartender add milestone "My Paper" "Experiments" --due 5/5 --priority 3

# Skip auto task generation
paper-bartender add milestone "My Paper" "Review" --due 5/8 --no-decompose
List Papers & Milestones
paper-bartender list papers
paper-bartender list papers --archived
paper-bartender list milestones "My Paper"
paper-bartender list milestones "My Paper" --completed
Re-generate Tasks
# Re-generate tasks (re-reads PDF for updated context)
paper-bartender decompose "My Paper" --force

# Preview without saving
paper-bartender decompose "My Paper" --dry-run
Delete Data
paper-bartender delete paper "My Paper"
paper-bartender delete milestone "My Paper" "Write intro"

# Clear everything (creates backup first)
paper-bartender clear

# Restore from backup
paper-bartender restore

Commands Reference

Command Description
paper-bartender Show today's tasks
paper-bartender all Show all upcoming tasks
paper-bartender timeline "Paper" Show timeline for a specific paper
paper-bartender do "..." Natural language command
paper-bartender done "task" Mark task complete
paper-bartender skip "task" Skip a task
paper-bartender add paper ... Add paper (explicit)
paper-bartender add milestone ... Add milestone (explicit)
paper-bartender list papers List papers
paper-bartender list milestones List milestones
paper-bartender decompose Re-generate tasks
paper-bartender delete Delete paper/milestone
paper-bartender clear Clear all data
paper-bartender restore Restore from backup

Data Storage

All data is stored locally at ~/.paper-bartender/data.json. Backups are created automatically before destructive operations.

Development

poetry install
pytest
mypy --strict paper_bartender
ruff format . && ruff check --fix .

License

Apache 2.0 License

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

paper_bartender-0.1.0.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

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

paper_bartender-0.1.0-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paper_bartender-0.1.0.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.16 Darwin/22.6.0

File hashes

Hashes for paper_bartender-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f26be5af1bbd7b29cf915774daa9337c482fec75a9c8c94b737013da2e5019f4
MD5 740adb916c8b96aaded30fa8a379d515
BLAKE2b-256 14d347cb839ff74e4f8f46ee9471a503769bbd95ca01b81730b3c7e0a8e18d50

See more details on using hashes here.

File details

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

File metadata

  • Download URL: paper_bartender-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.16 Darwin/22.6.0

File hashes

Hashes for paper_bartender-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 054b2aa235ae942ef887558d7861b78ecb73377d48d297298a6681f1dd7022da
MD5 28a5c1ac00957727cb2f286a971483ea
BLAKE2b-256 f6c3af4f44c133cd19a2225c9c3d561955d83d3259607dab1e6c6778325d51f1

See more details on using hashes here.

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