TG
TITAN par TenderGraph

Documents légaux

Datasheet sécurité — TenderGraph

Version 1 — 16 mai 2026. Posture RGPD baseline L1. Architecture local-first, hébergement européen, sous-processeurs documentés, roadmap souveraineté assumée.

1. Périmètre et posture

Cette datasheet décrit la posture sécurité de TenderGraph TITAN, plateforme cognitive de réponse à appel d'offres. Elle couvre l'application web SaaS (tendergraph.app), l'interface MCP (Model Context Protocol) exposée aux clients LLM externes, et le sidecar local distribué aux clients en mode local-first.

Posture revendiquée : RGPD baseline niveau 1 (L1). Les mesures listées dans ce document sont implémentées et auditables. Les chantiers L2 (renforcement) et L3/L4 (certifications, souveraineté technique) sont nommés en section 12 sans engagement de calendrier.

TenderGraph s'engage à mettre à jour cette datasheet à chaque évolution architecturale significative.

2. Architecture local-first

Le mode local-first est l'architecture cible de TITAN. Le client conserve la maîtrise physique des binaires du DCE (dossier de consultation des entreprises) et des livrables produits. Le serveur cloud conserve la doctrine, l'état du pipeline, l'audit trail et le watermark.

Concrètement :

  • Les fichiers DCE (PDF, DOCX, XLSX, PPTX) ne quittent pas le poste du client. Le sidecar Python (tendergraph-sidecar, alpha 2026-05) lit et extrait les sections nécessaires localement, et ne transmet que le texte requis aux outils déterministes.
  • Les livrables produits par le pipeline sont écrits dans le système de fichiers local du client (typiquement un dossier OneDrive synchronisé avec SharePoint), pas dans une base TenderGraph.
  • Le serveur n'expose qu'un endpoint de manifest (hashes, tailles, noms) pour l'audit et la traçabilité, sans contenu binaire ni textuel des fichiers binaires originaux.

Cette asymétrie n'élimine pas tous les transferts : les textes extraits sont nécessairement envoyés au LLM (Anthropic Claude) pour exécution. Le client conserve néanmoins le contrôle sur ce qui est extrait et envoyé.

3. Localisation des données

Les données de TenderGraph sont hébergées principalement dans l'Union européenne. Les sous-processeurs hors UE sont encadrés par des SCC (Clauses Contractuelles Types) européennes ou DPF (Data Privacy Framework).

DonnéeLocalisationHébergeurRégion
Application principale (compute)Fly.ioFly.ioParis CDG (UE)
Base PostgreSQL (utilisateurs, projets, subscriptions, audit trail)Volume Fly attachéFly.ioParis CDG (UE)
Fichiers DCE binairesPoste client (mode local-first)Selon le client
Livrables produitsPoste client (OneDrive/SharePoint)Microsoft 365 clientSelon tenant client
Sessions traces (REX)Volume FlyFly.ioParis CDG (UE)
Logs applicatifsFly.io + SentryFly.io / SentryFly UE / Sentry US (SCC)
Telemetry LLM (prompts, latences)LangfuseLangfuseAllemagne (UE)
Emails transactionnelsResendResendÉtats-Unis (SCC)
PaiementsStripeStripeÉtats-Unis (SCC + DPF)
Authentification optionnelle GoogleGoogle OAuthGoogleÉtats-Unis (DPF)

Aucun transfert hors UE pour les données primaires (compte utilisateur, contenu de projet, livrables). Les transferts vers les États-Unis sont encadrés par SCC ou DPF.

4. Chiffrement

  • En transit : TLS 1.3 sur tous les endpoints HTTPS et MCP. HSTS activé. Pas de fallback HTTP.
  • Au repos : volumes Fly.io chiffrés AES-256 (chiffrement de plateforme).
  • Secrets applicatifs : stockés dans Fly Secrets (chiffrés). Pas de secret en clair dans le repo ou les images Docker. Cycle de rotation manuel à la demande.
  • Vault interne (Nexus) : pour les credentials sensibles, dérivation PBKDF2-HMAC-SHA256 (600 000 itérations) puis chiffrement Fernet AES-128 + HMAC.
  • Mots de passe utilisateurs : bcrypt 12 rounds. Jamais stockés en clair, jamais loggués.
  • JWT MCP : signature HMAC-SHA256, secret distinct du backend principal. Access token 1 h, refresh 30 j, scope mcp.

5. Authentification et autorisation

  • Authentification web : email + mot de passe bcrypt, ou Google OAuth. MFA non disponible en v1 (roadmap L2).
  • Authentification MCP : clé API permanente au format tg_<32 hex>, hash SHA-256 persisté, plaintext affiché une seule fois à la création. Révocable depuis /dashboard/mcp.
  • Isolation multi-tenant : chaque projet a un project_id UUID. Vérification systématique de l'accès via is_project_accessible et user_has_active_access avant toute opération.
  • Modèle d'accès projet : owner + members (table ProjectMember). Pas de plafond dur (soft cap 100 avec log d'avertissement).
  • Gate de souscription : tout appel MCP vérifie qu'au moins une TitanSubscription active ou en trial couvre le projet ciblé.
  • Watermark cryptographique : chaque output sensible porte un watermark à 3 niveaux (sha256(user_id), sha256(user_id|jti|date), sha256(tool_name|user_id|jti)) pour traçabilité de fuite.

