We often think of identity as a single, fixed thing — but in reality, it’s fluid. The version of you in a boardroom is fundamentally different from the version of you joking with friends on a Friday night.
Sociologists refer to this as code-switching: the constant mental adjustment we make to fit different social contexts. In a digital world where we jump between Slack, Discord, iMessage, and email, that mental overhead adds up quickly, and it becomes easy to make mistakes.
We’ve all had that moment of panic: almost sending a slang-filled message to a boss, or sounding robotic to someone close to us.
Inspiration
We were inspired by existing voice-to-text tools like, but noticed something missing - speed without social awareness isn’t enough. We wanted to build something that didn’t just transcribe speech, but understood who you were talking to and how you naturally speak to them.
That became Flow.
Flow is a context-aware voice-to-text application that adapts your writing based on who you’re talking to.
Instead of forcing users to slow down and overthink phrasing, Flow lets you speak freely while it handles tone, style, and intent behind the scenes. It detects the active conversation, understands the relationship between you and the recipient, and generates text that sounds like you - but appropriate for them.
Whether you’re messaging a manager, a close friend, family member, or someone you barely know, Flow ensures your message matches the moment.
How we built it
Flow’s core is built with Rust and Swift for high performance, memory safety, and a native macOS experience.
The website and interface were built using TypeScript for a fast and responsive user experience.
On macOS, Flow integrates directly with the system to understand the active messaging context and retrieve relevant contact metadata. That information is passed into our classification pipeline, which determines the relationship category and guides how text is generated.
The system is designed to be fast, lightweight, and extensible - allowing Flow to work seamlessly across different platforms and communication tools.
Challenges
One of the biggest challenges was reliably identifying who the user is actively communicating with on macOS.
Messaging applications don’t expose this information directly, so we had to explore system-level solutions to determine the frontmost conversation in real time. Once we solved this, we were able to connect that context with contact metadata and feed it into our relationship classification system.
Another challenge was balancing automation with trust - ensuring Flow feels helpful without being intrusive or unpredictable. This shaped many of our design decisions around defaults, fallbacks, and tone safety.
Accomplishments
3 out of 4 team members had never built a macOS application before - we learned the platform from scratch. Designed a generalizable system for detecting who you're talking to without hardcoding every edge case. Built a transcription pipeline that's genuinely fast - we benchmarked it. Kept privacy at the core: processing optionally stays local and minimal data leaves the device. Shipped a polished, intuitive UI that makes the product feel complete. Gained real experience with Rust and Swift in a production-style environment. Handled side quests along the way, including Stripe integration for future monetization.
Built With
- Rust
- Swift / SwiftUI
- OpenAI Whisper API
- Candle (local Whisper with Metal GPU acceleration)
- OpenAI GPT-4o
- Openrouter
- Google Gemini
- Cloudflare Workers
- Baseten
- SQLite
- macOS Accessibility APIs
Next Steps
Right now, Flow makes its best judgment based on context - but the future is personalization over time.
We’re building toward feedback-driven learning loops, where Flow improves as you use it. If you tweak a message to sound more sarcastic, more formal, or more casual, Flow learns from that correction. Every interaction becomes a data point that refines how the system understands your relationships.
Long-term, we want Flow to work seamlessly across all major communication platforms, continuously adapting to your evolving identity - so you can stop thinking about how to say things, and just say them.
Conclusion
Identity isn’t about being one person. It’s about being the right person in the right context.
With Flow, you can speak your mind freely - and trust that the right version of you shows up every time.
Log in or sign up for Devpost to join the conversation.