ÉconomieRisks & Fortifications

Risks & Fortifications

Checklist préventive, ce qu'on doit verrouiller pour ne pas se faire détruire par des risques évitables. À relire tous les 6 mois.

Checklist préventive, ce qu'on doit verrouiller pour ne pas se faire détruire par des risques évitables. À relire tous les 6 mois.


1. Notre dépendance providers (Anthropic, Google, OpenAI)

Position assumée : on est curated, pas vendor-agnostic. On utilise les meilleurs modèles par modalité (voir model-curation.md). Ça crée une dépendance contrôlée : pas un lock-in technique.

Risques

RisqueImpactProbabilitéMitigation
Anthropic monte les prix Sonnet/OpusMarge écraséeHaute (12-24m)Markup ajustable clause CGV + suivi trimestriel + migration possible vers Gemini si écart
AI Gateway down 1h+Chat dead, frustrationMoyenneFallback graceful Anthropic → GPT-4 Turbo + banner UI "Service dégradé"
Anthropic deprecate un modèleMigration forcéeAnnual (release cycle)Vigilance sur EOL dates Anthropic + suivi publié + 6 mois min de buffer
Quota AI Gateway en peakUsers payants throttledMoyennePer-tier rate limiting + queue front-end
Anthropic change leurs TOSFeatures pivot ou retiréFaibleLecture trimestrielle des TOS + diversification modalités
OpenAI/Google changent prixImage/voice marge écraséeMoyenneIdem markup ajustable
Fournisseur lance un produit Shopify directConcurrent gratuitFaibleNotre moat reste le vertical Shopify + écosystème

Ce que le repli coute vraiment

Le repli est cable sur chaque tour de chat : buildProviderOptions pose providerOptions.gateway.models = [modele, repli], et la Gateway n'y touche qu'apres epuisement des retries 5xx cote Anthropic. Le tableau ci-dessus l'a affiche « ❌ Pas implémenté » pendant qu'il tournait, et nommait GPT-5.4 la ou le code envoie GPT-4 Turbo (MODELS.outageFallback).

Deux consequences a garder en tete, parce qu'aucune n'est visible cote utilisateur :

  • Le repli coute plus cher que le tier choisi. GPT-4 Turbo est a $10/$30 par million de tokens, Sonnet a $3/$15. La facturation suit le modele qui a reellement servi, donc un tour bascule est facture au tarif OpenAI alors que l'utilisateur avait pris @Atlas Pro. Le selecteur ne l'annonce nulle part.
  • Le repli est OpenAI, et c'est le point. Retomber d'Anthropic vers Anthropic n'acheterait aucune diversite de fournisseur : outageFallbackFor ne rend donc rien pour un modele non-Anthropic.

Le catalogue unique (src/config/ai-models.ts) porte ce role explicitement (role: "fallback") pour que la question « sur quoi tourne-t-on ? » ait une reponse lisible sans grep.

Mitigations clés

  1. Curation vs lock-in technique : on choisit Claude par décision business, pas parce qu'on ne pourrait pas changer. Le code est structuré pour supporter d'autres providers via AI Gateway générique.
  2. Fallback graceful sur outage (auto-switch GPT-4 Turbo sur 5xx errors > 3 retries)
  3. Caching agressif sur queries répétitives (audit, scan) : économie 30-50%
  4. BYOK sur Custom — enterprise users apportent leurs clés
  5. Markup ajustable dans les CGV
  6. Suivi quarterly des prix providers + benchmarks

2. Risques niche Shopify

RisqueImpactMitigation
Shopify Magic (concurrent dans leur écosystème)Magic gratuit pour tout merchant ShopifyNotre profondeur > leur largeur. Magic = basic copy/image. Nous = orchestration multi-agent + workflows + marketplace
Shopify Theme Store / App StoreMarketplaces existants, énorme audienceNous ne sommes pas un app, on est une plateforme. Apps Shopify = building blocks via MCP
Shopify API version deprecationCode legacy casseSkill shopify-version-monitor à créer + alertes proactives
Custom App client_credentials retrait par ShopifyTous les users devraient reconnecterImplémenter OAuth Authorization Code grant en plus de client_credentials
Webhooks Shopify manqués (Shopify ne garantit pas 100%)Drift entre notre DB et ShopifyReconciliation cron quotidien sur events critiques (orders, inventory)
Confusion test store vs live storeUser déploie sur le mauvais storeUI confirmation modale + label "PRODUCTION" rouge sur shell quand store live
Shopify API rate-limit hitTous users d'une org bloquésPer-store rate limiter Upstash + queue tools calls
Shopify Plus tier-only featuresCode marche pas sur BasicCapability check avant toute mutation

3. Items critiques à verrouiller AVANT lancement

A. Sécurité & isolation

ItemÉtatPriorité
Multi-tenancy strict (orgId scoping partout)✅ Implémenté via getOrgAccessAudit final
Encryption tokens at rest (AES-256-GCM)✅ ImplémentéOK
Token rotation (Shopify 24h auto-refresh)✅ ImplémentéOK
OAuth tokens hash + 1h TTL✅ ImplémentéOK
Audit log sur chaque action qui modifie Shopify⚠️ PartielPhase 1 critique
Rollback capability (undo product/theme change)❌ Pas implémentéPhase 1 critique
PII handling (customer/order data)⚠️ Pas de DPA explicitePhase 1 critique
GDPR right to deletion✅ Endpoint existeOK
Tenancy data leak protection (test cross-org)⚠️ Pas de tests automatisésPhase 1 critique

B. Cost controls (runaway agent)

