Here’s a simpler, cleaner rewrite. Same meaning, less weight, no em dashes.
Inspiration
We were promised a future where technology feels like magic, a Jarvis-like companion that understands us instantly. Instead, our digital lives are still full of clicking, scrolling, and jumping between apps. We wanted to change that. Friday came from the idea of stopping the constant device management and starting real collaboration with our tools. The goal was an interface where menus fade away and interaction feels like a natural conversation.
What it does
Friday is an agentic AI assistant that plugs directly into your digital life. It acts as a single natural language interface across your apps.
Listens and speaks Friday supports real-time voice conversations with low latency. You talk naturally, without wake words or rigid commands.
Reasons and plans It understands intent even when requests are vague, and it can chain multiple tools together to handle complex tasks.
Executes actions Friday does more than chat. It manages emails, organizes your Google Calendar, and controls Spotify playback directly.
How we built it
Friday was designed to be fast, type-safe, and modular.
The brain We used Gemini 2.0 Flash for its strong reasoning abilities, especially for multi-step instructions and tool usage.
The voice We integrated ElevenLabs Scribe v2 and Turbo v3 to keep voice input and output nearly instant, so conversations feel real-time.
The full-stack framework We used Serverpod for the backend and Flutter for the frontend, creating an end-to-end Dart stack.
Shared protocol layer Serverpod generates shared data models like ChatMessage, FridayUser, and AuthResponse. These are mirrored automatically to the Flutter client through the friday_client package, removing manual JSON handling and preventing API drift.
Backend (Serverpod) The server handles authentication using custom email and password with session tokens stored securely. It processes user intent by receiving transcribed speech, calling Gemini, parsing tool actions, and executing requests against Google and Spotify APIs. It also manages OAuth tokens securely, including refresh logic, so the client never touches sensitive credentials. Serverpod serves the compiled Flutter web app and handles SPA routing using FlutterRoute.
Frontend (Flutter) The client records audio, sends it for transcription, and plays synthesized responses. It provides a real-time conversational UI with responsive animations that adapt to the conversation state. Session persistence is handled using SharedPreferences so users stay logged in across restarts. All API calls are strongly typed using the generated friday_client, with full autocomplete and compile-time safety.
Integrations Friday connects securely to Google Workspace and Spotify using OAuth, with all token handling and API calls managed on the server.
Challenges we ran into
Balancing latency and accuracy was difficult. Real-time voice needed to stay fast while reasoning still had to be reliable. Tool chaining was tricky. Teaching the model when to switch from conversation to execution required careful prompt design and strong error handling. Deploying Flutter Web with Serverpod required careful CORS and cache configuration to avoid stale builds and loading issues.
Accomplishments we’re proud of
Friday shows real agentic behavior. It performs actions instead of pretending to. The voice interaction feels conversational rather than transactional. Using a full Dart stack removed an entire class of client-server mismatch bugs.
What we learned
Context matters deeply. The more state Friday understands, the more helpful it feels. Reliable agents depend on structured outputs, not free-form text. Using one language across the stack made the system easier to reason about and faster to build.
What’s next for Friday
We’re expanding integrations to include Slack, Notion, and GitHub.
Built With
- dart
- elevenlabs-scribe-v2
- elevenlabs-tts
- flutter
- gemini
- google-calendar
- google-gmail-oauth
- serverpod-cloud
- spotify
Log in or sign up for Devpost to join the conversation.