Inspiration

Jouling was inspired by a behavioral issue: the lack of incentive that keeps people from saving the energy they know they should. Most people understand that reducing energy waste is important, but awareness alone rarely translates into consistent action. By using digital rewards such as territories, leaderboards, and Planet Relief metrics, alongside physical rewards such as canteen discounts and hotel loyalty benefits, we hope to bridge the gap between knowledge and action and gamify the experience of reducing energy waste.

What it does

Jouling detects unnecessary devices running in the background and turns these instances of energy waste into missions for users, or Joulers, to complete. Users find nearby missions on an interactive map, travel to the location, scan a QR code, and complete an approved energy-saving action. The resulting energy reduction is verified before the mission counts toward the team's progress. Successful missions allow teams to capture and defend territory, climb leaderboards, track their environmental impact, and contribute towards real-world rewards.

How we built it

We built Jouling as a mobile-first web application using JavaScript and Node.js, with MapLibre GL JS and OpenStreetMap powering its navigable mission map, territory overlays, and team sweep zones. Physical QR labels connect approved devices to missions, while the in-app scanner uses the browser’s BarcodeDetector API with jsQR as a fallback. After completing a task, users submit a mandatory proof photo that is securely sent to the OpenAI Responses API for structured visual verification. Our Node.js backend manages missions, cooldowns, teams, rewards, impact metrics, and territory capture through an in-memory MVP state, while Vercel hosts the frontend and serverless API. We also created a shared QR protocol and CLI generator so printed labels and the scanner always use the same format, alongside automated tests covering the complete mission lifecycle.

Challenges we ran into

One of our biggest challenges was designing a game that rewards genuine energy savings without accidentally encouraging users to waste energy just to earn points. We addressed this by only rewarding pre-existing energy-waste events and requiring verification before a mission is completed. We also had to balance competition with fairness, particularly when teams and locations can differ significantly in size and energy consumption

Accomplishments that we're proud of

We are proud of Jouling's flexibility across different environments. Rewards can be configured to suit each institution, from canteen discounts on university campuses to loyalty benefits in hotels. We created a gamified interface with strong visual affordances, an interactive map that users can pan to discover nearby missions, and team-based mechanics that encourage people to participate together rather than individually. We also integrated an OpenAI LLM and connected real energy savings back into a circular reward system, where reducing waste creates value that can be returned to the people responsible for saving it.

What we learned

The biggest thing we learned is that information is not necessarily the problem — behavior is. People already know they should save energy, but knowing something is important does not make the behavior engaging or rewarding. Jouling therefore focuses less on giving users more sustainability statistics and more on giving them an immediate reason to act. Competition, teamwork, visible progress, territory ownership, and rewards can transform a small energy-saving action into something people actually want to repeat.

What's next for Jouling

Our next step is to expand Jouling beyond the initial use case and deploy it across more locations, including universities, offices, hotels, malls, and residential environments. We also want to develop vertical maps for high-rise buildings, allowing teams to capture and contest floors and zones rather than only areas on a traditional 2D map.

Team Members

Muhammed Rayan Savad Matthew Adriano Rahul Suresh Anirudh Daga

Built With

Share this project:

Updates

Submission history