ItemÉtatPriorité
Pre-stream credits gate✅ ImplémentéOK
Mid-stream hard cap (AbortSignal)✅ ImplémentéOK
Per-conversation $ cap❌ Pas de capPhase 1 critique
Per-tool $ cap (un tool ne peut pas burn $50 d'Opus)❌ Pas de capPhase 2
Workflow-level $ cap❌ Pas de capPhase 6
Daily org $ cap user-defined❌ Pas de capPhase 2
Agent loop detection (infinite delegation)⚠️ Step counter mais pas de cycle detectionPhase 2

C. Data integrity (Shopify writes)

ItemÉtatPriorité
Idempotency keys sur tous les writes Shopify⚠️ PartielPhase 1 critique
Confirmation modal avant action destructive⚠️ Pas systématiquePhase 1 critique
Theme Live protection runtime (pas juste rule)⚠️ Rule mais pas enforcement codePhase 1 critique
Diff preview avant mutation❌ Pas implémentéPhase 2
Rollback log (snapshot before each write)❌ Pas implémentéPhase 2
Bulk operation throttling (Shopify rate limits)⚠️ Pas de queue dédiéePhase 2

D. Operational reliability

ItemÉtatPriorité
Sentry / error monitoring⚠️ À configurerPhase 1
Structured logging✅ ExistantOK
Health checks endpoints⚠️ PartielPhase 1
Graceful degradation (Shopify API down)⚠️ Pas systématiquePhase 1
AI Gateway timeout handling⚠️ Pas systématiquePhase 1
AI Gateway fallback Anthropic → OpenAI✅ ExistantOK
Stripe webhook deadletter queue✅ Existant : un handler en échec laisse une ligne StripeEvent status = "failed" avec l'erreur, re-réclamable au retry Stripe, inspectable sur /admin/revenue/webhooks. Aucun event n'est perduOK
Database backup test (Neon snapshot restore)⚠️ Auto-backup mais pas testéPhase 1

E. Compliance & légal

ItemÉtatPriorité
CGV / TOS publiés❌ À rédigerPhase 1 critique
Privacy Policy❌ À rédigerPhase 1 critique
DPA (Data Processing Agreement)❌ À rédigerPhase 1 critique
Cookie consent GDPR⚠️ PartielPhase 1
Stripe Tax setup complet⚠️ Activé mais nexus US à reviewerPhase 1
1099-K Connect setup pour sellers⚠️ Auto si Connect Express activéPhase 3
Markup ajustable clause CGV❌ À ajouterPhase 1 critique

4. Notre vrai moat (ce qu'on contrôle 100%)

Non clonable par Anthropic ou par un nouveau concurrent qui démarre :

MoatPourquoi c'est défendable
Domain expertise embeddedNos prompts agents (@Atlas, Maya, Marco, Otis, Faye, Sam) encodent des milliers d'heures de Shopify expertise. Nouveau player part de zéro.
Live store data contextChaque conversation est nourrie en live des vraies données du store. Claude générique n'a pas ça.
Marketplace network effectÀ 1000 sellers actifs, le catalog devient un moat (impossible à reproduire en <2 ans).
Workflow libraryChaque workflow créé par la communauté = un asset qu'on monétise. Compounding.
Trust + audit trailLes merchants nous donnent accès à leur store. Cette confiance s'acquiert lentement, ne se clone pas.
Vertical SEO + contentArticles Shopify, vidéos formation, présence YouTube. Moat marketing.
Customer data ownershipAvec leur permission, on a leurs orders/customers/products. Différenciation impossible sans cet accès.

5. Process audit semestriel (template)

À copier-coller dans une nouvelle PR tous les 6 mois :

## Audit Risks & Fortifications — [date]

### Section 1 — Dépendance providers
- [ ] Prix Anthropic actuels vs 6 mois ago
- [ ] Nouveaux modèles Claude / Gemini / OpenAI ?
- [ ] Migration update needed ?
- [ ] Fallback testé en staging ?

### Section 2 — Risques Shopify
- [ ] Shopify API version actuelle (`SHOPIFY_API_VERSION`) — pas deprecated ?
- [ ] Shopify Magic features ajoutées qui menacent notre USP ?
- [ ] Webhooks reconciliation cron OK ?

### Section 3 — Critical items
- [ ] Audit log toutes mutations
- [ ] Rollback capability testée
- [ ] Multi-tenancy : test cross-org leak run
- [ ] Sentry alerts triggered ce semestre — root causes addressed ?
- [ ] DB backup restore testé

### Section 4 — Compliance
- [ ] CGV à jour avec features actuelles
- [ ] Privacy Policy à jour
- [ ] DPA à jour
- [ ] Stripe Tax nexus à jour (US states)

### Section 5 — Moat consolidation
- [ ] Workflow library size
- [ ] Marketplace items count
- [ ] Trust signals (testimonials, NPS)
- [ ] Content (blog articles, videos) growth

6. Lien avec autres docs

  • model-curation.md : les modèles qu'on utilise (et pourquoi)
  • operations.md : les rate limits + audit logs côté ops
  • plans.md : les plans et caps usage (cost controls implicit)
  • roadmap.md : les items roadmap pour les fortifications listées ici

7. Anti-patterns à éviter

❌ "On va éliminer le lock-in Anthropic" — non, on est curated, pas agnostic
❌ "Le marketplace activera M3" — non, M9+ pour seller tiers
❌ "On fait pas de daily bonus" — au lancement non, mais option reste
❌ "On copie Claude Max exactement" — on adapte au vertical Shopify
✅ Curated avec fallback graceful
✅ Marketplace own products M0-M9, tiers M9+
✅ Daily bonus = lever commercial, pas permanent
✅ Inspiré Claude Max, vertical Shopify