← All workLive8–25 August 2026

Independent campus game · Built in Lovable

SleepQuest

A public scoreboard for the ‘caught sleeping’ photos my cohort was already posting in WhatsApp.

Result so far

A public, login-free mobile app with populated Sleeper and Spotter boards, All-Time, Month and Week views, course and fraternity filters, player profiles, a feed and a dated archive. The build was verified on 25 August 2026. Repeat use and cohort-wide adoption have not been measured.

My contribution

I designed, built, audited and documented SleepQuest as a course assessment. I used Lovable to create a mobile-first public app, worked out the scoring and data rules, tested it with an imported WhatsApp archive, found defects in the live build and specified the repairs.

SleepQuest mobile leaderboard showing search, Sleeper and Spotter roles, filters and ranked sightings

The live build’s Sleeper leaderboard · original capture

Open full-size image ↗Open product ↗

01 / The problem

Where it started.

Students across four Masters’ Union courses were already sharing photos of classmates caught sleeping. The joke lived in fast-moving WhatsApp groups, where old sightings disappeared and the people taking the photos received little recognition. I wanted to make the score visible without asking everyone to join another social app.

The decision

Keep contribution in WhatsApp. Make SleepQuest the read-only scoring, discovery and recognition layer, with one protected organiser importing and moderating the archive.

Both sides of the joke count

Sleepers rank by distinct times caught. Spotters rank by being the first valid person to post a sighting. A student can switch between the two roles without losing their filters, then compare All-Time, Month and Week standings.

Each feed card names the sleeper, credits the spotter and says whether it scored. Profiles show both sides of a person’s game, with ranks, share actions and a dated archive. Equal scores share a rank rather than being forced into an invented order.

The feature list I deleted

The first version in my head was a broader social app with student sign-in, in-app posting, camera capture and a new feed. That would have asked the cohort to repeat something it already did in WhatsApp while adding another account and more private data.

I cut those features. Students contribute where they already talk; SleepQuest reads the authorised export and turns it into a score people can inspect. I also removed AI-assisted interpretation. Explicit tags and fixed rules are easier to explain when a point is disputed.

What the audit found

The first live audit found three material problems: the Spotter board was empty, sampled feed posts were attributed to ‘Unknown’, and WhatsApp contact destinations were exposed in bulk in the public page markup.

I specified sender-identity matching, canonical Spotter scoring, privacy-safe per-person redirects, roster search and reconciliation, then checked the hosted app again. On 25 August, both boards were populated, feed cards named both roles, filters and profiles worked, and contact actions used internal redirect paths. That is implementation evidence, not evidence of sustained student use.

02 / The approach

How I worked through it.

  1. 01

    Define a roster of 465 students across TBM C7, YLC C2, HROS C1 and SMG C1.

  2. 02

    Import one WhatsApp export with media through a protected organiser flow.

  3. 03

    Resolve senders and explicit tags to roster entries; leave ambiguous photos unscored.

  4. 04

    Collapse continuous 15-minute photo chains into one sighting, then award each valid point once.

  5. 05

    Publish Sleeper and Spotter rankings, filters, profiles, a dated archive and scoring states in a login-free mobile app.

  6. 06

    Audit the deployed product against real imported data, repair ranking, attribution and privacy defects, then verify the live flows again.

Workflow

How it works

  1. 01Import

    One authorised organiser uploads the WhatsApp export with media.

  2. 02Resolve

    Fixed rules match senders and explicit tags to the roster.

  3. 03Dedupe

    A 15-minute chain becomes one canonical sighting.

  4. 04Rank

    Sleepers and valid first Spotters receive traceable points.

  5. 05Inspect

    Students can check the feed, profiles and score state without logging in.

03 / The evidence

What the work produced.

Defined roster

465 studentsThe roster spans four courses; this is the addressable campus group, not a user count.

Two-sided game

Sleepers + SpottersThe person caught and the first valid person posting the sighting can both rank.

Deduplication

15-minute chainsRepeated photos in one continuous sequence count as one canonical sighting.

Live verification

25 Aug 2026Public access, both boards, filters, profiles, feed attribution and privacy paths were checked.

The seven-page submission documents the product, four captured mobile screens, the complete public and organiser flows, scoring rules, the build-and-audit sequence, privacy decisions and the checks performed on 25 August 2026. The live URL redirected to its leaderboard route when checked for this portfolio update.

04 / Looking back

What I took away.

The product became better when I stopped trying to replace WhatsApp. SleepQuest gives the existing joke a score and a memory. The audit mattered just as much as the build: it found empty rankings, broken attribution and exposed contact destinations that the prompts had not caught.

  • Designing around behaviour that already exists can remove an entire onboarding and posting system.
  • A public score needs visible rules, traceable events and honest tie handling.
  • A generated build still has to be checked against real data and inspected for privacy problems.

What I would measure next

Measure how many distinct students return, which filters and profiles they use, and whether the scoring rules produce disputes. Add a clear reporting route and document consent and retention rules for the photo archive before expanding beyond the current community.

Scope & confidentiality

SleepQuest is an unofficial Masters’ Union community project. The public app is read-only. Its parser uses explicit text tags; it does not use AI, OCR or facial recognition. Raw sender identifiers and contact details are kept out of public markup, and ambiguous photos receive no score.