Tracks we are competing for
Best Environmental Hack
CleanPursuit is a community cleanup app where people report litter, rally others to clean it up, and earn XP on leaderboards.
[MLH] Best Use of Tiger Data:
Usage: Tiger Data gives us Postgres with TimescaleDB, PostGIS and H3 in one database:
- Hypertables log every report, check-in and XP award, plus GPS pings that confirm volunteers were really there.
- Continuous aggregates keep the daily, weekly and monthly leaderboards and the hotspot map fast as activity grows.
- PostGIS handles "near me" search and the check-in geofence.
- H3 groups reports into hexagons of about 75m to catch duplicates, find hotspots and award bonus XP.
[MLH] Best Use of Gemini API:
Usage:
- When a user snaps a photo in order to report litter, Gemini fills in the report: a title, description, trash categories, hazards and how much trash there is. The user just confirms.
- Gemini only picks from our fixed lists, and our own rules turn those tags into the difficulty tie.
- Each photo is analyzed once, so it stays cheap (about $0.60 per 1,000 photos with Flash-Lite)
Inspiration
We were inspired by a tiktok creator @bushwicktrashlady who is currently striving for a cleaner New York City by picking up the trash within her neighborhood. Here is one of her videos: https://www.tiktok.com/t/ZPL2Mtrr1/
What it does
How it works:
- Report a spot with a photo, location and description. Gemini suggests the trash categories and hazards, the reporter confirms them, and our rules set a difficulty tier.
- Create a quest from the report so others can see the problem.
- Join a party to clean it up, either a scheduled event or a walk-up on an open bounty. Members check in by GPS.
- End the party. The party leader submits an after photo and a bag count.
- Earn XP. Everyone who checked in gets XP based on their time on site, scaled by difficulty, with a bonus for hotspots. XP feeds daily, weekly and monthly leaderboards.
- Reports flagged for sharps or biohazards show warnings and nearby drop-off locations instead of handling instructions.
How we built it
| Layer | Choice |
|---|---|
| App | React Native with Expo and Expo Router |
| API | Node.js 24 with Fastify 5, TypeScript, Zod and pg, with its own auth (argon2id, JWT access tokens, rotating refresh tokens) |
| Database | Tiger Data: Postgres 18 with TimescaleDB, PostGIS, H3 and citext |
| File storage | Cloudflare R2 |
| AI | Gemini (gemini-3.5-flash-lite), called once per report photo |
| Secrets | Infisical |
Challenges we ran into
The main issue that our team ran into was time management and planning. The scope of our project was very large, and we ended up having less time to execute our application than we thought we had.
Accomplishments that we're proud of
- Successfully created our first mobile application.
What we learned
- Learned more about testing and were able to create functional tests for this project.
- Used React-Native, Tiger Data, and Leaflet for the first time.
What's next for Clean Pursuit
- Incorporating guilds so organizations can join/use the app together and compete with each other to create a cleaner NYC.
- Creating more original and interesting UI assets for the application.
Built With
- cloudflare
- expo.io
- fastify
- gemini
- infisical
- leaflet.js
- node.js
- postgresql
- react-native
- tigerdata
- typescript
Log in or sign up for Devpost to join the conversation.