Inspiration
Communication is often treated as the ability to construct and speak a complete sentence. But a person may know exactly what they need while having difficulty turning that intention into words. I built ReVoice to make those moments simpler, faster, and more independent.
The principle behind ReVoice is:
Human intent → AI assistance → human choice → voice
AI never decides what the person means. It offers possibilities, and the person always chooses the message before it is spoken.
What it does
ReVoice is an AI-assisted communication app for Android.
Essential communication remains free and immediately available through customizable Quick Speak cards, Yes/No buttons, common phrases, and device text-to-speech.
For more complex thoughts, the Intent Builder combines simple clues—such as a person, place, time, or word—and generates exactly three possible phrases. The user reviews the suggestions, selects the intended message, and ReVoice speaks it aloud.
Voice Intent lets the user provide an incomplete spoken thought. Live Camera Assist uses temporary visual context to suggest relevant phrases and includes front/rear camera support and live captions. A local Care Profile can provide helpful context about important people, places, routines, and preferences.
ReVoice+ unlocks advanced tools through a real RevenueCat purchase flow.
How we built it
ReVoice was built with React Native, Expo, Expo Router, and TypeScript.
The mobile app communicates with focused Vercel serverless endpoints. Only the backend communicates with OpenAI, keeping the OpenAI API key out of the application and public repository.
RevenueCat manages the default offering, Monthly, Yearly, and Lifetime packages, purchases, CustomerInfo, restore purchases, and the active pro entitlement. Premium access is determined exclusively by RevenueCat and is never simulated with a local flag.
Camera access, speech recognition, and text-to-speech use native Expo-compatible modules. User preferences, Quick Speak cards, history, favorites, and Care Profile information are stored locally on the device.
Challenges we ran into
The main challenge was balancing helpful AI assistance with human control. ReVoice must suggest possibilities without claiming certainty about a person's intent.
We also worked through native camera and microphone permissions, continuous speech recognition, temporary multi-frame camera capture, contextual phrase generation, Android Development Builds, and immediate RevenueCat entitlement updates after a Test Store purchase.
Another challenge was keeping essential communication available even when AI or network services are unavailable.
Accomplishments that we're proud of
- Essential communication remains free and does not depend on AI.
- The Intent Builder consistently returns exactly three possible phrases.
- The user always confirms a phrase before it is spoken.
- Live Camera Assist supports front and rear cameras with live captions.
- Quick Speak cards can be added, edited, removed, and reordered.
- RevenueCat purchases activate the real
proentitlement and unlock Camera Assist immediately. - Premium access is restored correctly after restarting the app.
- No OpenAI secret is exposed in the mobile application or repository.
What we learned
Building ReVoice reinforced that assistive AI should increase agency rather than replace it. Good suggestions are important, but preserving uncertainty and user choice is even more important.
We also learned how RevenueCat offerings, packages, CustomerInfo, entitlements, purchase restoration, and Test Store transactions work together in a real React Native application.
What's next for ReVoice
Future work could include additional languages, caregiver-managed profile sharing with explicit consent, improved accessibility testing with real users, and a multimodal Live Assist mode that combines visual and spoken context.
The goal remains the same: technology should not speak for people. It should help people be heard.
Built With
- android
- asyncstorage
- expo.io
- native
- openai
- react
- revenuecat
- router
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.