ScanReply #1 : Fondations & Architecture Django
Bienvenue dans le tout premier épisode de la série ScanReply !
Dans cette série, nous allons construire de A à Z une application d’automatisation intelligente capable de répondre à des emails en utilisant l’IA locale et le web scraping.
🚀 Le Projet : ScanReply
ScanReply est né d’un besoin simple mais puissant : automatiser l’analyse de sites web pour générer des réponses d’emails ultra-personnalisées.
L’idée est de combiner plusieurs technologies modernes pour créer un workflow complet :
- Réception d’un email (via l’API Gmail).
- Analyse du contenu (comprendre la demande).
- Scraping “Lite” en amont pour analyser le contexte du site (Homepage, CGV…) et enrichir le prompt de l’IA.
- Génération d’une réponse pertinente via une IA locale (Ollama).
- Envoi du brouillon ou de l’email final.
🛠 La Stack Technique
Pour réaliser ce projet, nous allons utiliser une stack robuste et moderne :
- Backend : Django 5.x (Le cadre web pour les perfectionnistes avec des délais).
- Gestionnaire de tâches : Django-Q2 pour le traitement asynchrone.
- Broker : Redis pour la gestion des files d’attente.
- IA Locale : Ollama (avec Llama 3 ou Mistral).
- Scraping : BeautifulSoup / Trafilatura.
- API Mail : Google Cloud Console (OAuth2 + Gmail API).
📐 Schéma d’Architecture
Voici comment ces différents composants interagissent ensemble pour former le système ScanReply :

Le flux de données est le suivant :
- Ingestion : Django interroge l’API Gmail périodiquement pour récupérer les nouveaux emails.
- File d’attente : Chaque email à traiter est transformé en “tâche” et envoyé dans Redis.
- Traitement (Worker) : Un cluster de workers Django-Q2 récupère la tâche.
- Intelligence : Le worker interroge Ollama (notre cerveau local) pour analyser l’email et décider s’il faut visiter un site web.
- Action : Si nécessaire, le module de scraping visite le site cible.
- Réponse : Ollama génère la réponse finale, qui est renvoyée à l’API Gmail sous forme de brouillon prêt à être envoyé.
Épisode 1 : Fondations & Architecture
Pour ce premier épisode, nous allons poser les bases solides de notre projet. Pas de code complexe aujourd’hui, mais une structure propre est essentielle pour la suite.
1. Pré-requis
Assurez-vous d’avoir Python installé sur votre machine. Vous pouvez vérifier votre version avec :
python --version
# Ou python3 --version selon votre système
2. Création du dossier et de l’environnement virtuel
Commençons par créer le dossier du projet et isoler nos dépendances. C’est une bonne pratique indispensable en Python.
# Créer le dossier du projet
mkdir scanreply
cd scanreply
# Créer l'environnement virtuel (.venv est un nom standard)
python -m venv .venv
Ensuite, activez l’environnement virtuel :
Sur Mac/Linux :
source .venv/bin/activate
Sur Windows :
.venv\Scripts\Activate
Votre terminal devrait maintenant afficher (.venv) au début de la ligne, indiquant que vous travaillez dans un environnement isolé.
3. Installation de Django
Avec l’environnement activé, installons Django. Nous allons utiliser la dernière version stable.
pip install django
Profitez-en pour créer un fichier requirements.txt. Cela permettra de réinstaller facilement les dépendances plus tard (ou sur un serveur).
pip freeze > requirements.txt
4. Initialisation du projet Django
Maintenant, créons le cœur de notre application. J’ai pour habitude de nommer le dossier de configuration config plutôt que de répéter le nom du projet, cela rend l’arborescence plus claire.
N’oubliez pas le . à la fin de la commande pour installer Django dans le dossier courant (et ne pas créer un sous-dossier inutile).
django-admin startproject config .
Voici à quoi devrait ressembler votre structure à ce stade :
scanreply/
├── .venv/
├── config/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── requirements.txt
5. Premier lancement
Vérifions que tout fonctionne correctement en lançant le serveur de développement.
python manage.py runserver
Ouvrez votre navigateur à l’adresse http://127.0.0.1:8000/. Si vous voyez la fusée Django décoller, félicitations ! 🚀 Les fondations sont en place.
La suite au prochain épisode
Dans le prochain épisode, nous entrerons dans le vif du sujet avec la création de nos premières applications Django et la définition des modèles de données pour stocker nos emails et nos tâches d’IA.
À bientôt pour la suite de l’aventure ScanReply !