Skip to main content

PaperPulse

CI PyPI Python License: MIT GitHub stars

Every day, arXiv posts hundreds of new papers. PaperPulse picks the five that actually matter to you, tells you whether to trust them, and explains why — all in plain English.

If this saves you from reading a paper that wasn't worth your time, a ⭐ helps other researchers find it too.

📄 See a real digest generated today →  ·  🗺️ Roadmap  ·  🧪 Annotated example

PaperPulse dashboard — ranked, trust-scored papers with relevance bars, clean/mixed/caution badges, and alpha cards

What it actually does

  1. Ranks papers by what you care about. You describe your interests in a sentence. PaperPulse ranks today's papers against that, and gets smarter every time you say "more like this" / "less like this."
  2. Flags papers that look shaky. No error bars, no code, hyped-up language, results that only hold on one dataset — PaperPulse scans for the patterns that usually mean weaker work, and shows you exactly which words triggered the flag.
  3. Remembers what you've already ruled out. Log a topic as "dead end, already tried" once, and PaperPulse will flag it every time it resurfaces — even in a different country's market or a different dataset.

No API keys, no paid services, no sign-up. It works offline out of the box.

pip install paperpulse
paperpulse init      # 30-second setup wizard
paperpulse run       # today's digest -> digests/YYYY-MM-DD.md

Finance papers get an extra "alpha card"

If a paper claims to find a trading edge, PaperPulse pulls out the specifics: what it's predicting, what data it used, what numbers it reported, and over what time period. A card can be:

  • Strong — data, numbers, and dates are all there. You could try to reproduce it.
  • Vague — the paper talks about markets but gives you nothing to check. This is the important case: it looks credible until you notice there's nothing underneath.
paperpulse alpha                       # today's papers as alpha cards
paperpulse alpha --full-text           # also reads the actual PDF, not just the abstract (needs: pip install "paperpulse[pdf]")

The options-backtest demo — read this before you install it

paperpulse backtest is a teaching tool, not a trading tool. It runs a real backtesting engine (optopsy) on made-up, synthetic data, so you can see how an options strategy is actually tested — how strikes get picked, what a win/loss report looks like, why even a "good" strategy loses money sometimes.

It does not:

  • verify whether any paper's claim is true
  • use real market data
  • connect to a broker or place any trade
  • give you financial advice of any kind

Think of it as a flight simulator for reading finance papers, not an autopilot. It's an optional extra (pip install "paperpulse[backtest]", needs Python 3.12+) — it's off by default and the rest of PaperPulse doesn't need it.

Using it

# Command line
paperpulse run --categories cs.LG cs.CL

# Scripting / automation -- structured JSON instead of markdown
paperpulse run --format json | jq '.papers[] | select(.trust.badge == "clean")'

# Straight into your reference manager
paperpulse export -o today.bib      # BibTeX -> Zotero, Mendeley, EndNote, LaTeX

# As a Python library
python -c "from paperpulse.pipeline import run_digest; from paperpulse.config import Config; \
           print(run_digest(Config(), dry_run=True).markdown)"

# Web dashboard (built in, no extra install)
paperpulse serve            # open http://127.0.0.1:8000

The dashboard has clickable topic filters, a settings panel to change what you're tracking without touching a config file, and renders any math in an abstract properly instead of showing raw symbols.

Or with Docker: docker compose up

Why not just ask an LLM to summarize arXiv?

Typical "arXiv + LLM" script PaperPulse
Ranking Newest first Ranked by your interests, and gets better as you give feedback
Trust Trusts whatever the summary says 15+ automated checks for weak/shaky work, each one explained
Memory None — sees the same thing every day Remembers what you've already ruled out
Cost Needs an API key Runs fully offline for free

More features

  • Multiple sources — arXiv, bioRxiv, medRxiv, PubMed, SSRN
  • Finds contradictions — flags pairs of recent papers that disagree with each other, and surfaces "What changed this week" in the digest itself
  • BibTeX export — paperpulse export drops today's digest straight into Zotero, Mendeley, EndNote, or a LaTeX bibliography
  • JSON output — paperpulse run --format json for scripts, dashboards, and cron jobs that want structured data, not markdown to parse
  • Compares to your own code — paperpulse similar my_model.py finds papers closest to what you're already working on
  • Live prices for finance papers — if a paper mentions the S&P 500, Bitcoin, etc., the dashboard shows the current price next to it (no API key needed)
  • Notes — jot down your own thoughts against any paper and keep them
  • Delivery — save to a file, email, RSS feed, or post to Slack/Discord
  • Shared trust database — a team can pool their trust scores in one place, and measure whether the trust badge is actually predictive of what people like (paperpulse score-accuracy)

Configuration

paperpulse init writes a paperpulse.yaml you can edit by hand — see paperpulse.example.yaml for every option, commented.

API keys and passwords always go in environment variables, never in the config file: OPENAI_API_KEY / ANTHROPIC_API_KEY (only needed if you want AI-written summaries instead of the free built-in ones), PAPERPULSE_SMTP_* (email), PAPERPULSE_SLACK_WEBHOOK / PAPERPULSE_DISCORD_WEBHOOK, NCBI_API_KEY, PAPERPULSE_API_TOKEN (if set, every dashboard/API request — reads included — must carry it as a Bearer token).

Security

  • All outbound fetches that check a host allowlist (PDF downloads, code/data link checks) go through a shared no-redirect opener, so an allowlisted host can't be used to bounce a request off-host.
  • SQLite access is fully parameterized; config is loaded with yaml.safe_load.
  • PAPERPULSE_API_TOKEN gates every route except the static dashboard shell itself, which has nothing to protect.
  • Found a real issue? Please open an issue rather than a public PR with exploit details.

Scheduling

Run it daily with cron, or use the included GitHub Action to generate and commit a digest every weekday morning (.github/workflows/digest.yml).

Contributing

pip install -e ".[dev]"
pytest

Tests run fully offline — no network, no API keys required. See ROADMAP.md for what's built and what's planned.

License

MIT — see LICENSE.

Metadata

Release files for paperpulse 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for paperpulse 0.5.0
File Size Uploaded
paperpulse-0.5.0.tar.gz 119.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for paperpulse 0.5.0
File Interpreter ABI Platform
paperpulse-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 222.3 kB

Release files / paperpulse-0.5.0.tar.gz

Download URL paperpulse-0.5.0.tar.gz
Size 119.4 kB
Tags Source
SHA-256 checksum
How to use checksums
39cdadf3524e488c0e9e2902a6a23e595a8cb8e1e2bbe82927191c79f8408331
BLAKE2b-256 checksum
How to use checksums
ba384929de45be6444541a07f0253e2d6d6bef65f00660ad321f50fab12a2d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.

Transparency log

Release files / paperpulse-0.5.0-py3-none-any.whl

Download URL paperpulse-0.5.0-py3-none-any.whl
Size 102.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d73cb978bf4560e13903867a3696ac822ae1cb0421b7a1aeee178ae1cc00b0ca
BLAKE2b-256 checksum
How to use checksums
6a3af643e12b6fd5a09b97b46e1afdd3f527b27084349a26b0c58b3fd70ed658
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page