Overview
Built DAISI (Decathlon AI Supplier Informations), a production Enterprise Agent on Google Chat for supplier-process questions. It combines agentic business tools, RAG, Gemini, Vertex AI Vector Search, Cloud Run, Cloud SQL, MLflow/Databricks, Model Armor, DLP to protect sensitive information, OpenTelemetry, and Terraform.
Outcomes: 13,000 hours/year saved and successful load test with 1000 concurrent users.
The application is currently running in production, serving real users at Decathlon with automated infrastructure management via Terraform and comprehensive observability through MLflow and OpenTelemetry.
Business Impact
| Metric | Value |
|---|---|
| Time Saved | 13,000 hours/year for the suppliers team |
| Load test | Successful test with 1000 concurrent users |
| Availability | 24/7 instant answers vs. waiting for human response |
| Coverage | Grounded on internal procedures and accounting guides |
| Escalation | Automatic redirection to accountants when needed |
Technical Architecture
AI/ML Stack
- LangGraph - Agent orchestration framework with stateful conversation flows
- LangChain - LLM application framework for chains and prompts
- Gemini via Vertex AI - Foundation model for text generation
- Vertex AI Vector Search - High-performance semantic search for RAG
- FAISS - Local vector similarity search
- Model Armor - GCP security templates for anti-prompt injection and content filtering
- DLP - Protection for sensitive information
Backend Infrastructure
- FastAPI - High-performance async API framework
- Cloud Run - Serverless container deployment with autoscaling
- Cloud SQL PostgreSQL - Managed database for conversation persistence
- Google Cloud Storage - Object storage for knowledge base and configurations
- Uvicorn - ASGI server for FastAPI
Observability & MLOps
- MLflow 3.7+ - Experiment tracking with LangGraph autologging
- Databricks - MLflow and Delta refresh workflows
- LiteLLM - Unified LLM API gateway
- OpenTelemetry - Distributed tracing with OTLP/gRPC export
- Cloud Logging - Centralized log aggregation
Scheduled Jobs (Cloud Run Jobs)
The application includes automated maintenance jobs orchestrated by Cloud Scheduler:| Job | Schedule | Purpose |
|---|---|---|
| TTL Cleanup | Daily 03:00 | GDPR compliance - deletes checkpoints and MLflow traces older than 12 months |
| Trace Evaluation | Daily 04:00 | LLM-as-Judge quality scoring with custom scorers (relevance, language consistency, conciseness) |
| Data Sync | On config update | Syncs knowledge base from Google Sheets to GCS |
Infrastructure as Code
- Terraform - Complete GCP infrastructure management with modular design:
- cloud-run - Main service deployment
- cloud-run-job - Batch job definitions
- cloud-scheduler - Scheduled triggers
- iam - Service accounts and role bindings
- model-armor - Security template configuration
- vertex-ai-vector-search - Vector index management
- storage - GCS bucket configuration
DevOps & CI/CD
- Docker - Containerized deployments
- GitHub Actions - Automated CI/CD pipelines
- SonarCloud - Code quality and security analysis
- Pre-commit hooks - Automated code checks
- Ruff - Python linting and formatting
- Mypy - Static type checking
- Pytest - Async test framework with coverage
Project Management
- Jira - Sprint planning and issue tracking
- Confluence - Technical documentation with auto-sync from /docs
Architecture Diagrams
The three diagrams below were rebuilt from the live architecture reference in the DAISI repository. They make the runtime much easier to read than a plain markdown block.
System Architecture
This view shows the full production path: Google Chat as the user channel, Cloud Run / FastAPI as the runtime boundary, Model Armor on ingress and egress, LangGraph + Gemini for orchestration, DLP for sensitive-information protection, and the split between retrieval, persistence, enterprise APIs, and observability.Module Dependencies
This slice focuses on the codebase itself: a thin app.py entrypoint, an API layer that brokers requests, the LangGraph agent and tool layer in the middle, and shared foundations for retrieval, state, telemetry, and utilities.Request Flow
This sequence makes the runtime behavior explicit: verify the Google Chat event, reject duplicates early, acknowledge with a processing card, run the agent loop with retrieval and checkpoint state, then return a grounded answer while logging traces asynchronously. Reference: DAISI architecture READMECore Features
Intelligent Question Answering
RAG-powered responses grounded in operational and accounting practical guides ("fiches pratiques").Contextual Disambiguation
Multi-turn conversations with follow-up questions to clarify ambiguous requests.Conversation Memory
PostgreSQL-backed checkpointer for persistent conversation state with IAM authentication.System Integrations
- IAM - User context (Cost Center, job title, department)
- Accountant Lookup - Automatic assignment to the right contact
- Invoice Status - Real-time invoice status queries
- Purchasing Info - Indirect purchasing information
Security & Compliance
- Model Armor templates for prompt injection protection
- DLP to protect sensitive information
- Prohibited topics detection (salary, HR issues)
- GDPR-compliant data retention with automated TTL cleanup
- Access restricted to @decathlon.com domain
Technologies Summary
| Category | Technologies |
|---|---|
| AI/ML | LangGraph, LangChain, Gemini, Vertex AI Vector Search, FAISS, Model Armor, DLP |
| Backend | Python 3.11, FastAPI, Uvicorn, Pydantic |
| Database | Cloud SQL PostgreSQL, langgraph-checkpoint-postgres, psycopg3 |
| Cloud | GCP, Cloud Run, Cloud Run Jobs, Cloud Scheduler, GCS |
| Observability | MLflow, Databricks, LiteLLM, OpenTelemetry |
| Infrastructure | Terraform, Docker |
| CI/CD | GitHub Actions, SonarCloud, Pre-commit |
| Quality | Ruff, Mypy, Pytest, pytest-asyncio |
