Hushflow – Hackathon Submission Draft

Inspiration

Every day, more than 30 emails land in my inbox—and most of them are subscription emails. What do I do with them most of the time? I delete them all, because even scanning the subject lines feels overwhelming.

But I subscribed for a reason: learning English, staying updated on news, and getting promo deals and discount codes. As the overall volume of information keeps growing, finding the valuable parts inside these subscriptions has become almost impossible.

What I need is a “subscription to my subscriptions”—something that summarizes the key information from subscription emails, so I can keep these channels that proactively deliver content to me, but use them in a much more efficient way.


What it does

Hushflow connects to the user’s Gmail, automatically scans the inbox, and identifies a list of senders worth tracking. The system then generates a regular subscription digest, highlighting important emails and key messages so users can quickly understand everything they’ve received.

In addition, we track engagement across all subscription senders. If there’s a sender whose emails we almost never open, it might be time to unsubscribe—so the system proactively suggests that action.

Hushflow also includes mobile movement detection. When you’re commuting in the morning, a voice prompt automatically asks if you’d like to listen to today’s email summary, helping you stay informed using small pockets of time.


How we built it

Hushflow is a full-stack Dart showcase. We chose Flutter and Serverpod as our core stack, allowing us to use one language—Dart—across both frontend and backend, which dramatically improved our development speed.

Core Architecture: Serverpod & Flutter

One language and one type system

With Serverpod, our backend data models can generate Flutter client code directly. That means we don’t need to write boilerplate API integration code, and we don’t have to worry about frontend/backend type mismatches. If we change a field on the backend, the frontend compiler immediately tells us what needs updating. This development workflow feels incredibly smooth.

Fast iteration cycle

Serverpod’s built-in caching, ORM, and task queue (Future Calls) let us focus on business logic instead of infrastructure. We use its asynchronous task system to handle time-consuming AI summarization work, keeping the frontend experience fast and responsive.

Flutter’s cross-platform magic

With Flutter, we wrote one codebase and delivered polished UI for both iOS and Android. Especially for the “driving mode” animations and interactions, Flutter’s rendering engine gave us native-level smoothness.

Intelligence Engine

OpenAI GPT-4

Responsible for deep semantic summarization of emails. We use Serverpod streaming to send summaries back to the client in real time as they are generated.

XGBoost

While we embrace Dart end-to-end, we also integrate the Python ecosystem where it makes sense. Our XGBoost ranking service runs as a microservice and integrates seamlessly with the Serverpod backend via API, predicting email importance and prioritization.


Challenges we ran into

Cross-language communication between Dart and Python

While Serverpod solves frontend/backend communication nicely, introducing a Python-based XGBoost model created cross-language challenges. We designed an efficient API interface so the Dart backend can send feature vectors to the Python service and quickly receive prediction results.

High-performance real-time updates

We wanted users to see analysis results immediately when new emails arrive. Serverpod’s WebSocket support made this easy—we didn’t need to set up a complex push notification service.


Accomplishments that we’re proud of

Deep Serverpod usage beyond CRUD

We didn’t just use Serverpod for basic CRUD. We deeply used features like Terraform integration, Redis caching, and asynchronous task processing—proving it can support complex, production-grade applications.

10× development speed with full-stack Dart

In a hackathon’s limited time, we iterated quickly largely thanks to the completeness of the Dart ecosystem. We saved more than 50% of the typical effort spent on defining API contracts and debugging frontend/backend integration.

A seamless user experience

From Flutter’s polished UI to Serverpod’s stable backend responses, we built a product that’s not just functional, but genuinely pleasant to use.


What we learned

The power of type safety

Serverpod’s enforced type generation helped us catch many potential bugs at compile time.

Choosing the right ecosystem matters

Flutter + Serverpod allowed a small team to perform with the effectiveness of a much larger team.


What’s next for Hushflow

We plan to continue expanding the app’s features and strengthening the mobile experience.

Built With

Share this project:

Updates