
Cloudio Learning: An AI-Native Learning Platform Built Solo, Why It Stopped, and Why It Restarted
An AI learning platform out of the box, built to teach anything by design, and built solo by directing an AI development agent. A retrofit broke it, and most of what broke has since been fixed, which is the reason this entry exists.
- Live at learn.cloudio.co.uk: a layer sitting above the learning providers rather than another place to learn, tracking study across any source and showing the week in one dashboard
- Designed from the data model before any screen existed, which is the main reason a solo-built codebase of this size stayed workable
- The core loop is four steps, add a course, time your study, mark progress, see your week, with the one interface decision that mattered most: the timer sits in the layout so it survives navigation
- One AI integration running thirteen use cases rather than thirteen integrations, from importing a course off a pasted link to generating a twelve-month curriculum at onboarding, natural-language search and a study assistant
- Gamification off by default and enforced in the data, a handles-only leaderboard, no points for manually entered time, and guests seeing everything with the write actions locked, so commitment is asked at peak interest rather than at the door
- Five layers sat above the core loop (discovery and a seeded catalogue, social study groups, enterprise assignment, claimed skills, podcasts). Each defensible alone, all of them accumulated because AI help made them cheap, and that is where the failure-first filter stopped being applied and scope ran ahead of demand
- Why it stopped, what changed, and where it stands now: a retrofit for multiple languages broke an interface with English hardcoded into it, partly from my own experimentation and partly from the AI development agent implementing it incorrectly without warning me how serious it was, and finishing the fix would have cost more than a proper rebuild. So I paused it rather than kept patching, dropped multi-language support entirely, and restarted English only and AI first while still built to teach any subject, with most of what broke now fixed
- The headline lesson is that internationalisation is a day-one decision, because the retrofit cost grows faster than linear and patching your way out of it never closes the gap. Underneath it sits a second one: when build cost falls, prioritisation has to become deliberate, because effort is no longer enforcing it
- Stated plainly rather than glossed: no instrumented analytics and no validated demand beyond my own daily use, so the retention designs are reasoned rather than proven
The deeper technical context, the full data model and the original plan live on GitHub.
Contents
The Context / Challenge
The "Why", what problem needed solving?
Self-directed learning has no single home. Your progress sits inside each provider's walled garden, so nothing shows the whole picture, and the manual alternatives (spreadsheets, Notion templates) ask you to log every session by hand, which is exactly why people stop using them. The manual option tends to fail in the same way the fragmented one does, just more slowly. The gap was a layer sitting above the providers rather than competing with them: automatic tracking across any source, one dashboard, and enough AI help that adding a course takes almost no effort.
Three problems shaped the build: fragmentation (learning scattered across a dozen providers), invisibility (no single view of your time or progress), and isolation (no cohort or accountability). Every feature was meant to trace back to one of them. That rule held for the first half of the build and then slipped, which turned out to matter as much as anything that was built.
The original scope was any source and any subject, and by design it still is. Out of the box it is now an AI learning platform, pre-loaded with AI content, because finding the right AI resources is itself hard, and it is the problem I am using the platform to solve for myself. Pointing it at AI first is part of the lesson, not a retreat from it.
The Solution / Process
The "What", what did you design and build?
I started from the data model, not the screens. Before any interface existed, each of the three problems was mapped to a thing the database would store. A Course that didn't care whether it came from Coursera, a YouTube playlist or a GitHub repo. A study-time record that captured real learning wherever it happened. And opt-in social records for accountability that didn't expose anyone's identity. The data model was the contract, and the screen was just a view onto it. That ordering is the main reason a solo-built codebase this size didn't collapse under its own weight.
The core loop is four steps: add a course, time your study, mark progress, see your week. Everything else either speeds that up or extends it. The most important interface decision was lifting the timer into the layout so it survives navigation, because a timer that lives on one page gets forgotten, and a forgotten timer can't fix the invisibility problem.
AI runs through the product rather than sitting in it as a feature. Thirteen use cases go through a single integration, each tied to a friction point rather than added because the capability was there. Import a course from any URL and the model pulls out the structure from a pasted link. Generate a twelve-month curriculum at onboarding, which attacks the blank page directly, because reacting to a draft is far easier than starting from nothing. A study assistant that changes depending on whether you're signed in. Natural-language search across the catalogue, because filters assume you already know the vocabulary of the thing you're trying to learn. Using one integration rather than thirteen was deliberate: one means one way to fail, one set of rate limits and one thing to update when a model changes, at the cost of lock-in to whatever it supports.
Gamification is off by default and enforced in the data, not just the interface, because a default shouldn't impose a motivation the user never asked for. The leaderboard uses handles only, and manually entered study time earns no points, which closes the obvious way to game it. Guests see the whole product with the write actions blurred and locked, so you're asked to commit at the moment you're most interested, not at the door.
Five layers sat above the core loop, and this is where it stopped being a tracker. Discovery came with a seeded catalogue and community submissions. Social added study groups, with moderation built in alongside rather than afterwards. Enterprise brought automatic assignment by email domain and white-label branding. Skills turned a completed course into a claimed proficiency, and podcasts arrived as a parallel content type. Each is defensible on its own. The accumulation is the problem. They were built because AI assistance made them cheap to add, not because a user had asked for them, and that is where the original filter stopped being applied.
Then internationalisation. The interface had English hardcoded into it from the start, and bolting multiple languages on afterwards broke things widely, raw key strings showing up where translated text should have been. Two things were behind what broke. One came from my own experimentation. The other came from the AI development agent, which was less capable then than it is now. It implemented the change incorrectly and did not warn me how serious it was, even though I had asked before it went ahead. I totted up what finishing the fix would actually take, and it came out higher than rebuilding properly would have. So I stopped rather than kept patching, closed the visible breakage with a single fix to the English fallback, and left the rest honestly paused instead of pretending it was fine. The choice that followed was not to rebuild for multiple languages. It was to drop the idea entirely and go back to English only, because the retrofit is what had broken the platform and the cost of finishing it is what made continuing not worth it.
The restart is English only and AI first out of the box, though still built to teach anything. Most of what broke has been fixed, helped by the development engine being more capable now than when it broke. The lesson lives in those constraints rather than in a note somewhere. Multiple languages are gone rather than fixed, and the scope is the thing I actually use the platform for myself, which means I find what's broken by using it rather than by guessing. The deeper technical write-up, including the data model and the original plan, lives on GitHub.
The Artifacts / Deliverables
The "Proof", what tangible things came out of the work?
- A provider-agnostic learning platform built solo with AI assistance, live at learn.cloudio.co.uk
- Every screen built against a data model that existed first, which is what kept a solo-built codebase from collapsing under its own feature count
- The core loop: capture a course by URL or by hand, a timer that survives navigation, progress tracking, and a weekly dashboard
- Thirteen separate use cases, from pasting in a course link to generating a curriculum, all running through one AI integration rather than thirteen
- Opt-in gamification and a guest model that asks for commitment at peak intent, both enforced in the data
- A seeded AI catalogue with verified reviews and a community submission pipeline, plus enterprise, skills and podcast layers later identified as scope that ran ahead of demand
- A multi-language scaffold that broke on retrofit and was removed, leaving English as the only language
- The original rebuild plan, six scoped phases, later superseded by dropping multi-language support and finishing the existing platform
The Outcome / Impact
The "So What", what measurable success followed?
- Still up and reachable rather than taken down while unfinished. The core loop worked and some of the surrounding layers did not. It was linked in that state, not withdrawn, and the platform has since been restarted with most of what broke now fixed
- The multi-language retrofit is what actually stopped the build, and the principle that came out of failing at it is worth more than the feature would have been: decide on internationalisation before you write the first screen, because retrofitting it gets disproportionately expensive the longer you wait, and trying to patch your way out of it never actually closes the gap
- Scope discipline is the second transferable lesson. The failure-first filter held for the first half of the build, then slipped once AI assistance made new layers cheap enough that the build friction stopped doing the prioritising by accident
- A third lesson sits underneath both: when build cost falls, prioritisation has to become deliberate, because it is no longer enforced by effort
- Failure turned into a design constraint rather than carried as debt or hidden. Multi-language support was removed, English is the only language, and out of the box the platform is an AI learning tool that is still built to teach anything
- No instrumented analytics and no validated demand beyond the builder's own daily use, which is a real signal but a single-user one. The retention designs are reasoned rather than validated, and that is stated deliberately