Skip to content

© 2026 Rami Kronbi · Beirut, Lebanon

App · co-founder

Bsheel — a gamified quest app for Lebanon

A game you play in the real world: pick a quest, do it, prove it with a photo, earn XP once it is checked.

My partCo-founder, with Razan Hasbini and Tayseer Laz; I built the proof checks

In short

Bsheel is a game you play in the real world. It hands you three random quests, you pick one, do it before its timer runs out, and post a photo or video as proof; XP lands once the proof is approved. I co-founded it with Razan Hasbini and Tayseer Laz. It is live on Google Play, the App Store, and bsheel.app, with more than 200 users, and my largest piece of the code is the automated proof check that sits in front of the moderators.

What it is
A mobile app that turns everyday life into short real-world quests: pick one of three, do it inside a timer, prove it with a photo or video, and earn XP once the proof is approved.
Why it matters
A game about doing things in the real world is easy to cheat and slow to moderate. Every quest needs someone to look at the proof, and a wrong rejection punishes an honest player, so the review step decides whether the game means anything.
My part
I co-founded Bsheel with Razan Hasbini and Tayseer Laz and work on it as systems engineer and product manager. In the code, I built the automated proof-verification pipeline and its evaluation tooling, business accounts and the partner dashboard, the analytics event store, and admin tools for quest chains and paged lists.

Step by step

  1. 1

    Pick

    Three random quests across fitness, creativity, social, learning, and adventure. The player picks one, and a timer set per quest starts.

    Bsheel home screen with an active quest, a countdown timer and its XP reward.
    An active quest, with the time left and the XP it is worth.
  2. 2

    Prove

    Photo or video proof goes to private object storage, and the submission enters review as pending.

    Submitting proof for a drawing quest: one image attached, a caption, and a toggle to show it in the feed.
    Submitting proof: the image, a caption, and whether it goes to the feed.
  3. 3

    Check

    Forensics run first: capture time, exact and near-duplicate matching, screen dimensions. A cheap vision model looks next, a stronger one only where it could not tell, and only the most capable model may conclude a photo is fake.

  4. 4

    Review

    A moderator approves or rejects, with the agent’s read beside the proof. XP is awarded once. A rejected player gets one appeal, and a second rejection is final.

  5. 5

    Share

    Approved quests enter the feed with votes, comments, follows, collab groups, a world map, and leaderboards; notifications fan out from a durable queue, not from the phone.

    An approved quest post in the Bsheel feed, with the proof image, XP earned and the caption.
    Once approved, the proof lands in the feed with the XP it earned.
For engineersHow it is built, its limits, and its keywords.

How it works

Flutter clients for the app and the admin console talk to one self-hosted NestJS API over HTTPS and a WebSocket. PostgreSQL is the source of truth, Redis and BullMQ carry queues and locks, proof media sits in S3-compatible storage, and a worker built from the same codebase handles fan-out. Before a moderator sees a submission, a staged check runs cheap forensics first, then vision models, against what each quest’s proof can actually show.

Limits

  • The analysis panels are verified on simulated signals with known noise, vibration and distortion (the Noise Lab recovers the simulated white noise to within 1 %); long captures from the real unit are still to come.
  • Roughly a third of the quest catalogue cannot be proven by a photo at all: a picture of a book does not show you read twenty pages, and “spend an hour with no phone” is photographed by the phone. For those quests the check only judges whether the photo is authentic, and a person still decides.
  • The automated check is live in production. It was built to run in shadow mode first, recording what it would have decided while a moderator made the call, and to act on its own only where its verdicts agree with real moderator decisions.
  • Some partner analytics, like a quest card being shown, are reported by the phone and cannot be confirmed by the server, so the dashboard keeps them apart from completions the backend recorded itself.
  • My part of the public repository is about thirty merged pull requests, most of them from September 2026. Much of the app is Tayseer’s and Razan’s work.

Keywords

  • Bsheel
  • quest app
  • gamification
  • content moderation
  • proof verification
  • Flutter
  • NestJS
  • PostgreSQL
  • Redis
  • BullMQ
  • Lebanon

Read the write-up →