Inspiration

Every habit app we had ever tried died the same death. You open it, tap a checkbox, close it. Nobody knows if you actually did the thing. Nobody cares. The streak is just a number you are lying to in private. We kept coming back to one observation: the habits that actually stuck in our lives were the ones that had witnesses. A gym buddy who would text if you didn’t show up. A friend who would notice you not studying. Accountability that existed outside your own head. BeReal cracked something real when it proved that a spontaneous photo prompt creates a moment you cannot fake. We asked ourselves what would happen if you applied that same mechanic not to your social life but to the specific things you are trying to build in yourself. Presence was where we landed.

What it does

Most habit apps let you fail in private. You miss a day, reset a streak, and nobody knows. The cycle repeats until you quietly delete the app. Presence works completely differently.

You start by creating a habit, give it a name, set a reminder time, and choose how often you want it to run. When that time arrives, Presence sends a notification to your phone. You have 30 minutes to respond with a photo proving you are actually doing the activity. That photo is passed through an AI vision model that checks whether what you captured matches the habit you committed to. If it clears, your snap is posted to your social feed.

Every member of your circle can see your photo and watch your streak grow. That streak is not stored privately in an app only you open, and is a live number that everyone in your circle sees every time they check in. Showing up is public. So is not showing up. Miss your window and your circle gets notified immediately. A push notification goes out with your name, your habit, and how many days you just lost. Your streak resets to zero with no grace period. There is no way to fail quietly.

By combining AI photo verification with a live social feed and public streak tracking, Presence takes accountability out of your own head and puts it somewhere it actually has weight. Because when the people around you are watching, showing up stops being optional.

How we built it

Presence was built using React Native with the Expo SDK, supporting development across both macOS and Windows environments. Xcode was evaluated as a build environment but was incompatible with Windows, leading to the adoption of Expo Go as the primary development platform.

The backend was built in Python using FastAPI. An early evaluation of YOLO-based computer vision for habit verification informed the decision to use Python, and while YOLO was not adopted in the final build, the AI verification feature was retained using an API-based approach. Supabase was used for data persistence, authentication, and file storage, consolidating several infrastructure concerns into a single platform.

The frontend was distributed via EAS Build and the backend deployed to Fly.io, enabling access to a fully functional build without requiring local environment configuration.

Challenges we ran into

The first significant challenge was accommodating a mixed development environment across the team. Our initial decision to build through Xcode created immediate compatibility issues for our Windows developer, introducing environment inconsistencies that slowed progress early in the build. We resolved this by migrating to Expo Go, which provided a unified development environment across all machines.

The second challenge emerged late in the build when we recognised that asking judges to run the app locally was not viable. A local setup would require access to private environment variables and API keys that judges would not have, making a live demonstration impossible. We addressed this by deploying the frontend through EAS Build and the backend to Fly.io, ensuring judges could access a fully functional version of the app without any configuration on their end.

Accomplishments that we're proud of

Presence is the first iOS app any of us have built. Shipping a functional product in 48 hours on a platform none of us had worked on before is something the whole team is proud of, which is a milestone in itself.

The accomplishment we are most proud of technically is the end-to-end verification and live feed pipeline. When a user submits a photo, it is passed through an AI vision model for verification, and on confirmation, the snap is posted to the circle feed in real time. Building a workflow that connected photo capture, external AI verification, and a live social feed into a single seamless experience, under time pressure and on an unfamiliar platform, represented the most complex technical challenge of the build and the one we are most proud of solving.

What we learned

Building Presence taught us that there is a meaningful difference between building a functional app and building an app that someone would actually use. A functional app completes the task. An app people use makes every step of that task feel obvious, immediate, and worth completing. We learned to think in flows rather than features. A feature exists in isolation. A flow is the sequence of moments a user moves through, and the quality of that sequence is what determines whether the product feels good or frustrating. The question we kept returning to was not whether something worked but whether a user who had never seen the app before would know what to do next without thinking about it.

The broader realisation was that building for users requires constantly stepping outside what you already know about your own product. As builders we understand the system. The user does not. Assuming nothing, removing unnecessary decisions, and making the right action the easiest one, and that is the skill we will take most directly into whatever we build next.

What's next for Presence

Presence is an idea we've been passionate about for a long time. This hackathon gave us the forcing function to actually build it, and what came out of 48 hours has validated that the core mechanic works. The next step is building it properly as a fully native iOS app with a production backend, built to a standard we would be confident putting in front of the general public. The demo proved the loop but the real build is about making that loop fast, reliable, and polished enough that someone who downloads it from the App Store has no idea it started as a hackathon project.

On the verification side, the current implementation makes a single AI vision call against a keyword descriptor. A more robust version would build per-category verification models, handle edge cases more gracefully, and introduce location metadata as an optional layer of proof for habits tied to specific places like a gym or a running route.

Built With

Share this project:

Updates