← back to work
DASH Language School

DASH Portal — AI-Powered Learning Platform

A curriculum-locked AI assessment platform that grew into a full LMS

FastAPINext.jsPostgreSQLDeepSeekOpenAIGroqLlamaParseCloudflare R2DockerLibreOfficeTailwind CSSAzureClarifaiGoogle Vision

The Problem

DASH Language School had two problems. Creating assessments manually was slow and inconsistent — a recurring drain on teacher time with no guarantee of quality or coverage. And students preparing for exams were turning to generic AI tools that had no idea what was actually in their curriculum.

When I came in, the brief was narrow: fix the AI problem. Build something that locks question generation to the school's own materials. But talking through it with the CEO made the fuller picture clear — the school had no centralized place for students to access course materials, track their progress, or practise between assessments. Solving the AI problem inside that gap meant building around it too.

So DASH Portal became a full LMS with AI assessment at its core.

The Approach

The platform is built across three portals, each serving a key user category: Admin portal, Instructor portal, and Student portal

Student Portal — every course's materials in one place, curriculum-locked assessments on demand, and a shared course question pool that keeps growing as students test. Student Portal is mobile-friendly and available anytime. Students can also retake their own assessments from scratch.

Teacher Portal — upload materials, get AI-generated assessments automatically, track student performance and spot knowledge gaps.

Admin Portal — manage users, courses, and teacher assignments from one place, with every uploaded file secured behind presigned URLs through Cloudflare R2.

The AI architecture was a deliberate departure from the default RAG playbook — chunk documents, embed everything, store in a vector DB, run similarity search. But DASH's content structure made that unnecessary. Courses were already organized into sections, each covering a discrete concept. And since students are enrolled in specific courses, there was no search problem — we always knew exactly what content was relevant.

It was a selection problem, not a retrieval problem.

So the pipeline stops at chunking. At assessment time, N sections are randomly selected from the course, injected directly into the LLM context, and fresh questions are generated from those exact chunks. Every student gets a different test. Curriculum-locked. No embeddings, no vector DB, no reindexing pipeline — and assessment quality identical to the full RAG approach, with fairer curriculum coverage from true randomness.

Getting to that chunked text is its own problem, and it required a deliberate architectural design of its own. Every uploaded file — PDF, PPTX, DOCX, audio, or video — has to become plain text before the AI can use it; a binary file can't be sampled into a prompt. Office documents convert to PDF first, scanned pages run through a cascading OCR pipeline, and audio/video lectures are transcribed automatically — each of these built on stacked free-tier services rather than one paid API, so ingestion scales with usage at effectively zero processing cost. Every format lands as the same clean, chunked text either way.

Large files are also streamed and extracted in small batches rather than loaded whole into memory, with only one file processing at a time and others queued. That keeps the platform responsive under memory constraints and means a single large upload never stalls the rest of the system.

I wrote about this architecture decision in detail in a LinkedIn post - https://shorturl.at/qX9qp

  • Solo-built in about six weeks
  • Three portals (student, teacher, admin) on one platform
  • Zero-embedding RAG architecture — no vector DB, no reindexing, no embedding API cost
  • File extraction runs entirely on stacked free-tier APIs — zero cost, even as usage grows
  • Ingestion pipeline streams files in small batches — so large uploads never stall the platform response
  • Shared question pool that grows with every assessment taken, plus full assessment retakes
  • Live with 50+ students and 7 teachers in its first month
  • All course materials and file uploads secured via Cloudflare R2 presigned URLs

The Outcome

DASH moved from fully manual assessment creation to AI-generated, curriculum-locked assessments.

The shared question pool compounds over time — every assessment taken adds to the bank available to future students on the same course, making the platform more valuable the more it's used.

Gallery