Companion Connect
AI companion app for teen loneliness — live on the App Store; reached 2,000+ users across 4 countries. 2nd place, IgniteCS Programming Expo.

Tech
Highlights
- Customizable AI persona
- Per-message sentiment tracking
- Weekly social challenges
- MBTI / self-reflection features
- Server-side proxy keeps the OpenAI key off-device
Overview
Companion Connect is a teen well-being nonprofit and app addressing loneliness. The app gives people a low-pressure place to practice conversation, reflect on their emotions, and take on weekly social challenges that push them toward real-world connection, with affirmations woven into the chat; peer circles run as a nonprofit program rather than an app feature.
I founded it in 2023, built and shipped the app, and recruited and led a volunteer 501(c)(3) team that grew to 20 people, through August 2025. The app is live on the iOS App Store.
What I built
An Ionic React app in TypeScript, packaged for iOS with Capacitor: an AI chat core, a customizable AI persona, sentiment tracking, guided journaling with session summaries, in-app notifications for weekly social challenges, and an MBTI-style self-reflection quiz.
The substance is in the context layer. Each turn builds a system prompt from the selected persona plus the user's name, pronouns, interests, goals, MBTI result, running relationship level, and current mood, and sends it alongside a rolling ten-message conversation window. A second, separate model call classifies each incoming message into a one-word mood, which is appended to a capped mood history and broadcast to the rest of the app — that is what moves the mood chip in the demo above.
Chat requests go through a Supabase Edge Function (Deno) holding the OpenAI key as a server-side secret, so the client ships only the public Supabase anon key. The function enforces a model allow-list and a max-token cap, so a leaked client key cannot be used to run up expensive models.
State is local-first. Profile, chat history, mood history and challenge progress are written to on-device storage through Capacitor Preferences under per-user keys, then pushed to Supabase Postgres by a debounced background sync across five tables — profiles, user settings, mood history, badges and challenge progress — behind Supabase email auth and row-level security. The app keeps working offline and reconciles when it reconnects.
Honest scope: the public repo is the security-hardened rewrite, which carries the Edge Function proxy; the auth and sync layer above shipped in the App Store build and has not been merged back into it yet. Automated testing is scaffolding rather than a real suite — a Vitest setup file and the starter Cypress spec.
Product usage
Over the life of the project the app reached 2,000+ users across 4 countries, peaked at 500+ daily users, and generated 60,000+ AI conversation sessions and 10,000+ affirmations delivered.
These are cumulative and peak figures from the period when the app was actively growing, through August 2025 — not a current snapshot, and not research outcomes. Alongside the app I grew the volunteer team to 20 people and expanded partnerships with schools and youth organizations.
Recognition & research
Won 2nd place in the IgniteCS Programming Expo, where I led the development and demo.
Companion Connect is also the subject of a related peer-reviewed study I co-authored during a research internship at Cal Poly Pomona's Software Engineering and Mobile Cloud Computing Lab — "Companion Connect: An AI-Enhanced Digital Platform for Reducing Student Loneliness and Promoting Mental Well-Being in Higher Education" — presented at AI 2025, the 11th International Conference on Artificial Intelligence and Applications.
To be precise about its scope: that was a 15-participant user study in a higher-education setting, and its findings describe those participants. It is not an outcome measurement across the app's 2,000+ users — the usage figures above are product adoption, not research results.
I also spoke about the ideas behind it in a TEDx talk, "Transforming Loneliness to Growth," at TEDxIdylwood Park Youth.