home about writing elsewhere building

From a professor's napkin sketch to a gamified study app for 3,000 students

SocBuddy · SOC100 · University of Toronto

3,000 students every year Solo researcher + designer + developer Pedagogy-driven design Co-built with Claude Code
✏️ The idea
Prof. McIvor's handwritten goals from our first meeting
📱 The result
SocBuddy HomeScreen
🎯

The challenge

"Basically, I want Duolingo, but for intro sociology"

4 years after taking Introduction to Sociology, my professor hires me to make a custom studying app for it. He had four goals:

⚖️ Meritocratic: reward effort
🎉 Studying doesn't have to suck
Beat procrastination
📋 Keep students organized
Professor's handwritten goals on napkin

Notes from our first meeting

And with his goals, he had four asks: gamification, leaderboards, streaks, and a playful experience.

App structure diagram with feature architecture

Architecture sketch

But as a sociology student myself, I needed some clarity on the vision:

My design pushbacks
"Do we really need to make another app? Why not Quizlet/Anki/etc.?"

We do, because of the nature of the university class. In sociology, definitions and concepts might vary depending on the source. We need a way to ensure students are referring to this course's content, instead of accidentally studying with the wrong material. The more external tools, the more bureaucratic issues occur. It's best if we keep this in-house.

"Is Duolingo, an app for language learning, the right reference for sociology learning?"

Even though studying sociology concepts can be more complex, we can still borrow from the way Duolingo spreads studying progress out over time (instead of cramming), and makes it more fun with elements of play and gamification.

💡

Design decisions

Decision 01

Gamified the right way

The professor wanted to motivate students using rankings. But education research shows competition can demotivate struggling students. We landed on emphasizing percentile rankings ("Top X% of SOC100") instead of raw rank to reward students while promoting motivation. Plus, students can always opt-out of leaderboards.

Research on competition vs motivation

Studies on gamification in higher education (Dichev & Dicheva, 2017) find that leaderboards can increase engagement for top performers while discouraging students in the bottom half. Percentile framing reduces direct comparison anxiety while still providing social proof.

Leaderboard showing percentile rankings
Decision 02

Healthy study habits

Streaks encourage regular studying to prevent cramming before tests. Weekends are excluded from streaks to model ahealthy school-life balance.

Streak calendar with weekends excluded
Decision 03

Meet students where they are

SOC100 students are diverse. Some are taking it as a pass/fail elective, others want to win the Highest Mark award. We let them choose how they want to engage: the next stage is unlocked with a minimum 6/10 score, but they can also go as far as mastering every concept.

Module journey showing stage progression
Decision 04

Learning how to learn

Many students in SOC100 are just entering university and learning how to learn. We teach study habits alongside sociology: get them to leverage spaced repetition to build long-term memory. Mastering a concept requires getting a question right in both most recent attempts. Students are encouraged to review questions from past lectures.

Question result screen and Review Screen
Decision 05

Fostering a growth mindset

Sociology research shows that negatively-toned feedback can make students feel that they don't belong in academia, especially for first-generation students. Every wrong answer in SocBuddy is handled with warmth and encourages growth instead of limits.

Incorrect answer screen showing  feedback
🤖

Working with AI

Co-built with Claude Code.

📜
Interdisciplinary intern
I built a living spec (CLAUDE.md) covering course architecture, design system rules, and mastery mechanics. Claude made decisions consistent with my design intent and across functional considerations.
🔍
Automation & auditing
Claude can code faster than I can, but quantity ≠ quality. I built a feedback loop to help it self-audit: I run tests to validate, and when something breaks, I make Claude explain why before fixing it. I'm learning while balancing efficiency.
💬
Prompt engineering
How I ask matters just as much as what I'm asking: when I'm critical, I get overcorrection and sycophancy, and when I'm curious, I get clear explanations. "Why didn't you try X instead of Y?" can lead to Claude trying to undo its work immediately — but if I add "just curious" at the end, it will share its reasoning.