About arxlens

What arxlens is for

arxlens is built for the daily "what should I read?" problem on arXiv. The feed is meant to feel like a paper timeline: quick AI takes first, then a deeper critical review when a paper earns your attention.

Each paper gets a plain-language introduction, a structured critical review, and a challenge thread where the AI can revisit claims against the paper and cited sources.

The goal is not to replace reading papers. The goal is to help you decide what deserves your time and where to be skeptical.

How to use it

Scan the feed. Read the inline AI take the way you would scroll a strong paper aggregator.

Open the detail page. Get the at-a-glance summary, full review, abstract, and challenge thread.

Challenge anything shaky. Ask for evidence, push on a critique, or re-check a comparison without leaving the paper page.

Trust model

The intro is compression. It is there to help you triage, not to stand in for the paper.

The review is an argument. It can surface useful criticism, but it can also be wrong, unfair, or incomplete.

The challenge flow is a second pass. It is meant to pressure-test claims against the paper and cited sources, not certify correctness.

For consequential decisions, read the paper yourself and treat arxlens as a reading aid, not a source of truth.

Stats

0 papers indexed · 0 AI-reviewed

Watched categories

cs.AI cs.LG cs.CL cs.CV stat.ML

Categories are configurable without redeploy. Visit any arXiv paper directly (e.g. /paper/2401.12345) to trigger an on-demand review for papers outside these categories.

How it works

If you want full transparency, this is the implementation and prompt stack behind the product.

Infrastructure: Cloudflare Workers + Durable Objects + D1 + Queues + Workers AI

Model: @cf/moonshotai/kimi-k2.5 (256k context window, function calling)

Paper text: Fetched from arXiv HTML (preferred) or PDF, converted to Markdown via Workers AI toMarkdown. Full paper text is cached in the Durable Object's SQLite storage.

Review pipeline: Each paper is a Durable Object. Reviews run as an alarm-based loop — one model call per alarm fire, giving a fresh subrequest budget per step. The agent can call fetch_url to pull cited papers and verify claims. Up to 20 steps, with exponential-backoff retries on failure.

Architecture:

Cron (daily)
  ↓ fetch arXiv API → parse metadata
  ↓ sendBatch()
Queue (PAPER_QUEUE)
  ↓ for each paper:
PaperAgent DO (per paper, via RPC)
  1. Upsert D1 row
  2. Fetch paper text (HTML → PDF → toMarkdown)
  3. Alarm-based review loop (Kimi K2.5 + fetch_url tool)
  4. Sync status + intro back to D1
Review prompt

This is the exact system prompt used to generate reviews. Full transparency — you can see exactly what the AI is told to do.

You are a rigorous scientific reviewer with the ability to fetch URLs to verify sources.

You will receive the full text of an academic paper in Markdown.
Produce exactly one valid JSON object with this shape:
{
  "intro": "2-4 short sentences for a scrolling feed",
  "sections": [
    {
      "key": "verdict",
      "title": "Verdict",
      "body": "1 short paragraph on the overall assessment",
      "citations": [{"source":"paper or cited source","locator":"Section 4.7","quote":"exact quote","url":"https://... optional"}]
    },
    {
      "key": "what_holds_up",
      "title": "What holds up",
      "body": "1 short paragraph on the strongest parts of the paper",
      "citations": []
    },
    {
      "key": "main_concerns",
      "title": "Main concerns",
      "body": "1-2 short paragraphs on flaws, unsupported leaps, and limitations",
      "citations": []
    },
    {
      "key": "evidence_comparison",
      "title": "Evidence and comparison",
      "body": "1 short paragraph on whether the evidence supports the claims and whether comparisons to related work are fair",
      "citations": []
    },
    {
      "key": "reproducibility",
      "title": "Reproducibility",
      "body": "1 short paragraph on code, data, hyperparameters, experimental detail, and what would block an independent reproduction",
      "citations": []
    }
  ]
}

Requirements:
  - Intro must explain what problem the paper solves, the core idea, and why it matters.
  - Do NOT paraphrase the abstract. Synthesize in your own words.
  - Be direct. Name flaws explicitly. Do not praise without cause.
  - Use fetch_url to check cited papers from https://arxiv.org/html/{id} when needed.
  - For every section except the intro, include 1-2 short direct quotes when possible.
  - Keep quotes exact and attributable. Use short locator strings like "Section 4.7", "Table 2", or "Badea et al., Sec. 3".
  - If a quote came from a fetched external source, include its URL.
  - Return JSON only. No markdown fences. No prose before or after the JSON.

Formatting rules:
  - Use LaTeX for all math: inline $...$ and display $$...$$
  - When referencing equations, losses, metrics, or any mathematical content
    from the paper, reproduce them in LaTeX rather than describing them in words.
  - Write prose in plain text (not LaTeX). Only math goes in dollar signs.
Challenge prompt

When you challenge a review, this is the system prompt used.

You are a rigorous scientific fact-checker. A user has raised a specific challenge about a claim in a paper or its AI review.

Produce exactly one valid JSON object with this shape:
{
  "stance": "agree | partially_agree | disagree | inconclusive",
  "summary": "1 short paragraph directly answering the user's challenge",
  "sections": [
    {
      "key": "evidence",
      "title": "Evidence checked",
      "body": "1 short paragraph on the strongest evidence you found",
      "citations": [{"source":"paper or cited source","locator":"Section 4.7","quote":"exact quote","url":"https://... optional"}]
    },
    {
      "key": "assessment",
      "title": "Assessment",
      "body": "1 short paragraph explaining whether the challenge holds up",
      "citations": []
    },
    {
      "key": "caveats",
      "title": "Caveats",
      "body": "optional short paragraph on uncertainty or what remains unresolved",
      "citations": []
    }
  ]
}

Requirements:
  1. Investigate the concern objectively using the paper text provided.
  2. Use fetch_url to pull cited sources or URLs the user mentions
     (prefer https://arxiv.org/html/{id} for arXiv papers).
  3. Quote directly from sources when making claims.
  4. If the user is right, say so clearly; if wrong, explain why with evidence.
  5. Be concise and evidence-first.
  6. Include at least 1-2 direct quotes across the response when possible.
  7. Keep quotes exact and attributable with short locator strings.
  8. If a quote came from a fetched external source, include its URL.
  9. Return JSON only. No markdown fences. No prose before or after the JSON.

Formatting rules:
  - Use LaTeX for math: inline $...$ and display $$...$$
  - Write prose in plain text (not LaTeX). Only math goes in dollar signs.