Skip to content
All work

Lessonly AI

An AI workspace for teachers: governed chat, agents, specialist MCP tools, essay grading and scheduled project work.

Role
Full Stack AI Engineer
When
2026
Status
Delivered to a client
Stack
React, TypeScript, Node.js, Express, MongoDB, Redis, Python, FastAPI, LangChain, PostgreSQL + pgvector, Azure OpenAI, Google Gemini, MCP

Results

Features in one workspace
9
Specialist MCP services
6

This was employer and client work. The details stay at the level I can share publicly.

Approach

A customised open-source chat base turned into an education workspace: governed teacher chat with curated model presets, an agent marketplace, opt-in tools per chat, and an admin console with an audit log.

Specialist MCP services handle lesson planning against standards data, Office document creation, image generation, podcast audio, video discovery and web search. A separate Python service embeds uploaded files for retrieval with citations.

Cowork projects give an agent its own workspace, skills, code execution and the user's own connected SaaS tools, with routines that run on a schedule.

Simplified, illustrative diagram

Lessonly AI

  1. Teachers chat, pick agents, launch lesson plans, grade essays and run Cowork projects in one app.

    • Essay grading
  2. 6 specialist MCP services

    9 features in one app

Key decisions

  • Resumable streams

    Each answer is a generation job streamed over server-sent events, with job state in Redis, so a dropped connection can resume and the API can run as several replicas.

  • Memory with a budget

    A small model condenses recent turns into a token-capped set of preferences, so personalisation doesn't grow the prompt without limit.

  • Retrieval as its own service

    Chunking and embedding run in a separate FastAPI and LangChain service with pgvector, keeping heavy file work out of the chat server.

  • Users connect their own tools

    SaaS connectors use each user's own OAuth account, so the agent acts with that user's permissions, not a shared one.