Hackathon Orange Business Γ Epitech β February 2026
An AI-powered audit tool that reduced SD-WAN replacement costs by 64% through real telemetry analysis.
π«π· FranΓ§ais Β· π¬π§ English Β· π Structure Β· ποΈ Database
Optimiser le remplacement d'un parc de 90 routeurs SD-WAN (Edge 840 / Edge 680 β Edge 7x0). Le but est d'analyser la tΓ©lΓ©mΓ©trie rΓ©elle du rΓ©seau pour proposer une architecture cible Γ©conomiquement viable et techniquement robuste, plutΓ΄t qu'un remplacement "1 pour 1" coΓ»teux.
Un assistant IA local (LLM) permet de poser des questions en langage naturel sur le parc, les coΓ»ts et la stratΓ©gie de migration β 100% confidentiel, zΓ©ro donnΓ©e dans le cloud.
- Parc actuel : 80 sites Edge 840 (End of Life) + 10 sites Edge 680 (End of Sale)
- ProblΓ¨me : Un remplacement tout-en-740 coΓ»terait 63 000 (relatif) β sur-dimensionnΓ© pour la plupart des sites
- Solution : Algorithme de dΓ©cision basΓ© sur la consommation rΓ©elle (Throughput, Tunnels, Flows, SFP)
- RΓ©sultat : CoΓ»t optimisΓ© 22 250 β soit 64% d'Γ©conomies
| Indicateur | Valeur |
|---|---|
| π¦ Γquipements auditΓ©s | 90 |
| π΄ CRITICAL (EoL dΓ©passΓ©) | 80 sites (Edge 840) |
| π HIGH (EoS dΓ©passΓ©) | 10 sites (Edge 680) |
| β‘οΈ Edge 710 recommandΓ©s | 71 sites |
| β‘οΈ Edge 720 recommandΓ©s | 15 sites |
| β‘οΈ Edge 740 recommandΓ©s | 4 sites |
| π° CoΓ»t optimisΓ© | 22 250 |
| πΈ CoΓ»t baseline (tout 740) | 63 000 |
| β Γconomies | 40 750 (64%) |
Pourquoi pas tout en Edge 740 ? La plupart des sites ont un faible dΓ©bit β un Edge 710 suffit. On ne recommande un 720/740 que quand les mesures l'exigent :
- Edge 720 : 2+ ports SFP, tunnels > 50, ou dΓ©bit > 395 Mbps
- Edge 740 : tunnels > 400, dΓ©bit > 2300 Mbps, ou flows/s > 18 000
Un LLM local (Ollama) connectΓ© Γ la base de donnΓ©es permet de poser des questions en franΓ§ais :
Question > Combien d'Γ©quipements sont dans le parc ?
β Il y a 90 Γ©quipements dans le parc actuel.
Question > Quels sites nΓ©cessitent un Edge 740 et pourquoi ?
β 4 sites : host-edge680-08 (450 tunnels), host-edge840-14 (21000 flows/s)...
Question > Combien coΓ»te la migration totale ?
β CoΓ»t optimisΓ©: 22 250 vs baseline 63 000 = 64% d'Γ©conomies.
Question > export
β 90 fichiers JSON créés dans exports/
Le LLM ne calcule rien β il interroge la base SQLite prΓ©-remplie et synthΓ©tise les rΓ©sultats.
MΓ©moire adaptative : chaque interaction (succΓ¨s/erreur) est capturΓ©e. Plus on l'utilise, plus il est prΓ©cis. π§
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ UTILISATEUR β
β (Jury / IngΓ©nieur rΓ©seau) β
β Question en franΓ§ais β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ src/llm_agent.py β
β LangChain SQL Agent β
β + MΓ©moire adaptative (llm_memory.json) β
ββββββββ¬ββββββββββββββββββββββββββββββββ¬ββββββββββββββββ
β β
βΌ βΌ
ββββββββββββββββ ββββββββββββββββββββββ
β ποΈ SQLite β β π§ LLM Local β
β 8 tables β β Ollama via β
β 323 rows β β Open WebUI β
β β β (OpenAI-compat.) β
ββββββββββββββββ ββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π frontend/ β
β React 19 + Recharts Dashboard β
β Vue d'ensemble Β· Arborescence Β· Chatbot IA β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Flux : Question β LLM gΓ©nΓ¨re du SQL β ExΓ©cute sur la DB β LLM synthΓ©tise β RΓ©ponse en franΓ§ais
# 1. Cloner le repo
git clone https://github.com/silvucani/Opal.git && cd Opal
# 2. Installer les dΓ©pendances Python
pip install -r requirements.txt
# 3. Remplir la base de donnΓ©es depuis l'Excel source
python src/populate_db.py
# 4. Lancer l'assistant IA (CLI)
python src/llm_agent.py
# 5. Lancer les tests (55 tests)
python -m pytest tests/ -vcd frontend
npm install
npm run dev # β http://localhost:5173L'agent utilise une API compatible OpenAI. Configurez votre propre instance Ollama :
| Paramètre | Valeur par défaut |
|---|---|
| π Base URL | http://localhost:11434/v1 |
| π₯οΈ Interface | Open WebUI (Docker) |
| βοΈ Backend | Ollama |
| π€ ModΓ¨les recommandΓ©s | qwen2.5-coder:7b / mistral-nemo |
| π‘ Protocole | OpenAI-compatible API |
Note : Le projet a Γ©tΓ© dΓ©veloppΓ© avec un LLM hΓ©bergΓ© localement via Tailscale VPN. Remplacez
base_urldanssrc/llm_agent.pypar votre propre endpoint Ollama.
Optimize the replacement of a 90-device SD-WAN fleet (Edge 840 / Edge 680 β Edge 7x0). The goal is to analyze real network telemetry to propose a target architecture that is cost-effective and technically robust, rather than an expensive "1-for-1" replacement.
A local AI assistant (LLM) allows asking questions in natural language about the fleet, costs, and migration strategy β 100% confidential, zero data sent to the cloud.
- Current fleet: 80x Edge 840 (End of Life) + 10x Edge 680 (End of Sale)
- Problem: An all-740 replacement would cost 63,000 (relative) β oversized for most sites
- Solution: Decision algorithm based on actual usage (Throughput, Tunnels, Flows, SFP ports)
- Result: Optimized cost 22,250 β that's 64% savings
| Metric | Value |
|---|---|
| π¦ Devices audited | 90 |
| π΄ CRITICAL (past EoL) | 80 sites (Edge 840) |
| π HIGH (past EoS) | 10 sites (Edge 680) |
| β‘οΈ Edge 710 recommended | 71 sites |
| β‘οΈ Edge 720 recommended | 15 sites |
| β‘οΈ Edge 740 recommended | 4 sites |
| π° Optimized cost | 22,250 |
| πΈ Baseline (all 740) | 63,000 |
| β Savings | 40,750 (64%) |
A local LLM (Ollama) connected to the database allows natural language queries:
- "How many devices in the fleet?" β 90
- "Which sites need an Edge 740 and why?" β 4 sites with technical justification
- "What's the total migration cost?" β optimized vs. baseline comparison
- "Export data to JSON" β generates files for the web frontend
The LLM computes nothing β it queries the pre-filled SQLite database and synthesizes results.
Adaptive memory: every interaction (success/error) is captured. The more you use it, the more accurate it gets. π§
git clone https://github.com/silvucani/Opal.git && cd Opal
pip install -r requirements.txt
python src/populate_db.py # Fill the database from Excel source
python src/llm_agent.py # Start the AI assistant (CLI)
python -m pytest tests/ -v # Run 55 unit testscd frontend && npm install && npm run dev
# Open http://localhost:5173The agent uses an OpenAI-compatible API endpoint. Replace the base_url in src/llm_agent.py with your own Ollama or any other compatible LLM server URL.
Opal/
βββ π README.md
βββ π LICENSE
βββ π .gitignore
βββ π requirements.txt
β
βββ π src/ β Python source code
β βββ audit_engine.py β Audit engine (pure functions, zero side effects)
β βββ populate_db.py β SQLite population from Excel + reference data
β βββ export_json.py β JSON export for web frontend
β βββ llm_agent.py β AI assistant (LangChain + Ollama)
β
βββ π§ͺ tests/ β Unit tests
β βββ test_audit_engine.py β 55 tests for the audit engine
β
βββ πΎ data/ β Input data
β βββ data_hackathon_extended.xlsx β Fleet inventory + real telemetry measurements
β (*.db and generated files are gitignored β run populate_db.py to create them)
β
βββ π frontend/ β React 19 web dashboard
β βββ index.html
β βββ vite.config.js
β βββ package.json
β βββ src/
β βββ main.jsx
β βββ OpalDashboard.jsx β Full dashboard: overview, network tree, AI chatbot
β
βββ π docs/ β Reference documents
βββ SD-WAN edges lifecycle.pdf β Official Arista EoS/EoL dates
βββ VeloCloud-SD-WAN-Edge-7x0-Series.pdf β Edge 7x0 specs
βββ edges measured max values.pdf β Current fleet measurements
βββ release-notes/ β SD-WAN version release notes
| Table | Content | Rows |
|---|---|---|
parc_actuel |
Fleet inventory (90 devices) | 90 |
mesures_detaillees |
Throughput, tunnels, flows, ports per device | 90 |
scenarios_migration |
Edge 7x0 recommendation + cost + complexity | 90 |
lifecycle |
EoS/EoL dates per model (Arista source) | 12 |
edge_7x0_specs |
Technical specs Edge 710, 720, 740 | 3 |
software_compatibility |
Model/version compatibility matrix | 27 |
upgrade_paths |
Step-by-step software upgrade sequences | 5 |
catalogue_reference |
Hardware + license relative costs | 6 |
The database is not committed to the repo. Run
python src/populate_db.pyto regenerate it fromdata/data_hackathon_extended.xlsx.
- 100% local β no data leaves your machine
- LLM runs on your own hardware via Ollama
- Network infrastructure data is anonymized in this public demo
This project is licensed under the MIT License.
π Built at the Orange Business Γ Epitech Hackathon β February 2026