Turn a course syllabus PDF into reviewable, calendar-ready deadlines.
Syllabus Terminator extracts important academic events such as assignments, quizzes, midterms, and exams from a syllabus PDF, lets users manually review and edit the results, and exports everything as an .ics file for Google Calendar or other calendar apps.
This repository is currently the local MVP of the project. The long-term goal is to turn it into a hosted web app where users do not need to install a local model.
- Current milestone:
v0.1.0 - Local MVP is working
- PDF text extraction is handled in the browser
- Event extraction uses a local Node backend plus Ollama
- Results can be manually edited before export
- Calendar export works via
.ics
- Make this available for public so no local model needs to be implemented
- Upload a syllabus PDF
- Extract raw text with
pdfjs-dist - Parse deadlines and assessments with a hybrid rule-based plus LLM pipeline
- Review and manually edit event name, date, and time
- Add or remove events before export
- Export the final result as an
.icscalendar file
Course syllabi often contain important due dates, but those dates are buried in grading tables, weekly schedules, or long PDF documents. This project tries to reduce that friction by turning unstructured syllabus text into something students can actually use in their calendars.
- React
- Vite
- Tailwind CSS
pdfjs-distics- Node.js backend
- Ollama for local model inference
- The user uploads a PDF in the browser.
- The frontend extracts raw text from the PDF with
pdfjs-dist. - The frontend sends extracted text to the backend.
- The backend combines rule-based parsing with a local LLM call through Ollama.
- The app returns structured events.
- The user reviews and edits the extracted events.
- The final reviewed events are exported as an
.icsfile.
npm installInstall Ollama from:
Then pull a model.
Default lightweight option:
ollama pull deepseek-r1:1.5bRecommended stronger local option:
ollama pull qwen2.5:14bDefault model:
npm run serverUsing a stronger model:
OLLAMA_MODEL=qwen2.5:14b npm run serverWindows PowerShell example:
$env:OLLAMA_MODEL='qwen2.5:14b'
npm.cmd run serverDevelopment:
npm run devOr build and preview:
npm run build
npm run preview -- --host 127.0.0.1src/
components/ UI components
pages/ page-level React views
utils/ PDF extraction, API client, ICS export helpers
server/
index.mjs local extraction backend and parsing logic
scripts/
debug_extract_pdf.mjs PDF debugging utility for extraction tuning
- Editable review flow before export
- Better handling of grading tables and weekly schedule patterns
- Expansion of recurring items such as weekly quizzes and assignments when the syllabus gives enough structure
- Practical extraction for real course PDFs tested during development
- This version is still optimized for local use
- Users currently need Ollama and a local model installed
- Accuracy depends on syllabus formatting quality
- Scanned-image PDFs may still require OCR for better results
- The hosted web version is not finished yet
- Hosted web deployment so end users do not need local models
- Better OCR support for scanned syllabi
- Stronger multi-model backend support
- Drag-and-drop event reordering
- Better validation and conflict detection before export
- Cleaner public landing page and demo experience
- Students who want quick calendar import from a syllabus
- Class project demos
- Portfolio demonstration of PDF parsing + AI-assisted structuring
- Prototyping productivity tools for academic workflows
Issues, ideas, and feedback are welcome.
If you want to contribute, a good place to start is:
- improving extraction quality on more syllabus formats
- polishing the hosted deployment architecture
- improving the editing workflow
- adding tests and validation
No license has been added yet.
If this repository is meant to be open for reuse or contribution, adding a license should be one of the next steps.