AGUERO — Email Intelligence Platform Inspiration

On part tous les jours à l'assaut de nos boîtes mail sans vraiment savoir ce qui s'y cache. Le phishing devient de plus en plus sophistiqué, les emails importants se noient dans les newsletters et les promotions, et personne n'a le temps de trier ça manuellement. On voulait construire un système qui fait ce tri à notre place, de façon intelligente et automatisée, en s'appuyant sur le Model Context Protocol (MCP) — un standard encore récent qu'on avait envie d'explorer en profondeur plutôt que de se contenter d'un simple appel API à un LLM.

What it does

AGUERO surveille en continu une ou plusieurs boîtes mail (Gmail, Outlook, Yahoo) et pour chaque email reçu :

Détecte les menaces : phishing, malware, spam, avec un niveau de confiance. Priorise : classe chaque message en Critique, Normal ou Faible selon son urgence. Filtre les promotions : permet à l'utilisateur d'afficher ou masquer les newsletters et publicités d'un simple toggle. Agit automatiquement : applique des labels ou déplace les messages selon la classification, sans intervention humaine.

Le tout fonctionne en mode multi-utilisateurs : chaque compte est enregistré séparément, avec ses identifiants chiffrés en base.

How we built it

On a découpé le projet en quatre services conteneurisés avec Docker Compose, chacun avec une responsabilité claire :

mcp-client-python — l'orchestrateur. Il surveille les comptes, envoie le contenu des emails au service d'analyse, et commande le serveur Rust pour exécuter les actions. La décision peut être prise soit nativement par Claude via tool-use MCP, soit par un modèle local via Ollama qui renvoie une décision JSON structurée exécutée ensuite par l'orchestrateur — un choix pensé pour laisser le compromis coût/latence/confidentialité à l'utilisateur. mcp-server-rust — le connecteur. Un serveur MCP en Rust, choisi pour la performance et la sûreté mémoire, qui gère les identifiants IMAP/OAuth stockés dans PostgreSQL, déchiffrés à la volée en AES-256-GCM, et expose des outils sécurisés comme fetch_emails ou move_email. ai-service-fastapi — le moteur d'intelligence. Un microservice FastAPI qui expose POST /analyze pour classifier un email (menace, urgence, catégorie), avec prompting, validation, normalisation, et surtout un fallback par mots-clés pour que le tri continue même si le modèle est lent ou indisponible. PostgreSQL — pour stocker les credentials chiffrés et les logs des décisions IA.

On a volontairement séparé le connecteur (Rust) de l'intelligence (Python/FastAPI) pour pouvoir faire évoluer chaque brique indépendamment et garder le chiffrement des mots de passe isolé du reste de la logique métier.

Challenges we ran into Faire dialoguer Rust et Python proprement via MCP : le protocole est encore jeune, la documentation et les exemples multi-langages sont rares, il a fallu itérer beaucoup sur le format des tool calls. Le chiffrement des credentials : gérer AES-256-GCM correctement côté Rust, avec rotation de clé et déchiffrement à la volée, sans jamais exposer un secret en clair dans les logs. La robustesse de la classification : un modèle IA peut être lent, timeout, ou renvoyer une réponse mal formée. Construire un fallback par mots-clés fiable, qui dégrade la qualité du tri sans jamais le stopper complètement, a demandé plusieurs itérations. Le double mode legacy/multi-tenant du serveur Rust, pour permettre à la fois un déploiement simple mono-utilisateur et un vrai mode SaaS multi-comptes, sans dupliquer la logique. Accomplishments that we're proud of Une architecture modulaire à quatre conteneurs qui démarre en une seule commande (docker compose up --build) et s'initialise automatiquement (schéma PostgreSQL inclus). Un vrai choix de LLM à l'exécution (Claude natif vs Ollama local) sans changer une ligne de code métier. Un pipeline de classification résilient, qui ne casse jamais même en cas de panne du modèle IA. Un système multi-tenant fonctionnel avec chiffrement bout en bout des identifiants IMAP. What we learned Le Model Context Protocol change vraiment la façon de penser l'architecture : au lieu d'un backend monolithique, on expose des capacités sous forme d'outils, ce qui rend le système beaucoup plus composable. Écrire un connecteur sensible (accès IMAP, credentials) en Rust apporte une vraie tranquillité d'esprit côté sécurité et performance, même si la courbe d'apprentissage est plus raide que du Python. La fiabilité d'un système IA en production dépend autant du fallback que du modèle lui-même — le keyword fallback a été aussi important à concevoir que le prompt de classification. What's next for AGUERO Étendre le support à d'autres providers (ProtonMail, iCloud Mail). Ajouter une interface web pour visualiser les logs de classification et ajuster les règles de triage. Affiner la détection de phishing avec des signaux complémentaires (analyse d'en-têtes, réputation de domaine, liens). Permettre à l'utilisateur de définir ses propres règles de priorité (expéditeurs VIP, mots-clés critiques). Explorer un mode "apprentissage" où l'utilisateur peut corriger une classification pour affiner le modèle au fil du temps.

Built With

Share this project:

Updates