The agent-native learning platform
Every lesson begins with a real job.
PAUL turns live job descriptions into complete, learning-science-backed curricula — generated by AI agents, taught through Socratic coaching, and proven in a record the learner owns.
Canvas LTI 1.3 & 1.1 · OAuth 2.1 · Built for MCP agents
P ersonalized
A gentic
U nified
L earning
One hiring need, start to finish
01The job description
Instruction starts where employment starts.
Nothing in PAUL is taught because it's in chapter seven. Every tutorial and concept lesson traces back — structurally, in the data model — to a competency profile built from a job an employer actually needs to fill.
That isn't a content policy; it's the architecture. Generating instruction requires a real profile and a concrete client scenario before a single word is produced.
Job posting · Meridian Health Systems
Junior Full-Stack Developer
We're looking for a developer to join our patient-portal team. You'll design and maintain RESTful APIs backed by PostgreSQL, and ship features through our CI/CD pipeline.
Day to day you'll build accessible UI in a modern component framework, harden authentication flows for HIPAA-regulated data, and write automated tests alongside the code they protect.
parse_job_description() · 6 employable skills detectedA real posting is the only valid starting point — the generation tools refuse anything else.
02The skills analysis
One posting, six labor-market taxonomies.
An employer's agent parses the posting, then cross-references every skill against NICE 2024, O*NET, ESCO, LinkedIn, Indeed, and Credential Engine — merging cross-source duplicates semantically into one harmonized graph.
The output is the honest list of employable skills a learner needs to qualify for an interview — grounded in labor-market data, not a committee's best guess.
Harmonized skills graph
- PostgreSQL schema design O*NETESCOLinkedIn
- CI/CD pipeline operation NICEIndeed
- Automated testing ESCOO*NETCred. Engine
- Secure authentication NICEESCO
03The curriculum plan
Instructors scope the role, honestly.
From a published profile, an instructor chooses exactly which concepts a course will cover — a focused slice or the whole role — and PAUL computes the coverage as a percentage of the job, not a page count.
Guardrails flag over-promising: a profile too big for one semester gets split into a course sequence instead of being crammed into it.
Curriculum plan · CS 3420
Full-Stack Web Fundamentals
Scoped from: Junior Full-Stack Developer profile
In scope this course
- RESTful API design
- PostgreSQL schema design
- Secure authentication
- Automated testing
Deferred
- CI/CD pipeline operation next course
- Container orchestration next course
Guardrail: plans above a 50% soft ceiling are flagged for a course split — one semester shouldn't pretend to cover a whole job.
04Time-boxed sprints
Built to fit a real semester.
The plan is chunked into time-boxed sprints — sixteen weeks, seven two-week sprints, and buffer by default, with every parameter adjustable to your academic calendar.
Each sprint is anchored to a client story, so learners always work inside a believable business scenario rather than a numbered exercise set.
Semester map
16 weeks · 6 hrs/week · ~84 hours
Sprint 3 · weeks 5–6 · client story
“Meridian's patient portal locks users out after password resets — ship a corrected, secure authentication flow.”
Every sprint carries a required scenario like this one. It becomes the setting for the sprint's tutorial.
Weeks, hours per week, sprint length, and buffer are all parameters — quarters, 8-week blocks, and bootcamp cadences fit the same math.
05The tutorials
Watch an instructor's agent build the course.
Instructors work from their own AI agent — Claude, Cursor, any MCP client — driving PAUL's custom tools. A durable workflow engine generates each tutorial step by step and retries transient failures automatically, so long-running generation simply finishes.
instructor's agent — any MCP client
concept-mcp-server
›Generate the Sprint 3 tutorial from our curriculum plan.
⚒generate_sprint_tutorial({ curriculum_plan_id: "cp_8f2a…", sprint_number: 3 })
durable workflow started · run wf_c91d…
✓ hydrateInputs
✓ findSimilarTutorials
✓ generateTutorialJSON 1 retry — transient timeout, auto-recovered
✓ validateAgainstSchema
✓ persistTutorial
✓ indexForContextAlignment
Published: “Fixing Meridian’s Password-Reset Lockout”
9 steps · 6 concepts tagged · ZPD band: within
06Concept mining
Every tutorial step knows what it teaches.
As tutorials are generated, agentic tools tag the concepts inside every step. Full concept lessons are generated lazily — the moment a learner needs one, in the same business context they're already working in.
And when a learner struggles, remediation lanes generate easier stepping-stone tutorials and concepts — instead of replaying the same explanation, louder.
Tutorial · step 4 of 9
Wire up the JWT refresh flow
Replace the expiring session check with a refresh-token exchange so portal users stay signed in through a password reset…
concepts_in_step — mined
from this step:
Remediation lane · generated only if needed
Struggling with token auth? PAUL generates a stepping-stone lesson — “The HTTP request/response cycle” — routed by Gagné's intellectual-skills hierarchy, then brings the learner back.
07 · The engine underneath
Learning science, running as code.
Most platforms cite the research. PAUL executes it: five instructional-design frameworks are encoded as schemas, prompts, and validators inside the generation pipeline — and an automated quality score rejects any lesson that doesn't meet the bar before it ships.
Concept Coach · Socratic checkpoint
Coach: Your refresh token just leaked. What breaks first — and why doesn't the attacker get access forever?
Learner: They can mint new access tokens… but rotation means the next legitimate refresh invalidates the stolen one?
Coach: Close. Walk me through what the server sees when both tokens try to refresh.
Mastery is demonstrated in dialog — never multiple-choice guessing.
Vygotsky — Zone of Proximal Development
Tutorials open fully scaffolded and deliberately fade support, targeting learner independence about 70% of the way through.
zpd_metadata.target_independence_stepGagné — Nine Events of Instruction
Every lesson is scored against Gagné’s nine events; remediation routes down his intellectual-skills hierarchy.
gagne_events ≥ 6/9 requiredMerrill & Tennyson — Concept Teaching
Concepts are taught through critical attributes with matched examples and near-miss non-examples, never definition dumps.
positive/negative example balance 40–70%Merrill — First Principles of Instruction
Lessons move through activation, demonstration, application, and integration around real problems.
fpi_phase: activation → integrationSocratic Coaches + CARL Reflection
The Practice Coach and Concept Coach probe understanding through dialog, closing with Context-Action-Result-Learning reflection.
carl_reflection · gagne_event 9
08The record
Proof of understanding the learner owns.
Every demonstration of mastery is captured per concept — recognition, explanation, application — and linked to the evidence behind it. Learners keep it as a Learning & Employment Record in a personal wallet, shared with employers through revocable, time-bounded links.
Learning & Employment Record · credential
Token-based authentication
Recognition
Explanation
Application
- Sprint 3 tutorial — auth flow shipped verified
- Concept Coach transcript — Socratic checkpoint verified
- GitHub portfolio — prior work provisional
Share link · expires in 30 days · revocable anytime
paul.…/w/9tk2Evidence earned inside PAUL is verified; outside evidence stays provisional until demonstrated — the distinction employers actually need.