School of Bias
An interactive educational platform teaching behavioural science through lessons grounded in the relevant research.
Overview
School of Bias is an educational platform for behavioural science. The core idea was to create a platform that teaches Behavioural Science in an engaging and interesting way, while being grounded in the latest research.
The platform covers courses across domains where behavioural science operates most visibly, including health, finance, gambling, altruism, and consumerism. Each course is broken into structured lessons, with quizzes that must be passed before the next lesson unlocks.
Demo
Research as foundation
Building the content required going back to the primary literature, such as Kahneman and Tversky on prospect theory or Thaler on mental accounting. All of the research had to be read carefully, understood properly, and then translated into something teachable. The work therefore involved extracting the key mechanisms from the original papers and turning them into informative lessons.
Organisations like the Behavioural Insights Team and The Behaviourlist regularly publish research on how behavioural science is being applied in real-world contexts to enact lasting change, and keeping up with that work and including it as part of the curriculum is what makes the platform relevant.

Lessons
Custom interactive elements
The platform uses custom-built interactive components throughout its lessons, including animated visualisations, and interactive scenarios, each designed to make a specific behavioural concept tangible and engaging. These were built from scratch for each lesson rather than pulled from an existing library, because the concept being taught determined what the interaction needed to do.

Interactive
Why Svelte
I decided to build this in Svelte to learn a new framework and to test a different approach to building interfaces. Svelte is a compiler rather than a runtime framework, and when you write a svelte file, the compiler converts it into plain JavaScript at build time. That JavaScript directly manipulates the DOM, with no virtual DOM, which produces smaller and faster code than frameworks that carry a runtime into the browser with them.
This was important for a platform that relies on interactive elements running smoothly, including simulations and animated transitions. Learning Svelte also forced me to understand how reactivity actually works at the level of compiled output, rather than relying on a runtime abstraction to manage it.

Courses
Progress and structure
The platform tracks progress per lesson and gates content behind quiz completion. The gating system was used to encourage genuine engagement with the material.
A library section was included to provide users with a resource for exploring books related to behavioural science. It is connected to a Gemini API LLM model and the Open Library API, which together filter and assess new book additions for relevance to the platform. The result is a library that can grow through community contributions without requiring manual curation of every submission, while still maintaining a meaningful standard for what belongs in it.

Library
Producing the demo video
The demo video was assembled using a chain of tools, each handling a different part of the process. The raw footage was recorded in several short segments using QuickTime Player, then imported into Descript where the clips were ordered, joined together with transitions, and refined using pan and zoom animations. The title card at the end was designed separately in Stitch and compiled at the end of the video with a matching transition. After export, Wink was used to manually remove the watermark before the footage was brought into Canva for the final edit.
The audio was put together in two parts. The background music was generated using Sona and the narration was produced in ElevenLabs, with sentence timing and pacing adjusted to sit against the visual segments properly. Both were layered into the Canva video editor alongside the footage, with the music faded in at the right moment and the voice timed to match the features it was describing.

Quizzes
Why I built this
Reading Rutger Bregman's Moral Ambition made me ask the question, if you have a specific set of knowledge and skills, what is actually the most useful thing you can do with them? Building a platform that made behavioural science accessible felt like a meaningful use of my time and skills.
Built with
- Svelte
- TypeScript
- Vite
- PostgreSQL
- Drizzle
- Clerk
- HTML
- CSS
- Vercel
More projects