All Projects

Shuttle Bus Booking Project

This was built for a Hackathon for the Singapore Air Force to solve the cutthroat competition for seats in the shuttle bus (more like a minivan) that can ferry up to 10 people per trip.

All screens

Every morning, staff members gather and wait for the minivan at a pickup point to be ferried to our workplace uphill. The minivan would make round trips from the pickup point to the workplace and back for the next uphill trip, ferrying at most 10 people at a time. The issue was that everyone loved to wait at the pickup point at around the same time each morning and as each round trip took a considerably long time, some people would be late for work.

This resulted in some competition for seats in the minivan every morning, as people scramble to clinch earlier trips. The ideal situation would be to have some people arrive at the pickup point slightly earlier so that everyone has a higher chance to get to work on time, rather than playing a game of chance in queuing / fighting. But from a game-theoretic standpoint, coming earlier results in lower utility (wake up earlier) for the agent and the current situation is probably a nash equilibrium where no agent can get a better payoff by changing their strategy.

To address the selfish (or rational — debatable) nature of human beings, we came up with AFB! Now, to board the minivan, staff must book a ticket. No more fighting for trips anymore.

Trip bookings for the next day open the evening before and staff can see the availability of each trip at each time slot, or of additional trips if they don’t make it on time for the first few trips (right picture). The driver can also see the list of trips to make for the day, along with the number of passengers expected and who they are (left picture).

Trip booking

When booking succeeds, staff get taken to another screen where they can see their personal QR code ticket with details (left picture). They may choose to cancel it and free up a slot for someone else, or redeem it by displaying it to the driver when boarding.

The driver will scan the QR code with their device (mounted to the vehicle) which then shows the ticket information e.g. whether the passenger’s ticket is valid, whether they’re on the right trip, etc. The driver can accept or reject the ticket (right picture).


With this in place, fighting for seats is a thing in the past — now people fight for tickets, on their phones, on the night before.