Skip to main content

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

abet_syllabus-1.0.2.tar.gz (124.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abet_syllabus-1.0.2-py3-none-any.whl (106.4 kB view details)

Uploaded Python 3

File details

Details for the file abet_syllabus-1.0.2.tar.gz.

File metadata

  • Download URL: abet_syllabus-1.0.2.tar.gz
  • Upload date:
  • Size: 124.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for abet_syllabus-1.0.2.tar.gz
Algorithm Hash digest
SHA256 441bc80316becaaab7c6bb6af3f0fa8dddfa10d487c8b29ef111be69cae79149
MD5 c38f4dfa6a57074a9b93fe085ccf992c
BLAKE2b-256 449708adcec4e888e8a84b7e74c71334b16845d0be2768e38119442cc0a8dd85

See more details on using hashes here.

File details

Details for the file abet_syllabus-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: abet_syllabus-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 106.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for abet_syllabus-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21d70bfa86b0732491761c014b46a1f716405c3d547a4be3fe881fac6f22d9d5
MD5 3e337688548fa11bc76d1f0568cc8943
BLAKE2b-256 5d8e1259bcc527111c00ec45a1888812b7358d556cffc153e1510c96fe3a3dd0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page