BeSeen. A Second Chance for the Connection You Almost Missed

Inspiration:

We have all experienced the same moment.

On a bus, in a café, at a station, or simply walking down the street, you notice someone. Your eyes meet, and for a few seconds it feels as though both of you might be thinking the same thing. But neither person does anything.

You continue in opposite directions, probably never meet again, and eventually forget each other. Maybe it meant nothing.

But what if it did?

That question inspired BeSeen: a privacy-first social discovery app that gives people a second chance to connect after crossing paths in real life.

The problem is not always a lack of interest. Approaching a stranger requires confidence, timing, and a willingness to face rejection. BeSeen removes that pressure without turning people into profiles to swipe through.

What it does

BeSeen helps two people reconnect only when the interest is mutual.

A user takes a temporary photo of their outfit without showing their face and activates Street Mode for thirty minutes. While it is active, BeSeen can privately detect encounters with other active users nearby.

Afterwards, users can review their recent crossings and privately request a connection. If only one person sends a request, nothing happens and the other person never finds out. There is no visible rejection.

If both people request each other, BeSeen reveals their usernames: You crossed paths. You connected.

The app also includes:

  • Temporary outfit photos designed for recognition rather than appearance-based browsing
  • A city chat for local, anonymous and time-limited posts
  • Mutual interaction requests
  • Reporting, blocking and account-deletion controls
  • Email confirmation and password recovery
  • Adult-only onboarding
  • BeSeen Plus, powered by RevenueCat, offering unlimited outfit changes and access to the city chat Street Mode, crossings and the core safety features remain free.

Privacy by design

BeSeen deals with location, so privacy could not be an afterthought.

The app does not display users on a public map and does not expose precise locations to other people. Location data is used only while Street Mode is active, and sensitive data is designed to expire automatically.

Outfits and crossings are temporary. A user’s identity is revealed only after mutual consent. BeSeen does not ask for identity documents, and it does not need to know where someone is throughout the entire day.

It only needs to recognise that two paths crossed.

This minimal-data approach shaped both the product and its technical architecture.

How I built it

BeSeen is an Android application built with:

  • React Native and Expo for the mobile experience
  • TypeScript for the application logic
  • Supabase Auth for accounts, email confirmation and password recovery
  • PostgreSQL for application data
  • PostGIS for privacy-conscious geographic proximity calculations
  • Supabase Storage for temporary outfit photos
  • Row Level Security policies for database and storage protection
  • Supabase Edge Functions for secure server-side operations and webhooks
  • RevenueCat for BeSeen Plus purchases and entitlement management
  • Expo Location for Street Mode
  • Expo Notifications for matches and relevant interactions
  • EAS Build for producing the Android application

The app uses server-side database functions for sensitive operations such as activating Street Mode, creating outfits and requesting interactions. This prevents the mobile client from deciding its own permissions or bypassing important limits.

RevenueCat entitlements are synchronised through a secure webhook so premium access is determined by the backend rather than trusted directly from the device.

Challenges

The greatest challenge was balancing usefulness with privacy.

A feature based on real-world crossings can easily become invasive if locations are stored for too long or exposed too directly. I had to design BeSeen so it could recognise an encounter without becoming a permanent location tracker.

Another major challenge was creating a mutual-consent system where rejection remains invisible. The interaction had to feel simple to the user while being securely enforced by the database. Other challenges included:

  • Creating reliable email-confirmation and password-recovery links that return users to the Android app
  • Protecting every public database table with appropriate Row Level Security
  • Handling temporary outfit images securely
  • Adapting the interface to different Android screen sizes and safe areas
  • Integrating RevenueCat entitlements with Supabase
  • Designing a product that feels complete without encouraging endless screen time
  • The most difficult part was not adding features. It was deciding what BeSeen should deliberately
    avoid.

(Making the video in last days could be considered as the biggest challenge)

What I learned

Building BeSeen taught me that privacy is not just a policy page. It is a product decision that affects database structure, interface design, permissions, data retention and even the business model. I also learned that a strong mobile experience depends on much more than attractive screens. Authentication redirects, safe-area handling, image limits, subscription state, database policies and failure states all have to work together.

Most importantly, I learned the value of continuous iteration. BeSeen began as a simple idea about missed connections. Testing it on a real Android device exposed problems that were invisible in a desktop preview and helped turn the idea into a much more coherent product.

What makes BeSeen different?

BeSeen is not designed to keep people scrolling.

There is no infinite catalogue of profiles and no public rejection. The application has one clear purpose: solve a real human problem and then disappear until it is needed again.

A connection might happen tomorrow. It might happen once a month. It might not happen for weeks. But if two people notice each other and neither knows what to say, BeSeen gives that moment somewhere to go.

What’s next

The next steps are to test BeSeen with more users and devices, improve accessibility, refine battery usage, EVENTS COLLABORATIONS (private links to BeSeen-zones with de events tickets) and evaluate privacy-preserving ways to make Street Mode more useful while the app is not in the foreground.

I would also like to develop stronger community moderation tools, improve local chat discovery and explore additional ways for RevenueCat to support a sustainable product without advertising or attention-maximising design.

BeSeen began with one question: Maybe it meant nothing. But what if it did?

Built With

Share this project:

Updates

Submission history