AI-Powered Courseware Generation Platform for WSQ Training Providers
Built with Claude Agent SDK β all AI processing runs through Claude Code subscription.
π User Guide (PDF) β Complete step-by-step guide for new team members & interns
The WSQ Courseware Generator is an AI platform that automates the creation of Singapore Workforce Skills Qualifications (WSQ) training materials. Using Claude Agent SDK agents, it transforms Course Proposal documents into complete courseware packages.
| Feature | Description |
|---|---|
| Courseware Creation | Auto-generate Assessment Plans, Facilitator Guides, and Learner Guides |
| Lesson Plan Generation | Generate Lesson Plans with LU-level barrier algorithm scheduling, cover page, and version control |
| Assessment Generation | Create 9 assessment types (SAQ, PP, CS, PRJ, ASGN, OI, DEM, RP, OQ) with WSQ standard format β trainee info header, instructions, and assessor sign-off |
| Convert Assessment | Convert existing assessment documents to WSQ standard format with trainee info, instructions, and assessor sign-off |
| Slides Generation | AI-enhanced slides with NotebookLM integration |
| Brochure Creation | Design marketing brochures via web scraping |
| Courseware Audit | Validate supporting documents with entity extraction |
| Category | Technology |
|---|---|
| Frontend | Streamlit 1.30+ |
| Backend | Python 3.13 |
| AI Processing | Claude Agent SDK |
| Database | SQLite (settings), PostgreSQL/Neon (companies) |
| Slides | NotebookLM MCP Server |
| Document Processing | python-docx, docxtpl, openpyxl, PyPDF2 |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STREAMLIT UI β
β (File Upload / Preview / Download) β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β Extract β βCourseware β β Lesson β βAssessmentβ β
β βCourse Infoβ βAP/FG/LG β β Plan β β (9 types)β β
β ββββββββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β Slides β β Brochure β β Convert β β Annex β β
β β(NotebookLM)ββ(Scraping)β βAssessmentβ βAssessmentβ β
β ββββββ¬ββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β ββββββββββββ β
β βCourseware β β
β β Audit β β
β ββββββ¬ββββββ β
βββββββββΌββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββ
β β
βββββββββΌββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββ
β CLAUDE AGENT SDK (courseware_agents/) β
β β
β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β
β β CP Interpreter β β Assessment β β Slides β β
β β (cp β JSON) β β Generator β β Agent β β
β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββ
β DOCUMENT GENERATION ENGINE β
β (docxtpl Templates + python-docx) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
courseware_claude_streamlit/
βββ app.py # Main Streamlit application
βββ pyproject.toml # Python project metadata
βββ requirements.txt # Python dependencies
βββ .streamlit/config.toml # Streamlit configuration
β
βββ courseware_agents/ # Claude Agent SDK agents
β βββ base.py # Core run_agent() wrapper
β βββ cp_interpreter.py # Course Proposal β JSON
β βββ assessment_generator.py # FG β assessment questions
β βββ slides_agent.py # Document β slide instructions
β
βββ generate_ap_fg_lg/ # Courseware generation (AP/FG/LG)
β βββ courseware_generation.py # AP/FG/LG Streamlit page
β βββ utils/ # Template filling modules
β
βββ generate_lp/ # Lesson Plan generation
β βββ lesson_plan_generation.py # Lesson Plan Streamlit page
β βββ timetable_generator.py # Pure Python barrier algorithm
β
βββ generate_assessment/ # Assessment generation + conversion
β βββ assessment_generation.py # Assessment generation & format conversion
β
βββ generate_slides/ # Slides generation
β βββ slides_generation.py # NotebookLM integration
β
βββ generate_brochure/ # Brochure generation
β βββ brochure_generation.py # Web scraping + template
β
βββ add_assessment_to_ap/ # Annex assessments to AP
β βββ annex_assessment_v2.py
β
βββ courseware_audit/ # Courseware audit
β βββ sup_doc.py # Entity extraction page
β βββ audit_agent.py # Audit field extraction agent
β
βββ extract_course_info/ # CP parsing (pure Python)
β βββ extract_course_info.py
β
βββ settings/ # Settings
β βββ api_database.py # SQLite (prompt templates)
β
βββ company/ # Company management (PostgreSQL)
β βββ company_settings.py
β βββ company_manager.py
β βββ database.py
β
βββ utils/ # Shared utilities
β βββ agent_runner.py # Background agent job manager
β βββ agent_status.py # Agent status UI components
β βββ helpers.py # File & JSON utilities
β βββ prompt_template_editor.py # Prompt template editing UI
β
βββ .claude/ # Claude Code configuration
βββ settings.local.json # MCP server config (NotebookLM)
βββ skills/ # Claude Code skill definitions
- Python 3.13+
- uv (recommended) or pip
- Claude Code with subscription plan
# 1. Clone the repository
git clone https://github.com/alfredang/wsq-courseware-generator-claude-streamlit.git
cd wsq-courseware-generator-claude-streamlit
# 2. Create virtual environment
uv venv && source .venv/bin/activate
# 3. Install dependencies
uv pip install -r requirements.txt
# 4. Set up environment variables
cp .env.example .env
# Edit .env with your DATABASE_URL
# 5. Authenticate NotebookLM (for slide generation)
pip install notebooklm-py[browser]
python -m notebooklm login
# 6. Run the application
streamlit run app.py| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
Yes | PostgreSQL connection string (Neon) |
All AI processing uses the Claude Agent SDK via the courseware_agents/ module:
| Agent | Input | Output |
|---|---|---|
cp_interpreter |
Parsed Course Proposal | Structured JSON context |
assessment_generator |
Course context + K/A statements | Assessment questions (9 types) |
slides_agent |
Document text | Enhanced slide instructions |
import asyncio
from courseware_agents import interpret_cp, generate_assessments
# Interpret a Course Proposal
context = asyncio.run(interpret_cp("output/parsed_cp.md"))Claude Code skills are defined in .claude/skills/:
| Skill | Description |
|---|---|
generate_courseware |
Generate AP, FG, LG documents |
generate_lesson_plan |
Generate Lesson Plans with barrier algorithm |
generate_assessment |
Create 9 assessment types |
generate_slides |
Generate slides with NotebookLM MCP |
generate_brochure |
Create marketing brochures |
courseware_audit |
Verify supporting documents |
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
- Anthropic β Claude Agent SDK
- Streamlit β Web App Framework
- NotebookLM β Slide Generation
- SkillsFuture Singapore β WSQ Framework
- Neon β Serverless PostgreSQL
Made with love for Singapore's Training Providers
