Bibliobot
Extract bibliographic metadata (title, authors, year, journal, DOI, abstract, volume, issue, pages) from academic papers, review it in an editable table, and export CSV. Available at chat-lab.ai/bibliobot.
How it works
For each uploaded paper, Bibliobot uses an ID-first pipeline: metadata comes from authoritative registries whenever an identifier can be found, and the LLM is strictly the last resort.
- SSRN filename: default SSRN downloads are named
ssrn-1234567.pdf; the ID maps to a registered DOI (10.2139/ssrn.…) and is looked up on CrossRef. No text extraction, no LLM. - arXiv filename: default arXiv downloads are named by their arXiv ID (e.g.
2107.03374v2.pdf); metadata comes from the free arXiv API, including the published journal and DOI when the preprint was later published. - Text extraction: the first 5 pages (PDF, via pypdf) or ~30 paragraphs (DOCX, via python-docx) are extracted server-side.
- DOI in the text: the text is scanned for a DOI (
10.xxxx/…,doi:, ordoi.org/forms) and looked up on the CrossRef REST API, an authoritative, free scholarly registry. (Requests identify themselves to CrossRef's polite pool for reliable service.) - Platform stamps in the text: SSRN's "ssrn.com/abstract=…" footer and arXiv's margin watermark (
arXiv:…) are detected even when the file was renamed, and resolved through the same registries. - OCR for scanned papers: if a PDF has no usable text layer (common for older journal articles), the first 5 pages are read with Google Gemini in a single call that returns both the text and the metadata. The identifier search runs on the OCR text first; only if nothing resolves is Gemini's own metadata used, so no additional LLM call is ever made for scans. Gemini is deliberately kept last in line; see Third-Party Providers for why.
- LLM fallback: only if no identifier worked on readable text, the first ~4,000 characters are sent to a language model with a structured-output schema (with an automatic retry on transient failures such as rate limits). If that comes back empty, one OCR attempt follows for thoroughness.
Every row's Method column narrates the exact path taken as a quoted, comma-separated list of steps (so it parses as a list if you feed the CSV into a data pipeline), for example: ["DOI 10.1016/j.jfineco.2022.01.004 found in text → CrossRef"], or ["no readable text layer", "OCR by Gemini", "metadata extracted by Gemini"]. The statistics under the table group these into Deterministic (pattern matching + registries, no AI), Hybrid (AI read the page, but the ID it found was registry-verified), and Via LLM (metadata from a language model).
Model providers
| Scenario | Provider & model |
|---|---|
| DOI or SSRN ID found | CrossRef (no LLM) |
| arXiv ID found | arXiv API (no LLM) |
| Scanned PDF (no text layer) | Google Gemini gemini-3.5-flash-lite, first 5 pages only (or your own OpenAI key, if provided) |
| No ID | Default: Mistral mistral-large-latest · Optional: your own OpenAI key, GPT-5.6 family: gpt-5.6-luna (default), gpt-5.6-terra, gpt-5.6-sol |
User options
- Optional OpenAI key: Mistral's free tier has usage limits; supplying your own OpenAI API key switches both LLM extraction and OCR to OpenAI (your scanned pages then bypass Gemini entirely and stay under your own account's no-training policy) and unlocks model choice. The key lives only in your browser session.
- Batch upload: up to 25 files at a time (PDF/DOCX, up to 50 MB each); already-processed filenames are skipped automatically, so you can run consecutive batches.
- Editable results: click any table cell to correct it; edits save automatically. Delete a row to free that filename for reprocessing.
- Export: download the table as CSV; clear all results at any time.
- Statistics: tiles under the table count how many papers resolved deterministically, via hybrid OCR, or via LLM.
Keep the original filenames
Files downloaded from SSRN or arXiv resolve instantly and deterministically when their default filenames are kept (ssrn-1234567.pdf, 2107.03374.pdf), with no AI involved.
Data handling
Uploaded papers are processed in memory and never written to disk. Only identifiers go to CrossRef and arXiv; extracted text (first ~4,000 characters) goes to Mistral/OpenAI only in the LLM-fallback case, and the first 5 pages go to Google Gemini only when a PDF has no readable text layer. The results table exists only in your browser session; closing the tab discards it. See Privacy & Data Retention and Third-Party Providers.