CLI tool to generate ABET-compliant course syllabi from university course specifications
Project description
ABET Syllabus Generator
CLI tool that converts university course specification files (PDF/DOCX) into standardized ABET-compliant course syllabi. Designed for KFUPM but adaptable to any institution.
Features
- Extract text and tables from PDF and DOCX course specifications
- Parse two input formats: standard KFUPM PDF (sections A-H) and CRF2 DOCX
- Store all extracted data in a central SQLite database
- Map Course Learning Outcomes (CLOs) to Program Learning Outcomes (PLOs) using AI
- Generate ABET syllabus documents (DOCX) from a template
- Export data to CSV/JSON for reporting
- Validate data quality before generation
- Interactive mode with folder browsing and smart defaults
Installation
pip install abet-syllabus
With AI mapping support (Anthropic or OpenRouter):
pip install abet-syllabus[ai]
For development:
git clone https://github.com/yourusername/abet-syllabus.git
cd abet-syllabus
pip install -e ".[ai,dev]"
Quick Start
Full pipeline (one command)
abet-syllabus run resources/course-descriptions/math/ -p MATH -t T252 -o ./output/
Interactive mode
abet-syllabus run
Browses folders, asks for program and term interactively.
Step by step
# 1. Ingest course files
abet-syllabus ingest resources/course-descriptions/math/ -p MATH -r
# 2. Load PLO definitions
abet-syllabus ingest-plos resources/plos/plos.csv
# 3. (Optional) AI-powered CLO-PLO mapping
export OPENROUTER_API_KEY="your-key" # or ANTHROPIC_API_KEY
abet-syllabus map --all -p MATH
# 4. Generate ABET syllabi
abet-syllabus generate --all -p MATH -t T252 -o ./output/
Commands
| Command | Description |
|---|---|
run |
Full pipeline: ingest, (optionally map), generate |
extract |
Raw text/table extraction from PDF/DOCX |
parse |
Structured field extraction |
ingest |
Extract, parse, and store in database |
ingest-plos |
Load PLO definitions from CSV |
map |
AI-powered CLO-PLO mapping |
generate |
Produce ABET syllabus DOCX from database |
query |
Inspect database (courses, CLOs, stats, coverage, SQL) |
export |
Export to CSV/JSON |
status |
Database overview |
validate |
Data quality check |
AI Mapping
Supports two AI providers for CLO-PLO mapping:
- OpenRouter (multi-model gateway):
export OPENROUTER_API_KEY="your-key" - Anthropic (direct):
export ANTHROPIC_API_KEY="your-key"
The provider is auto-detected from available API keys. Use --provider and --model flags for control:
abet-syllabus map "MATH 101" -p MATH --provider openrouter --model google/gemini-2.5-flash
Input Formats
- Format A (PDF) - Standard KFUPM "COURSE SPECIFICATIONS" with sections A-H
- Format B (DOCX) - CRF2 "COURSE SPECIFICATIONS" with structured tables
Configuration
Optional YAML config file (abet_syllabus.yaml):
db_path: abet_syllabus.db
template_path: resources/templates/ABETSyllabusTemplate.docx
output_dir: ./output
log_file: abet_syllabus.log
Requirements
- Python 3.11+
- Dependencies: pdfplumber, python-docx, PyYAML, defusedxml
- Optional: anthropic (for AI mapping), docx2pdf (for PDF output)
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abet_syllabus-1.0.3.tar.gz.
File metadata
- Download URL: abet_syllabus-1.0.3.tar.gz
- Upload date:
- Size: 124.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57a1cc6c778f3ca743a31956934d2d127e57372463a672d1e120829a85a7f164
|
|
| MD5 |
04976786ab9cb7bfb7eed130d3e9aadc
|
|
| BLAKE2b-256 |
dcd1faa12114d7f4ccd58c8e4a8f78a9b2e1ddbf6c61e4a889a661af1a3230bd
|
File details
Details for the file abet_syllabus-1.0.3-py3-none-any.whl.
File metadata
- Download URL: abet_syllabus-1.0.3-py3-none-any.whl
- Upload date:
- Size: 106.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93d1c9545c02a8f475b38f7964821b74aad0abdbeea395b4c080f3d734e7ab88
|
|
| MD5 |
6f3b7f8f1c5678d8ebf25f1aba9fa167
|
|
| BLAKE2b-256 |
95bb3fd75e0a6c207e1be37a6b0b3e20910be9b63f5fd8adf05b32218a2efa3c
|