6. Sous-processeurs

Sous-processeurRôleLocalisationBase légale transfert
Fly.ioHébergement compute, volumes, base PostgreSQLParis CDG (UE)UE — aucun transfert
Anthropic PBCLLM Claude (inférence, sampling MCP)États-UnisSCC européennes, engagement no-training sur les données client
Stripe Inc.Paiement par carte et SEPAÉtats-UnisSCC + DPF
ResendEnvoi d'emails transactionnelsÉtats-UnisSCC
SentrySuivi des erreurs runtimeÉtats-UnisSCC
LangfuseObservabilité LLM (prompts, latences)Allemagne (UE)UE — aucun transfert
Google OAuthAuthentification optionnelleÉtats-UnisDPF
UptimeRobotMonitoring disponibilitéÉtats-UnisSCC

Toute modification de cette liste est notifiée aux clients sous contrat avec un préavis de 30 jours et un droit d'opposition explicite (cf. DPA section 8).

7. Rétention et droit à l'oubli

  • Données de compte utilisateur : conservées tant que le compte est actif.
  • Données de projet (mémos pipeline, audit trail, transcript) : 90 jours après archivage d'un projet, puis purge automatique.
  • Données de facturation : 7 ans (obligation comptable française).
  • Logs techniques : rétention rolling 30 jours.
  • Sessions traces REX : 90 jours.
  • Backups : 30 jours rolling.

Le droit à l'oubli (RGPD article 17) s'exerce par email à dpo@tendergraph.app. Délai de traitement : 30 jours maximum. Exceptions : données soumises à obligation légale de conservation (facturation 7 ans).

L'export portable des données d'un projet est disponible sur demande (RGPD article 20).

8. Sauvegardes et continuité

  • Backups PostgreSQL : snapshot quotidien du volume Fly, rétention 30 jours.
  • Restoration testée : trimestriellement (chantier L2 — automatisation du test prévue).
  • RPO cible : 24 h.
  • RTO cible : 4 h ouvrées.
  • Plan de reprise : redéploiement Fly depuis l'image Docker la plus récente + restauration du dernier snapshot. Procédure documentée en interne.
  • Pas de DR multi-région en v1 (mono-région CDG). Mitigation : Fly.io garantit la résilience intra-région.

9. Vulnérabilités et veille sécurité

  • CI/CD : pip-audit (dépendances Python) et trivy (image Docker) lancés à chaque push sur master.
  • Monitoring : Sentry (erreurs runtime + traces), UptimeRobot (disponibilité, check toutes les 5 minutes), Langfuse (observabilité LLM).
  • Patching : application des CVE critiques sous 7 jours, des CVE high sous 30 jours.
  • Headers HTTP : CSP strict, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy (cf. middleware FastAPI main.py).
  • Pentests : non planifiés en v1. Roadmap L2 — pentest externe annuel à partir de 2026 H2.
  • Bug bounty : pas de programme formel. Reports responsables bienvenus à security@tendergraph.app.

Divulgation responsable : prévenir à security@tendergraph.app avant publication. Délai de réponse cible : 48 h ouvrées.

10. Contact DPO

  • Email : dpo@tendergraph.app
  • Délai de réponse : 5 jours ouvrés pour les demandes d'exercice de droits RGPD.
  • Notification incident : en cas de violation de données affectant des clients, notification sous 48 h conformément au DPA (article 4).

Le DPO sera formellement désigné lors de la formalisation juridique de TenderGraph SAS. En l'attente, le porteur du projet assure la fonction.

11. Documents associés

  • DPA (Data Processing Agreement) — gabarit conforme RGPD article 28, signable à l'onboarding entreprise. /legal/dpa (page à venir)
  • CGU-MCP — conditions générales d'utilisation de l'interface MCP, incluant les clauses anti-rétro-ingénierie et anti-fork doctrinal. /legal/cgu-mcp (page à venir)
  • Politique de confidentialité (page à venir)
  • Mentions légales (page à venir)

12. Limites de cette version

Cette datasheet documente la posture v1. Les chantiers ci-dessous sont identifiés mais non engagés en calendrier.

NiveauChantierStatut
L2MFA pour les comptes utilisateursRoadmap, non priorisé
L2Cookie httpOnly + CSRF token (vs JWT en localStorage)Mitigation CSP appliquée, refonte différée
L2Test de restoration backup automatiséRoadmap
L2Pentest externe annuelRoadmap H2 2026
L2Audit logging structuré exporté (SIEM-ready)Roadmap
L3Certification ISO 27001Pas d'engagement
L3Certification HDS (Hébergeur Données Santé)Hors scope (pas de données de santé)
L3SOC 2 Type IIPas d'engagement
L4Souveraineté technique : LLM européen, hébergeur souverainVeille active (DeepSeek, Mistral, Scaleway)
L4Chiffrement client-side (E2EE des livrables)Hors scope architecture actuelle