Background
Have you ever felt lonely or struggled to expand your social circle?
If you do, you are not alone!
The struggles of being single:
Loneliness and difficulty expanding social circles
- 2022 Pew Research Center survey: most singles view dating to be more difficult than before the COVID-19 pandemic
- 70% of Gen Z reported feeling stressed about their love lives, compared to 57% of millennials, 49% of Gen X and 27% of baby boomers
- Nearly 1 in 4 adults globally have reported feeling very or fairly lonely
- Highest rates of loneliness in young adults: 27% of young adults ages 19 to 29
Context
With all of this loneliness brewing, people turn towards online dating apps.
Dating Apps Market

Opportunity Space

People surveyed agree on authenticity deficit in current online dating scene.
Dissatisfaction With Current Online Dating

Identified Problem
Dissatisfied with the lack of deep human connection in online interactions, people seek to move beyond appearances to foster authentic relationships.
Introducing

see the one who sees you
Mirror aims to redefine online dating by promoting authentic connections, enhancing user experience, and contributing to the establishment of healthy long-term relationships.
Product Video
Current User Journey

Enhanced User Journey With Mirror

How Does Mirror Address User Pain Points?

Explore Mirror’s Subsystems
Frontend
Colours of Mirror
Mirror features a visually distinct and harmonious colour scheme of deep plum, cream, and light aqua green. This palette is a nuanced adaptation of the classic triadic scheme of purple, orange, and green—where cream serves as a desaturated orange. The result is a clean, elegant user interface where the bolder hues of plum and aqua highlight important elements without overwhelming the experience. The design ensures both aesthetic appeal and functional clarity, guiding user attention intuitively across the app.




samples of development for color schemes
Application Developed
Mirror was developed as a mobile-first application with a completed iOS version and an in-progress Android build. The app was built using React Native for cross-platform compatibility, enabling a smooth and consistent experience across devices. All visual assets, wireframes, and interface designs were created in Figma, allowing for rapid iteration and high design fidelity throughout development.
Data Flow from Sign-up to Saa (AI Chatbot)
Upon launching the app, users begin with an OTP-based authentication process. Once verified, they are guided through a personalized onboarding journey that captures essential personal details such as age, gender, and sexuality. These foundational inputs are saved into the user’s profile and passed forward to Saa, our AI chatbot, which continues the profile-building process in a more interactive and conversational format.
Saa
(AI Chatbot)
Defining & Analysing Profiles
Saa is designed to uncover a user’s personality by exploring not only factual information but also emotional and behavioral patterns. It gathers insights across ten curated categories, collecting responses on experiences, preferences, quirks, and values. These categories were chosen for their relevance to forming meaningful relationships and for their ability to structure unstructured data naturally. Users cannot directly edit their generated personality summaries, as this helps preserve authenticity. However, they can provide feedback on the content, maintaining user agency while avoiding performative answers.
Chatbot Developed

Saa pipeline
Instead of relying on static quizzes or form-filling, Saa engages users in a natural, flowing conversation. This design choice allows for deeper self-expression and mirrors how people naturally talk about themselves in real life. The chatbot is built around two modules: a Question Generation module and a Sentiment Analysis module.
The Question Generation module simulates a matchmaking conversation, steering users through various categories with context-aware prompts. A judge LLM ensures conversations remain on-topic, and if necessary, subtly reroutes the user back to relevant subjects. A PII checker monitors and redacts any sensitive or personally identifiable data before it’s processed further.
Once enough input is gathered, the Sentiment Analysis module takes over. It identifies key themes in the user’s responses and extracts their emotional valence, forming a rich personality profile that captures not just what users say—but how they feel about it.
Data Flow from Saa to Cupid
At the end of the conversation, Saa synthesizes the user’s responses into a personality summary. This summary is not editable, though users can view a curated version through the settings page. The finalized profile is then sent to Cupid, the matching engine, which uses it to identify the most compatible matches from the current user pool.
Cupid
(Matching Engine)
Matching Engine Developed

Mirror 2.0 Saa to Matching Pipeline
Cupid transforms personality summaries into match-ready data by first converting them into vector representations using a large-text embedding model. These vectors capture the unique personality fingerprint of each user. Every five minutes, a serverless AWS Lambda function is triggered to scan the database for available users. It computes similarity scores between profiles to identify and generate the most compatible matches. Once identified, the matches are logged in the backend and notifications are dispatched via in-app alerts or SMS.
Data Flow from Cupid to Frontend
Matched users receive immediate notifications prompting them to view their suggested partner’s profile. They can choose to initiate contact via Telegram or decline the match. Each cycle offers up to two alternative matches. During this time, users remain engaged with the app through continued interactions with Saa. If both parties express mutual interest, the system facilitates connection by revealing each other’s Telegram handles.
Backend
Maintaining Data Privacy & System Security
Privacy and security are foundational to Mirror’s backend. All personally identifiable information is stored separately from conversational data and is accessed only via encrypted user IDs. Conversations sent for processing to OpenAI servers are first anonymized, with all sensitive information redacted.
Environment variables and access credentials are securely stored using AWS Secrets Manager, ensuring they are never exposed in source control or public repositories. Our databases operate within a private AWS subnet, inaccessible from the public internet. Access is restricted to authorized users, providing multiple layers of protection against potential breaches. Every decision in our backend design was made with data privacy and security in mind.
Mirror’s Overall System Architecture

