Pick a subject to begin {{ selectedSubjectName }} — grades and courses {{ selectedSubjectName }} / {{ selectedCourse }} — outcomes

Pick any subject on the left. You will see the courses and grades that exist for it, and then the actual learning outcomes Alberta teachers work from.
Loading courses...
No courses on file for this subject.
{{ c.grade_label }}
{{ c.course_code }}
{{ c.n_nodes }} entries
Loading outcomes...
No outcomes match.
{{ o.type_code }} {{ o.code }}
{{ o.content_en }}

How the personalised learning platform works

1. Where the curriculum comes from

Every outcome in this explorer is sourced from LearnAlberta.ca, the Government of Alberta's official curriculum site. We mirror the K-12 Programs of Study into a read-only Postgres database so the staff portal and the AI agents can cite real outcome codes instead of paraphrasing or inventing learning objectives.

The mirror holds 51,410 curriculum nodes across all subjects, courses and grades. We do not modify the source content. When LearnAlberta.ca publishes an update, we re-mirror.

2. The technology stack

The platform is intentionally simple so a small team can maintain it.

LayerChoiceWhy
FrontendVue 3 via CDNNo bundler. View source in a browser.
BackendNode.js + Express (ES modules)One process serves both UIs and the API.
DatabasePostgres 15 on RenderStudents, plans and generated media live in BYTEA columns.
Curriculum mirrorRead-only Postgres replicaPowers the explorer and the planner. Never written to.
HostingRender.com web serviceAuto-deploy from GitHub. Health check on /api/health.

3. The AI partners

Three providers, each chosen for the thing it does well:

  • Vertex AI (Anthropic Claude Sonnet 4.6) writes the plan and runs the conversational helper. It is given the candidate curriculum outcomes and forced through a tool-use schema, so it cannot invent codes.
  • OpenAI gpt-image-1 generates the cover image and per-section illustrations in a consistent classroom style.
  • ElevenLabs eleven_multilingual_v2 narrates the plan summary with a custom voice so a parent can listen on a phone in the car.

4. How a personalised plan is built

1
Signals

For each subject the student has term marks in, we compute the last-two-term average and pick a direction: remediate (avg under 60), on-grade, or accelerate (avg 88 or above).

2
Candidates

We pull the top curriculum outcomes for the target grade from the read-only mirror. These become the only outcomes the LLM may cite.

3
Plan

Claude Sonnet picks 3-5 outcomes per subject, writes a rationale, and proposes 2-3 activities. Audience tunes the language (teacher, parent or student).

4
Narration

The plan summary is sent to ElevenLabs with the custom voice. The resulting mp3 is stored in Postgres as BYTEA so playback works directly from the database.

5
Illustrations

OpenAI generates a cover image, prompted with the subject, grade and audience plus a fixed house style for visual consistency.

5. Student data and privacy

The students in this demo are synthetic. ASINs, names and marks are generated. No real-student identifying data is ever sent to any AI provider. The conversational helper only sees fields that the staff portal exposes (current grade, complexity flags, recent marks). The curriculum mirror is read-only and never receives prompts about specific students.

Where to next

Try the explorer to see the actual curriculum, or open the staff portal to see how plans are generated for a student.

Open the explorer

What does one course pack cost?

A course pack is the bundle of artefacts the platform produces for one student: a plan, an audio narration, and one or more illustrations. Costs come from three providers; rates are public list prices as of January 2026 and may have changed by the time you read this.

Tune your assumptions

{{ costInputs.plans_per_day }}
{{ costInputs.audio_per_plan }}
{{ costInputs.images_per_plan }}
{{ costInputs.chats_per_day }}
{{ costInputs.days_per_month }}

Per-asset prices (list)

AssetUnitUSD
Plan (Claude Sonnet, ~4k input + 1.5k output tokens)1 plan$0.026
Plan narration (ElevenLabs, ~900 chars at $0.0003/char)1 mp3$0.27
Cover image (OpenAI gpt-image-1, 1024x1024, medium)1 image$0.04
Follow-up question (Claude Sonnet, ~2k input + 600 output)1 chat$0.015

Estimates assume Vertex pricing of $3 per million input tokens and $15 per million output tokens for Claude Sonnet, OpenAI gpt-image-1 medium-quality 1024x1024 at $0.04 each, and ElevenLabs at roughly $0.30 per 1000 characters on the Creator tier.

Your projected cost

CadencePlansAudioImagesChatsUSD
Per day{{ daily.plans }}{{ daily.audio }}{{ daily.images }}{{ daily.chats }}${{ fmt(daily.total) }}
Per week{{ weekly.plans }}{{ weekly.audio }}{{ weekly.images }}{{ weekly.chats }}${{ fmt(weekly.total) }}
Per month{{ monthly.plans }}{{ monthly.audio }}{{ monthly.images }}{{ monthly.chats }}${{ fmt(monthly.total) }}

Sticker shock check

At the typical demo cadence of 1-2 course packs per day with one narration and one cover image, expected per-student spend is roughly $0.35-$0.70 per day before discounts. Caching the same audio across siblings or sharing illustrations within a class cuts the cost noticeably.