Tarik Can Ozden*1 Β Sachidanand VS*1 Β Furkan Horoz*1,2 Β Ozgur Kara1 Β Junho Kim1 Β James M. Rehg1
1 University of Illinois Urbana-Champaign Β Β
2 Middle East Technical University
* Equal contribution
Quick Start β’ Pipeline β’ CLI Usage β’ Web UI β’ Themes β’ ArcDeck as Claude Skills β’ ArcBench β’ Citation
ArcDeck is an end-to-end slide generation framework that converts academic PDF papers into polished .pptx presentation slides. ArcDeck frames slide generation around the paperβs narrative structure instead of simple summarization. By combining narrative-driven outline generation with visually strong slide rendering, ArcDeck produces polished and engaging slide decks.
Pipeline Details
ArcDeck operates in three main phases:
- Converts the input PDF to Markdown using Docling (falls back to Marker if extraction is too short)
- Extracts an asset dictionary of figures, tables, and citations
This is the core intellectual contribution β a multi-agent loop that plans slides using discourse structure:
| Step | Agent | Role |
|---|---|---|
| 1 | Discourse Parser | Analyzes each section's rhetorical structure using RST, producing a binary discourse tree that captures how paragraphs relate (elaboration, contrast, evidence, etc.) |
| 2 | Commitment Builder | Generates a high-level commitments.md contract capturing the paper's thesis, key takeaways, narrative spine, and slide budget priorities |
| 3 | Slide Planner / Reviser | Groups paragraphs into slides using RST relations, then revises based on feedback |
| 4 | Narrative Critic | Critiques the slide plan against the commitment and presentation quality rubrics |
| 5 | Narrative Judge | Decides pass or revise β if revise, circles back the loop (up to 3 rounds) |
- Slide Deck Constructor β An LLM agent plans detailed layouts (template selection, content placement, bullet points) and renders them into
.pptxvia python-pptx or PptxGenJS - Aesthetics Refiner β Matches extracted figures/tables to slides and applies visual styling
News
- [04/2026]: π We We have open-sourced the ArcDeck codebase!
- [04/2026]: β¨ The ArcBench benchmark has been released on HuggingFace!
- [04/2026]: π Narrative-Driven Paper-to-Slide Generation via ArcDeck is now available on arXiv!
TODO
- Codex Plugin Release
- Codebase & Claude Plugin Release
- Benchmark Release
pip install -r requirements.txtCreate a .env file in the project root:
OPENAI_API_KEY=sk-...
# Or set other provider keys as neededBasic:
python -m slide_generation.arcdeck path/to/paper.pdf --model gpt-5Full options:
python -m slide_generation.arcdeck path/to/paper.pdf \
--model gpt-5 \
--template 3 \
--duration 20 \
--audience researchers \
--speaker_scriptJS rendering (PptxGenJS):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
source ~/.bashrc
npm install pptxgenjs # one-time setup
python -m slide_generation.arcdeck path/to/paper.pdf \
--model gpt-5 \
--use_js| Flag | Description | Default |
|---|---|---|
paper_path |
Path to input PDF | (required) |
--model |
LLM model name | 4o |
--template |
PPTX slide template (1β8) | 1 |
--duration |
Target talk length (minutes) | 20 |
--audience |
Target audience | researchers |
--speaker_script |
Generate speaker notes | off |
--use_js |
Generates slides using PptxGenJS Library | False |
--js_design |
PptxGenJS decoration layout (0β5) | 0 |
--agentic_js |
Agentic JS generation (LLM writes the full PptxGenJS script) | False |
ArcDeck also includes a structured Claude Skills configuration for agentic paper-to-slides generation.
-
Create the skill directory and symlinks:
mkdir -p .claude/skills/arcdeck ln -s "$(pwd)/arcdeck-skill/SKILL.md" .claude/skills/arcdeck/SKILL.md ln -s "$(pwd)/arcdeck-skill/agents" .claude/skills/arcdeck/agents ln -s "$(pwd)/arcdeck-skill/prompts" .claude/skills/arcdeck/prompts ln -s "$(pwd)/arcdeck-skill/reference" .claude/skills/arcdeck/reference
-
Open Claude Code in the project directory:
claude
-
Run the skill:
/arcdeck paper.pdf
/arcdeck <pdf_path> [--audience <type>] [--duration <minutes>] [--template <theme>] [--speaker-notes]Defaults:
audience=researchersduration=20template=oceanspeaker-notes=off
| Template | Style | Title Font | Colors |
|---|---|---|---|
ocean |
Ocean Gradient β navy/teal/cyan, light content slides | Georgia | 065A82 1C7293 0891B2 |
minimal |
Clean Minimal β white background, coral accent | Calibri Light | E63946 457B9D 2A9D8F |
dark |
Dark Mode β charcoal backgrounds, violet accent | Trebuchet MS | 7F5AF0 2CB67D FF6B6B |
warm |
Warm Academic β cream background, terracotta accent | Georgia | C45B3E 5B8A72 D4A84B |
You can pass the theme via --template <name> or set ARCDECK_TEMPLATE=<name>.
For the full multi-phase skill workflow, see arcdeck-skill/README.md.
python app.pyOpens a Gradio interface at http://localhost:7860 where you can upload a PDF, configure options, and download the generated .pptx.
| Template 1 | Template 2 | Template 3 | Template 4 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Template 5 | Template 6 | Template 7 | Template 8 |
![]() |
![]() |
![]() |
![]() |
Designs control geometric/ambient decoration style (background shapes, footer, title bar framing).
| Design 0 β Circles & Bokeh | Design 1 β Geometric Angular | Design 2 β Sunset Gradient |
|---|---|---|
![]() |
![]() |
![]() |
| Design 3 β Aurora Neon | Design 4 β Teal Minimalist | Design 5 β Glassmorphism |
![]() |
![]() |
![]() |
Configured via utils/llm/config.py. Supported platforms:
- OpenAI β GPT-4o, GPT-5
- Anthropic β Claude
- vLLM β Local models (e.g., Qwen 32B)
- DeepInfra / OpenRouter / Qwen β OpenAI-compatible endpoints
ArcBench is a curated benchmark dataset of 100 oral presentation papers from top-tier machine learning conferences (CVPR, ICCV, ICLR, ICML, NeurIPS), spanning 2022β2025. Each entry includes the full paper PDF, presentation slides PDF, and rich metadata. Papers were selected from oral presentations only, and filtered to ensure rich content (β₯3 figures, β₯3 tables) and availability of both the original paper PDF and presentation slides.
You can access the benchmark from ArcBench HuggingFace.
ArcDeck/
βββ slide_generation/
β βββ arcdeck.py # Entry point β orchestrates all stages
β βββ outline_generation/ # Discourse parsing & multi-agent refinement
β βββ content_generation/ # PDF parsing, figure matching, layout planning
β βββ renderer/ # PPTX output (python-pptx & PptxGenJS)
βββ prompts/ # All prompt templates
β βββ outline/ # Discourse parser, planner, critic, judge
β βββ pipeline/ # Layout agent, refinement, figure match
βββ utils/ # Shared utilities (LLM, PPTX, styling)
βββ asset/ # Design preview images
βββ app.py # Gradio web UI
βββ requirements.txt
Generated files are saved under contents/<paper_name>/:
| File | Description |
|---|---|
*_raw_content.json |
Parsed paper content |
*_raw_content_rst.json |
RST-organized content |
*_slide_plan.json |
Final slide plan |
*_figures.json |
Figure/table metadata |
*_output_slides.pptx |
Generated PowerPoint |
If you find ArcDeck useful in your research, please cite our paper:
@article{ozden2026arcdeck,
title = {Narrative-Driven Paper-to-Slide Generation via ArcDeck},
author = {Ozden, Tarik Can and VS, Sachidanand and Horoz, Furkan
and Kara, Ozgur and Kim, Junho and Rehg, James M.},
journal = {arXiv preprint arXiv:2604.11969},
year = {2026}
}Selected prompts and code components in this repositoryβs visual generation components were adapted from SlideGen. We thank the SlideGen authors for making their work publicly available.
For feedback, improvements, code support, or general inquiries, please contact tozden2@illinois.edu.