Mirror 2.0 System Architecture
Modular & Decoupled Design
The architecture of Mirror is designed around a modular, service-oriented approach. Each subsystem—whether it’s the frontend, Saa (AI chatbot), Cupid (matching engine), or the backend—is fully decoupled and functions independently. These services communicate through RESTful APIs over HTTP, ensuring that each component can scale or evolve without tightly coupling to others. The backend acts as the central coordinator, routing user requests to the appropriate service based on task type.
By keeping our services isolated and stateless, we’ve built a system that’s more maintainable, testable, and resilient to failure. This modularity not only improves development velocity but also allows for flexible deployment strategies as the app scales.
Matchmaking Optimization
Early testing revealed that Cupid’s matchmaking process—powered by LLM-based profiling and vector embedding—was computationally intensive and not well-suited to conventional synchronous APIs. Executing these tasks in a live API environment led to high latency and potential timeout errors.
To address this, we restructured the matchmaking algorithm as a serverless AWS Lambda function. This function is triggered every five minutes, asynchronously executing matchmaking tasks in the background. By leveraging Lambda, we optimized system efficiency, avoided blocking the user experience, and aligned our infrastructure with the natural rhythm of profile availability.
This event-driven design significantly reduces time complexity, ensures high availability, and allows Cupid to operate independently of the rest of the system.
Real-Time Communication
To maintain a dynamic and engaging user experience, Mirror integrates real-time communication between the backend and frontend. This is most critical during matchmaking events—when a user receives a new match, is accepted or rejected, or needs to be notified instantly.
We implemented WebSocket connections to enable low-latency, bidirectional communication between client and server. This ensures that users receive match updates, system prompts, or notifications instantly, without needing to refresh or poll the server.
Together, this combination of modular design, optimized background processing, and real-time interactivity enables Mirror to deliver a seamless, scalable, and responsive experience to all its users.
Our First Mini-Launch
Using the Mirror 1.0 app prototype, we began with 18 alpha testers on February 13th. On the 14th, we opened the app to all SUTD students—and it took off. Our AI chatbot, Saa, handled onboarding and profile creation. We closed account creation on the 18th. Although our matching algorithm wasn’t yet integrated, we manually processed compatibility results and emailed matches to users. Once they responded, we facilitated mutual matches by exchanging contact details via email—painstaking, but necessary.
Mini-Launch Timeline

Mini-Launch Results

Despite relying mostly on word-of-mouth and email marketing, we onboarded 165 users in 5 days.
We observed a 1:2.1 gender ratio (F:M)—a notable departure from typical dating app ratios. This might suggest that Mirror’s philosophy to some degree resonates with female users, possibly those alienated by mainstream platforms.

Saa (AI Chatbot)’s Performance

On average, users spent 15 minutes chatting with Saa, with 84% interaction rates.
About 60% of users said they felt comfortable spending that long with the app.

Cupid (Matching Engine)’s Performance

This high engagement enabled us to build robust, personality-rich profiles—which may have contributed to our 72% match rate. Notably, 1 in 4.3 users received a mutual match, where both parties liked their suggested partner.

With reference to the bar chart below, out of 165 total users, a remarkable 118 were matched.

Why have “a different kind of connection”?
In some cases, we couldn’t find an ideal match within their stated preferences, so the algorithm connected users either with those who had unspecified gender or gender preference (consisting of 26 users) or with others who shared the same preference (consisting of 32 users). However, both users in a pair did share a high degree of compatibility across most of the dimensions. Hence, we thought users might be interested in exploring a kinship with that person.
Hear From Our Users About Mirror 1.0

Reflections on Our First Mini-Launch
We are deeply thankful to all our early users who participated in our first mini-launch and provided thoughtful feedback. Their responses gave us the confidence to continue building Mirror around our central idea: using Saa, our AI chatbot, as the heart of personality-driven profile creation.
More importantly, the feedback also served as a clear roadmap for improvement. Users expressed a strong desire for Saa to remain accessible beyond onboarding, allowing for continued self-exploration. There were also recurring suggestions to improve UI elements, such as better-designed waiting screens, smoother in-app transitions during the matching process, and general responsiveness enhancements.
These insights shaped the development of Mirror 2.0. We revisited our mobile application with a focus on cohesion, speed, and user comfort—ensuring that every screen, interaction, and system touchpoint reflects the feedback we received. The result is the product you see today: a more refined, responsive, and thoughtful version of Mirror.
Click Here for Our Poster
Meet the Team!
