Felix Deng.
All work
AI / social impact

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.

Companion Connect chat: the user says they have been feeling isolated after moving, and the companion replies with suggestions for meeting people
The AI chat. The mood chip updates as the conversation goes on. Recorded at 2× speed.

Tech

Ionic ReactTypeScriptCapacitor (iOS)Supabase (Auth, Postgres, Edge Functions)OpenAI API

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.