SCINTILLA is an agentic framework for processing, organizing, and exploring scientific document corpora. It combines workflows for document acquisition, multimodal conversion, retrieval-oriented database construction, and downstream evaluation.
SCINTILLA is organized into a small number of top-level components that reflect the end-to-end document-processing workflow.
conversion/The conversion/ module contains the main PDF-processing and document-conversion
pipeline. It includes:
pdf_to_markdown_agentic.py for multimodal PDF-to-Markdown conversionlist_pdf_figures.py for PDF figure inspectionextract_figure.py for figure croppingmarkdown_to_book/ for Markdown-to-HTML/EPUB conversionThis layer is responsible for turning scientific PDFs into structured Markdown,
with optional figure extraction and an agentic Markdown repair loop. The
training/ subdirectory also contains utilities for building figure-detection
datasets and training, evaluating, merging, or quantizing Qwen-based figure
extraction models.
download/The download/ module contains corpus-ingestion and batch-operations tools.
It includes:
export_category_pdfs.py for retrieving presentation PDFs from Indicodownload_recent_hepex_arxiv.py for building arXiv-based corporabatch_pdf_md_convert.py for batch conversion workflowscheck_jobs_running.py for monitoring long-running conversion jobsThis layer supports both continuous ingestion of meeting material and one-off collection of larger document sets.
database/The database/ module contains the retrieval-storage layer. It includes:
build_database.py for constructing structured slide/document datasetsmerge_vortex_shards.py for merging sharded Vortex outputsThis stage converts converted corpora and their metadata into retrieval-ready Parquet or Vortex datasets with preserved provenance and optional embedded page assets.
evaluation/The evaluation/ module contains scripts for benchmarking and downstream
analysis. It includes:
build_vectorstore.py for constructing persisted Chroma vector storescategory_statistics.py for corpus statistics over Indico categoriesevaluate_generation.py for evaluation of downstream generation workflowsThis layer is intended to support comparison of retrieval and answer-generation strategies over the processed corpus.
legacy/The legacy/ module contains older or superseded workflows retained for
reference. At present this includes extract_pdf_markdown_vlm.py, which is
useful for documenting earlier design iterations but is not intended to be the
primary conversion path.
SCINTILLA is intended to unify four closely related capabilities:
In this sense, SCINTILLA is not just a converter and not just a retrieval tool. It is a systems repository for building scientific knowledge pipelines from raw PDF corpora to grounded LLM-assisted exploration.
Key packages used by SCINTILLA:
Additional dependencies: OpenAI-compatible clients, LangChain components, Chroma, MarkItDown, PDF tooling (Poppler, QPDF), training/evaluation utilities in huggingface transformers for fine-tuning and serving LLMs.
MIT
6 commits
Python
98.7%
SCINTILLA is an agentic framework for processing, organizing, and exploring scientific document corpora. It combines workflows for document acquisition, multimodal conversion, retrieval-oriented database construction, and downstream evaluation.
SCINTILLA is organized into a small number of top-level components that reflect the end-to-end document-processing workflow.
conversion/The conversion/ module contains the main PDF-processing and document-conversion
pipeline. It includes:
pdf_to_markdown_agentic.py for multimodal PDF-to-Markdown conversionlist_pdf_figures.py for PDF figure inspectionextract_figure.py for figure croppingmarkdown_to_book/ for Markdown-to-HTML/EPUB conversionThis layer is responsible for turning scientific PDFs into structured Markdown,
with optional figure extraction and an agentic Markdown repair loop. The
training/ subdirectory also contains utilities for building figure-detection
datasets and training, evaluating, merging, or quantizing Qwen-based figure
extraction models.
download/The download/ module contains corpus-ingestion and batch-operations tools.
It includes:
export_category_pdfs.py for retrieving presentation PDFs from Indicodownload_recent_hepex_arxiv.py for building arXiv-based corporabatch_pdf_md_convert.py for batch conversion workflowscheck_jobs_running.py for monitoring long-running conversion jobsThis layer supports both continuous ingestion of meeting material and one-off collection of larger document sets.
database/The database/ module contains the retrieval-storage layer. It includes:
build_database.py for constructing structured slide/document datasetsmerge_vortex_shards.py for merging sharded Vortex outputsThis stage converts converted corpora and their metadata into retrieval-ready Parquet or Vortex datasets with preserved provenance and optional embedded page assets.
evaluation/The evaluation/ module contains scripts for benchmarking and downstream
analysis. It includes:
build_vectorstore.py for constructing persisted Chroma vector storescategory_statistics.py for corpus statistics over Indico categoriesevaluate_generation.py for evaluation of downstream generation workflowsThis layer is intended to support comparison of retrieval and answer-generation strategies over the processed corpus.
legacy/The legacy/ module contains older or superseded workflows retained for
reference. At present this includes extract_pdf_markdown_vlm.py, which is
useful for documenting earlier design iterations but is not intended to be the
primary conversion path.
SCINTILLA is intended to unify four closely related capabilities:
In this sense, SCINTILLA is not just a converter and not just a retrieval tool. It is a systems repository for building scientific knowledge pipelines from raw PDF corpora to grounded LLM-assisted exploration.
Key packages used by SCINTILLA:
Additional dependencies: OpenAI-compatible clients, LangChain components, Chroma, MarkItDown, PDF tooling (Poppler, QPDF), training/evaluation utilities in huggingface transformers for fine-tuning and serving LLMs.
MIT
6 commits
Python
98.7%