PM PRIMER · STAKEHOLDER DECK · 2026-04-27
FLASK · SQLITE · SELF-HOSTED

PM Primer

An AEC-flavoured introduction to project management — written for our juniors, set in Ontario, no exam-prep, no copyrighted PMBOK content.

42 lessons 49 scenarios Self-hosted, no cloud Original content

What it teaches

  • The 12 PMBOK 7 Principles
  • The 8 Performance Domains
  • How AEC disciplines fit a project
  • Ontario codes & standards
  • The legislation engineers work under
PMBOK is a registered mark of the Project Management Institute, Inc. PM Primer is an independent educational resource and is not affiliated with or endorsed by PMI.

Why I built this

Most juniors learn project management by osmosis — watching a senior PM, picking up phrases, sometimes guessing at what a term means. There are PMP courses, but they are generic, exam-focused, and built for certification, not for week-three at a small Ontario engineering firm. Nobody writes PM material for the work we actually do.

So I wrote one. PM Primer teaches the same body of knowledge, but in plain language, with examples drawn from heritage rehabs, municipal roadwork, school renos, and the OBC — not generic IT projects.

What it is, in one breath

A small Flask web app that teaches PM concepts through four learning modes — lessons, quizzes, flashcards, and AI-graded scenarios — all written in plain language with Ontario AEC examples baked into every page.

Read

Markdown lessons with worked AEC examples and tips for junior staff.

Test

Auto-graded multiple-choice quizzes with explanations.

Drill

Spaced-repetition flashcards using the Leitner box system.

Apply

Open-ended scenarios graded by Claude against a rubric, with mentor-tone feedback.

The shape of the curriculum

Five tracks, all written from scratch in the firm's voice.

12PMBOK 7 Principles
8Performance Domains
6AEC Disciplines
8Ontario Standards
8Engineering Legislation
42 lesson files 163 quiz items 306 flashcards 49 scenarios 135 glossary terms
PMBOK is a registered mark of the Project Management Institute, Inc. PM Primer is an independent educational resource and is not affiliated with or endorsed by PMI.

This is the writing voice

Every lesson includes an AEC example admonition like this. The example does the teaching; the abstract definition supports it.

You're a junior PM on a municipal road rehabilitation project. The contractor submits an invoice that includes work not yet completed. A steward flags the discrepancy to the project sponsor rather than rubber-stamping payment — even if it creates an uncomfortable conversation with the contractor.

content/principles/01-stewardship.md · AEC Example

Plain language. Specific. The kind of moment a junior staffer will actually face in their first year.

How it teaches / 1 of 4

Lessons

Markdown files with YAML front-matter. Principles run 300–600 words; performance domains and disciplines up to ~1000. Every lesson carries:

  • A real AEC example admonition
  • A "junior staff tip" admonition
  • A short "key ideas" recap
  • Plain language — no PMBOK passages reproduced

Sample slugs

  • principle-stewardship
  • domain-stakeholders
  • discipline-structural
  • orientation-ontario-building-code
  • standards-fire-protection
42 written Markdown + YAML Per-lesson key terms

How it teaches / 2 of 4

Quizzes

Three to five auto-graded MCQs per lesson. Each has an explanation. Below is a real item from the Stewardship deck.

A junior engineer notices a discrepancy between the design drawings and the contractor's invoice. What should they do?

A
Ignore it — invoicing is not their responsibility
B
Approve the invoice to keep the contractor happy
C
Flag the discrepancy to their supervisor or PM
D
Confront the contractor directly

Explanation: Stewardship at every level means raising concerns through proper channels.

content/quizzes.yaml · principle-stewardship[2]

Notice the symmetry with the previous slide — the same point shows up as a narrative example, then as auto-graded reinforcement. That's how a real lesson is supposed to work.

How it teaches / 3 of 4

Flashcards — spaced repetition

A simple Leitner box system — five boxes with widening review intervals. Get a card right and it gets promoted; get it wrong and it falls back to box 1.

State lives in the browser (localStorage) for the POC, so a junior can pick up where they left off without an account. The deck UI shows "X cards due today" per lesson.

