Kolibri Content Import — helping teachers finish the job on bad internet
Rethinking the content import and channel management experience for Kolibri: making it faster and more reliable for administrators in bandwidth-constrained environments across 220+ countries.

The brief
Educators complained they couldn’t find where to import content, and when they did, they weren’t confident about what they were downloading. In an offline-first environment where bandwidth is precious, failed imports aren’t just frustrating. They’re costly.
Research approach
I designed and ran usability testing across educational contexts: screener design to recruit educators with varying tech literacy, task-based testing built around realistic find-and-import assignments, and structured interview protocols probing mental models, expectations and pain points.
Key findings
- Discoverability failure. Most participants could not find where to start importing — the entry point was buried, unclearly labelled, and multiple clicks deep.
- Preview confidence gap. No way to preview lessons, no file-size indication (critical on low bandwidth), no sense of how content would appear to learners — so educators couldn’t judge whether content fit their class before spending bandwidth on it.
- Import vs. update confusion. Users couldn’t tell when to use which, leading to duplicate content or failed updates.
Design response
- Redesigned entry point. Import moved to primary navigation with a clear “Add content” action and a prominent empty state.
- Enhanced content preview. Rich preview cards, clear file-size indicators, grade and subject tags, and a “preview as learner” option.
- Simplified channel management. Clear separation of “browse new content” from “update existing content”, with action-oriented language.
The constraint story: K-Card redesign
My first K-Card designs had thumbnail previews, rich metadata, interactive filtering and detailed content breakdowns. Fine on a fast connection, impractical on the slow, shared connections many Kolibri classrooms actually run on. We stripped it back: text-based previews, minimal images, clear hierarchy. It wasn’t the design I wanted to ship. It was the design users needed.
Impact
Lessons learned
Designing for constraints is designing for reality. The most elegant solution isn’t always the most feature-rich; sometimes the best design is the one that works when the internet doesn’t. Usability testing isn’t just about finding bugs. It’s about surfacing assumptions and designing for the behaviour people actually have.
