Your course already knows the answers.
LessonFresh turns what you teach into a per-course knowledge base — student chat that cites the exact paragraph, practice generated with provenance, and activities students can actually play. All inside Canvas, through LTI.
Instructors sign in with their Canvas account; students arrive through course links — nothing extra to install for them.
Student chat
Answers that show their work
Students ask questions on the lesson page and get answers grounded in this course's own material — not the open internet. Every claim carries a citation that deep-links to the exact paragraph it came from, so "where does it say that?" is always one click.
Practice
Knowledge checks with provenance
Generate practice questions from what you actually taught — multiple choice, short answers graded by AI with honest feedback, fill-in-the-blank. Every item records the content it was grounded in and flags itself for review when that content changes.
Import
Start from the course you already have
Pull an existing Canvas course or a Common Cartridge export. Pages, files, and syllabus become searchable course knowledge; module structure mirrors both ways, so nothing has to be rebuilt by hand.
Playground
Try it — this is the real thing
These aren't mockups: they're the same activity components students get on lesson pages, running a mini-lesson on how learning actually works. Drag, flip, and check — keyboard works too.
1A student has one week before an exam. Which plan does the research favor?
2Which of these count as retrieval practice? Select all that apply.(select all that apply)
In the product these are generated from your course content in one click — with per-question analytics, and answer keys that never reach the browser.
Custom interactives
When the built-ins aren't enough, build your own
Write plain HTML, CSS, and JavaScript — or describe the widget and let the authoring assistant write it — and it runs as an activity right on the lesson page. Simulations, explorable diagrams, little games: whatever the lesson needs.
var ctx = sky.getContext("2d");
function draw() {
var a = orbit.value * Math.PI / 180;
ctx.clearRect(0, 0, 640, 240);
// Ocean: an ellipse whose long axis points at the Moon —
// one bulge from gravity, one from inertia
ctx.save();
ctx.translate(320, 120);
ctx.rotate(a);
ctx.fillStyle = "#9ed4f2";
ctx.beginPath();
ctx.ellipse(0, 0, 82, 56, 0, 0, 7);
ctx.fill();
ctx.restore();
// Earth
ctx.fillStyle = "#14608f";
ctx.beginPath();
ctx.arc(320, 120, 50, 0, 7);
ctx.fill();
// Moon
ctx.fillStyle = "#cfd8dd";
ctx.beginPath();
ctx.arc(320 + Math.cos(a) * 240, 120 + Math.sin(a) * 92, 13, 0, 7);
ctx.fill();
}
orbit.addEventListener("input", draw);
draw();This is that exact code, running live — drag the slider.
Every widget runs in an origin-isolated sandbox (sandbox="allow-scripts", no same-origin): it can draw, animate, and respond to input, but it can never read student sessions, call the API, or reach into Canvas.
Analytics
See what's working — and what's missing
Every number answers a “so what”: an unread lesson gets moved, a hard question gets rewritten, a content gap becomes a draft page. And it's aggregate-only by design — insight into the course, not surveillance of students.
How it works
From existing course to living course
Step 1: Connect Canvas
Instructors sign in with their Canvas account, or launch straight from a course. Registration is LTI 1.3 — your Canvas admin approves the tool once for the whole institution.
Step 2: Author or import
Write lessons in the editor, or pull in an existing Canvas course or Common Cartridge export. Everything becomes the course's private knowledge base the moment it's published.
Step 3: Place with deep linking
Drop lessons and activities into Canvas modules. Students get cited chat, knowledge checks, and playable activities right on the page — nothing extra to install.
For institutions
Built to pass the committee
The unglamorous requirements — standards, accessibility, data ownership, cost control — are the load-bearing ones. They're where LessonFresh started, not where it's hoping to end up.
LTI 1.3, done right
Cookieless launches that survive Safari in an iframe, deep linking as the canonical placement, and dynamic registration with an approval queue for your admins.
Accessibility as a practice
Keyboard-operable drag-and-drop with screen-reader announcements, alt-text enforcement, an authoring accessibility linter, and an automated axe-core test suite in CI.
No content lock-in
Every page, activity, and asset lives app-side; Canvas stores nothing but LTI links. Migrating means re-placing links — never converting content.
A real control plane
Multi-tenant platform administration with per-institution AI metering, monthly statements, spend caps, and an append-only audit log.
Contact
See it in your Canvas instance
Tell us a little about your institution and what you teach. We'll set up a walkthrough with your own course material — imported live, questions answered with citations.
We read every message.