Review intervals

  • Box 1 — review next day
  • Box 2 — 3 days
  • Box 3 — 7 days
  • Box 4 — 14 days
  • Box 5 — 30 days
306 cards Leitner SRS localStorage state

How it teaches / 4 of 4

Scenarios — AI-graded, mentor-tone

Open-ended writing prompts grounded in real AEC situations. The user writes a response; Claude (Sonnet 4.6) grades it against a rubric and returns warm, constructive feedback — never demoralizing a junior.

You are coordinating a heritage building rehabilitation in eastern Ontario. The municipal heritage committee wants original window profiles preserved. The owner wants modern triple-glazed units to cut energy costs. The contractor has already ordered the modern units.

Describe how you would engage these stakeholders to resolve the conflict, referencing the Stakeholders performance domain.

content/scenarios.yaml · heritage-stakeholder-conflict

Rubric Claude grades against

  • Identifies all three stakeholder groups and their interests
  • Proposes a structured engagement approach
  • References the iterative nature of stakeholder engagement
  • Acknowledges the tension between heritage value and operating cost
  • Suggests a path forward that doesn't ignore the sunk procurement

Cost-guarded: 1024-token max response, 4000-char input cap. Every grading call logged.

Under the hood

Stack

  • Flask + Jinja2
  • SQLite (no ORM, raw sqlite3)
  • Anthropic Python SDK
  • LDAP3 for auth
  • Bootstrap 5 dark

What it doesn't do

  • No cloud dependencies (except Claude for grading)
  • No copyrighted PMBOK content reproduced
  • No third-party LMS, no SaaS lock-in
  • No npm, no bundler, no build step

Where it lives

  • Self-hosted on the LRL VPS
  • One Python process, one SQLite file
  • LAN / ZeroTier reachable
  • Same operations pattern as our other tools
PMBOK is a registered mark of the Project Management Institute, Inc. PM Primer is an independent educational resource and is not affiliated with or endorsed by PMI.

Beyond the learner

It is not just a learner UI. Three other roles already exist.

Manager dashboard

Track which juniors have completed which lessons, quizzes, and scenarios. Assign work. Review where someone is stuck.

Content creator

Draft new lessons in-browser, save as drafts, publish when reviewed. Lessons remain markdown on disk.

Admin panel

User accounts, settings, grading-call log, in-app feedback log, content management.

How it got built

1
Spec first.

A long CLAUDE.md design document — goals, non-goals, content model, routes, schema, testing plan — written before any code.

2
One end-to-end slice.

Phase 1: Flask app factory, base template, one lesson, one quiz, one flashcard deck, one Claude-graded scenario — all wired and clickable.

3
Content fill, in voice.

Phase 2: all 42 lessons written, 163 quizzes authored, 306 flashcards, 49 scenarios — in plain language, AEC-flavoured throughout.

4
Polish, auth, multi-user.

Phases 3 & 4: search, print views, manager dashboard, content creator, admin panel, LDAP auth, feedback log.

9 content tests 4 grading tests 51 route tests 64 total passing

Where it stands today

✓ Working today

  • All 42 lessons rendering
  • 163 quizzes auto-graded with explanations
  • 306 flashcards via Leitner SRS
  • 49 scenarios graded by Claude with mentor-tone feedback
  • LDAP authentication
  • Manager, creator, and admin panels
  • Feedback log + grading-call log
  • 64 tests passing

○ Not yet

  • Not yet rolled out to a junior cohort
  • Not yet deployed to the VPS
  • No formal feedback loop with users
  • Manager dashboard untested with real data

These are rollout questions, not engineering questions. The product is built; it needs people in it.

What's next

Polish

  • Cross-lesson search
  • Print-friendly lesson view
  • "Recommended next" lesson logic

Phase 5 ideas

  • Tailoring decision tree (predictive / agile / hybrid)
  • Interactive project lifecycle diagram
  • Export progress as a PDF "learning record"

Bigger picture

  • Server-side accounts replacing localStorage
  • Manager training-tracking view
  • PWA shell for phones in the field

Open to direction. Want a walk-through?