title: AI Research Paper Explainer
emoji: π
colorFrom: indigo
colorTo: purple
sdk: docker
app_port: 8080
pinned: false
AI Research Paper Explainer
A Decoding Data Science build β learner edition. An AI agent that reads a research paper (PDF), explains the concepts in plain language, and draws flowcharts to make them easier to understand. Built with Google's Agent Development Kit (ADK) and Gemini.
This guide is written so a learner can take the project from running on their own laptop (VS Code) all the way to a live, shareable app on Hugging Face Spaces β for free.
What it does
- PDF Analysis β upload and analyze a research paper in PDF format
- Concept Explanation β clear, accessible explanations of complex ideas
- Visual Learning β automatic flowcharts to illustrate processes and relationships
- Live Research Context β pulls in related work and follow-up directions when useful
- Interactive Q&A β ask follow-up questions in the same conversation
How it works (the two halves)
The app is made of two parts that now run together as one service:
- The brain (backend) β a FastAPI app running a Google ADK agent. It reads the PDF, talks to Gemini, and generates flowcharts.
- The face (frontend) β a simple HTML chat page in the
public/folder where you upload the PDF and ask questions.
When deployed (locally or on Hugging Face), a single server serves both the page and the AI, so there is nothing to wire together between separate services.
Part 1 β Run it locally (on your laptop)
Prerequisites
- Python 3.10+
- A Google AI Studio API key (free) β get one at https://aistudio.google.com/app/apikey
Note: This project uses only the Google API key (the Gemini Developer API). It does not use Google Cloud, Vertex AI, or any paid Google Cloud service.
Step 1 β Get the code
git clone https://github.com/<your-username>/research-paper-explainer.git
cd research-paper-explainer
Step 2 β Install the dependencies
pip install -r requirements.txt
You also need Graphviz installed on your machine for flowcharts. On Mac:
brew install graphviz. On Ubuntu/Debian:sudo apt-get install graphviz. (On Hugging Face this is installed automatically β see Part 2.)
Step 3 β Add your API key
Create a .env file in the project root (you can copy the template):
cp env.example .env
Then open .env and set just one line:
GOOGLE_API_KEY=your-api-key-here
Step 4 β Run it
python main.py
Now open http://localhost:8080 in your browser. The chat page loads and the AI works β all from one command, because the app serves the page and the API together.
Upload a PDF, type a question like "Explain the main method in this paper," and you should get an explanation with a flowchart.
Part 2 β Put it on Hugging Face Spaces (free)
Once it works locally, here is exactly how to take that same project and host it for free on Hugging Face, so anyone can use it from a public link.
Why Docker?
Think of Docker as a sealed lunchbox: it packs the code, the language, and the tools (like Graphviz) into one box that runs the same way on any computer. This repo already includes a Dockerfile (the packing recipe), so we use a Docker Space. Hugging Face opens the lunchbox and runs your app.
What had to change to go from "two services" to "one Space"
The original project was designed to run the page and the brain in two separate places. A Space is one container, so the project was adjusted as follows (these changes are already in this repo):
| Change | File | Why |
|---|---|---|
| Backend now also serves the web page | main.py |
One container serves both the page and the API |
Page calls /api/explain (relative), not localhost |
public/index.html |
So it works on any server, not just your laptop |
Stop excluding the public/ folder from the image |
.dockerignore |
The web page must be packed inside the container |
| Added the Space config header | README.md |
Tells Hugging Face: sdk: docker, app_port: 8080 |
Confirmed the agent is fully defined (root_agent) |
research_explainer/agent.py |
The app crashes on startup if the agent code is missing |
Tip for learners: if you ever see
ImportError: cannot import name 'root_agent', it means the agent object inresearch_explainer/agent.pyis missing or renamed β make sure the file ends with aroot_agent = Agent(...)definition.
Step-by-step deployment
Create a Space
- Go to https://huggingface.co/new-space
- SDK: Docker β template Blank
- Hardware: CPU Basic (Free)
- Click Create Space
Upload the project files
- Open the Files tab β Add file β Upload files
- Upload everything so that
README.md,Dockerfile, andmain.pysit at the top level (the root) of the Space β not inside a subfolder β and include thepublic/andresearch_explainer/folders. - Keep the auto-created
.gitattributes(leave it untouched). Let yourREADME.mdoverwrite the default one β yours carries the Space settings. - Add a commit message and Commit changes.
Add your API key as a Secret (never put the key in a file)
- Go to the Space's Settings tab β Variables and secrets β New secret
- Name:
GOOGLE_API_KEY(exact spelling) Β· Value: your key β Save
Let it build
- The Space rebuilds automatically. Watch the Logs.
- First build takes ~3β5 minutes (it installs Graphviz and the Python packages).
- When the status turns Running, your app is live on a public
β¦hf.spaceURL.
Test it
- Open the App, upload a PDF, ask a question, and confirm you get an explanation with a flowchart.
Common issues (and fixes)
403 β cpu-basic quota limitβ On the free plan only a limited number of your Spaces can run at once. Open your other Spaces marked "Running", pause one you don't need (Settings β Pause), then Restart this Space. (Spaces marked "Sleeping" don't count.)- Runtime crash on startup /
ImportError: root_agentβ Make sureresearch_explainer/agent.pyactually defines the agent (root_agent = Agent(...)). - App loads but answers fail / "Failed to fetch" β Check the secret is named exactly
GOOGLE_API_KEY.
Response structure (what the agent returns)
Each explanation generally follows this shape:
- Brief Overview β what the concept is and why it matters
- Detailed Explanation β step-by-step breakdown with technical details
- Paper Context β how this fits into the broader research
- Visual Aid / Research Context β a flowchart or related work, placed where most useful
- Key Takeaways β a short summary
Tools the agent uses
- Flowchart Generator (
generate_flowchart) β builds clean flowcharts (via Graphviz) to show processes, architectures, and relationships. - Research Context (
find_research_context) β finds related papers and follow-up directions and ties them back to the uploaded paper. - Diagram Generator (
generate_diagram) β optional image-based diagrams via Gemini image generation. Left off by default in this build; enable it inresearch_explainer/agent.pyby un-commenting it in the agent'stoolslist.
Technical details
- Model: Gemini 2.5 Flash (text generation and analysis)
- Flowcharts: Graphviz (programmatic generation)
- Backend: FastAPI + Google ADK, in-memory sessions (runs as a single instance β which is exactly what one Space provides)
- Auth: Google AI Studio API key (
GOOGLE_API_KEY) β no Vertex AI, no Google Cloud
Sample questions to try
- "Explain the machine learning method described in this paper."
- "How does the proposed approach work, step by step?"
- "What is the architecture of the system described?"
- "What are the key contributions of this research?"
Extending it
This agent is easy to build on. You can:
- Add new tools (e.g. different kinds of visualizations)
- Adjust the prompt in
research_explainer/agent.pyto specialize in a domain - Enable the image-diagram tool
- Improve the PDF handling or support more file types
Credits & ownership
Maintained by Mohammad Arshad Β· Decoding Data Science Β© 2026 Decoding Data Science. Built for the DDS community and learners.
Original "Research Paper Explainer" concept built with Google's Agent Development Kit (ADK).