1The problem
A course is made once and served to everyone the same way. But two people who want to learn the same subject almost never start from the same place or want to go to the same depth. A single course wastes the time of whoever already knows part of it and loses whoever is just starting.
We wanted to flip the order: instead of the person adapting to a ready-made course, the course is built around the person. The learner describes what they want to learn, and the platform generates a tailor-made course from there — the artifact Vosuni creates is a real course, with its lessons, topics and quizzes.
2The stack
"Stack" is the word for the set of software pieces that hold a product up — the base it runs on, the ready-made tools it reuses, and the custom code on top. We'll walk through Vosuni's, because the choices explain a lot about the product. The guiding principle was simple: don't reinvent what already works. Explore the term for the plain-language version.
The base is WordPress working as a — it handles accounts and the structure of the site. On top of it sits LearnDash, a mature that already models the learning objects we need: courses, lessons, topics and quizzes. We chose this pair on purpose: a course platform like LearnDash already knows how to store and track those objects, so we didn't have to rebuild that foundation. A third piece, BuddyBoss, adds the social and interface layer, including a Duolingo-style focus mode.
Orchestrates the whole course generation — the plugin that drives the AI pipeline end to end.
Turns navigation into the step-by-step, Duolingo-style flow the learner moves through.
Adds the per-lesson practice layer: a relevant YouTube video plus interactive exercises.
Handles access — who can open which course.
Handles credits and monetization.
We chose WordPress for its plugin system (it lets you extend the platform with modular pieces) and because it let us use LearnDash to run the whole LMS. Since the focus was building the course GENERATOR, we didn't want to design an LMS from scratch. On top of that, the studio already has years of experience as a WordPress developer, so building on it was faster and safer.
LearnDash is the mature LMS that already models courses, lessons, topics and quizzes — so we reused it instead of rebuilding; BuddyBoss adds the social layer and the Duolingo-style focus-mode interface.
On top of that base we built our own layer, divided into five — each with one job, shown in the diagram above. Keeping each capability as its own plugin means we can evolve one without touching the others.
The generation itself runs on in the cloud. So the stack has two halves: a well-established foundation for the courses, and a custom layer that turns an intention into a tailor-made course.
3How we used AI
The AI isn't a chatbot bolted onto a course — it is the engine that builds the course, and it works in a deliberate order. Tap each step to see what it does.
The learner describes what they want to learn — that intention in plain words is the starting point.
The AI extracts the actual skill behind that intention, so the course targets a real competency.
It generates a competency rubric from 1 to 10, describing in words what each level of mastery looks like, so the learner can place themselves and pick a target.
It maps a around that skill — what comes before it (prerequisites) and what reinforces it — so the course follows a natural order instead of a flat list.
It designs the full pedagogical roadmap — the whole path — before writing any content. Planning as a whole keeps the course coherent.
Only now does it hydrate the course lesson by lesson, with short quizzes to consolidate, plus a practice layer per lesson: a relevant YouTube video and interactive exercises.
All of this runs on multiple AI providers behind a single door, with (running Claude) as the default engine; whoever wants more control can plug in their own key (). When it helps, the AI can also anchor lessons in real web sources and show citations — grounding the content instead of inventing it.
4Key decisions
Generate a bespoke course instead of selling a catalog. It would have been simpler to offer a catalog of ready-made courses. We chose the harder route — have the AI generate a course per person — because that's the whole point of the product. Vosuni is a course creator, not a course store. A course built around where you are is worth more than a generic one you have to adapt yourself.
Reuse a mature course platform instead of building one. Rather than invent our own way of storing courses, lessons and progress, we stood on top of WordPress and a well-established . The learning objects were already modeled there, so we could spend our effort on the part that's actually new — the AI that generates the course — not on plumbing that already exists.
Design the whole roadmap before writing a single lesson. It's tempting to let the AI write lesson 1, then 2, then 3. We decided the opposite: the AI first designs the entire path, then fills it in. The reasoning is coherence — a course planned as a whole holds together far better than one improvised one lesson at a time.
AI available by default, with the option to bring your own key. The AI comes available by default, so anyone can use the platform without setup. For those who want more control, there's the option to . Most people never need to touch this — it's there for whoever wants it, not a barrier for whoever doesn't.
5Getting more technical…
This section is for whoever wants to look under the hood. None of it is required to understand the product — but the decisions here are the ones that made the rest actually work.
Custom tables for the skill graph. A course platform knows how to store courses and lessons, but it has no idea what a "skill", a "prerequisite" or a "reinforcement" is. So we created our own to hold that: one for the skills and their levels, one for the relationships between skills, and one for where each learner sits on each skill. Those relationships are the edges of the , shown below.
A single door for all the AI. Every AI feature — generating a course, finding a video, writing an exercise — goes through one central point, a façade. The code that handles the product logic never talks to a provider directly; it asks the façade, and the façade decides which provider, model and key to use. That's what lets us swap for someone's own key without rewriting anything. Each request to the provider goes out over an , the standardized way two systems talk.
Roadmap first, locked state, then hydrate. We generate the whole roadmap and lock it before filling in any lesson. Why do it in this order? Because generating content is the expensive part, in both time and cost. If the plan is still shifting while lessons are being written, you get an incoherent course and wasted generation. Deciding the plan once, freezing it, and only then spending effort on content keeps the course coherent and the work from being thrown away.
A tolerant JSON reader. We ask the to answer in a strict data format (JSON) so the system can read it. In practice, models often wrap or trim that answer — adding extra formatting around it or cutting it short. Instead of fighting the model, we built a tolerant reader that unwraps and repairs the response before using it. It's a small decision that quietly prevents a lot of broken courses.
6What we learned
Generating a whole course takes time, and asking the person to stare at a loading screen for minutes doesn't work. The lesson: break the heavy work into small steps and show progress as it happens, so the wait feels like something being built, not a frozen screen.
The order in which you do things changes the result. We learned the hard way that some steps only work if they happen before others — a detail that is invisible in the final product but decides whether it works at all. Building with AI is less about the prompt and more about the pipeline around it.
And a product principle we carried forward: the advanced option should never get in the way of the simple path. Powerful features for a few can't become friction for the many. We respect privacy and the law (LGPD) by keeping the default simple and the extras optional.
7What this means for your company
The core Vosuni mechanic is this: one body of content serves many different people. You keep the material and the AI adapts it per person, driven by parameters you set for the job — tone of voice, pace, prior knowledge, and how simple or deep to go for someone's capacity to absorb. And you control the scope: the public Vosuni lets anyone pick any topic from an endless list, but you can close that down to a finite set, or even a single course that each person simply receives adapted to them. Here's how that travels to other contexts.
One onboarding or training, adapted to each person's prior knowledge and the way they learn best. The employee can tune the tone, the pace and the depth to themselves, so the same material lands differently for a junior and a senior — without you writing two versions.
Teach your product or your company's concepts with content focused on each persona. From a single base, the AI shapes the version each audience needs — a quick start for one, a deep dive for another — so you stop hand-making a separate piece of material for every public.
Build training aimed directly at the people on a team: take the material you already have and let the AI adapt it to each person's level and role. One source of truth, many versions — instead of a single course everyone sits through at the same depth.
The takeaway: when the same content has to reach people who are not the same, adapting one source per person — by tone, pace and depth, within a scope you control — beats shipping one rigid course to everyone. That's the piece worth adapting to your context.