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
| Risque | Impact | Probabilité | Mitigation |
|---|---|---|---|
| Anthropic monte les prix Sonnet/Opus | Marge écrasée | Haute (12-24m) | Markup ajustable clause CGV + suivi trimestriel + migration possible vers Gemini si écart |
| AI Gateway down 1h+ | Chat dead, frustration | Moyenne | Fallback graceful Anthropic → GPT-4 Turbo + banner UI "Service dégradé" |
| Anthropic deprecate un modèle | Migration forcée | Annual (release cycle) | Vigilance sur EOL dates Anthropic + suivi publié + 6 mois min de buffer |
| Quota AI Gateway en peak | Users payants throttled | Moyenne | Per-tier rate limiting + queue front-end |
| Anthropic change leurs TOS | Features pivot ou retiré | Faible | Lecture trimestrielle des TOS + diversification modalités |
| OpenAI/Google changent prix | Image/voice marge écrasée | Moyenne | Idem markup ajustable |
| Fournisseur lance un produit Shopify direct | Concurrent gratuit | Faible | Notre 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 :
outageFallbackForne 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
- 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.
- Fallback graceful sur outage (auto-switch GPT-4 Turbo sur 5xx errors > 3 retries)
- Caching agressif sur queries répétitives (audit, scan) : économie 30-50%
- BYOK sur Custom — enterprise users apportent leurs clés
- Markup ajustable dans les CGV
- Suivi quarterly des prix providers + benchmarks
2. Risques niche Shopify
| Risque | Impact | Mitigation |
|---|---|---|
| Shopify Magic (concurrent dans leur écosystème) | Magic gratuit pour tout merchant Shopify | Notre profondeur > leur largeur. Magic = basic copy/image. Nous = orchestration multi-agent + workflows + marketplace |
| Shopify Theme Store / App Store | Marketplaces existants, énorme audience | Nous ne sommes pas un app, on est une plateforme. Apps Shopify = building blocks via MCP |
| Shopify API version deprecation | Code legacy casse | Skill shopify-version-monitor à créer + alertes proactives |
| Custom App client_credentials retrait par Shopify | Tous les users devraient reconnecter | Implémenter OAuth Authorization Code grant en plus de client_credentials |
| Webhooks Shopify manqués (Shopify ne garantit pas 100%) | Drift entre notre DB et Shopify | Reconciliation cron quotidien sur events critiques (orders, inventory) |
| Confusion test store vs live store | User déploie sur le mauvais store | UI confirmation modale + label "PRODUCTION" rouge sur shell quand store live |
| Shopify API rate-limit hit | Tous users d'une org bloqués | Per-store rate limiter Upstash + queue tools calls |
| Shopify Plus tier-only features | Code marche pas sur Basic | Capability check avant toute mutation |
3. Items critiques à verrouiller AVANT lancement
A. Sécurité & isolation
| Item | État | Priorité |
|---|---|---|
| Multi-tenancy strict (orgId scoping partout) | ✅ Implémenté via getOrgAccess | Audit 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 | ⚠️ Partiel | Phase 1 critique |
| Rollback capability (undo product/theme change) | ❌ Pas implémenté | Phase 1 critique |
| PII handling (customer/order data) | ⚠️ Pas de DPA explicite | Phase 1 critique |
| GDPR right to deletion | ✅ Endpoint existe | OK |
| Tenancy data leak protection (test cross-org) | ⚠️ Pas de tests automatisés | Phase 1 critique |
B. Cost controls (runaway agent)
| Item | État | Priorité |
|---|---|---|
| Pre-stream credits gate | ✅ Implémenté | OK |
| Mid-stream hard cap (AbortSignal) | ✅ Implémenté | OK |
| Per-conversation $ cap | ❌ Pas de cap | Phase 1 critique |
| Per-tool $ cap (un tool ne peut pas burn $50 d'Opus) | ❌ Pas de cap | Phase 2 |
| Workflow-level $ cap | ❌ Pas de cap | Phase 6 |
| Daily org $ cap user-defined | ❌ Pas de cap | Phase 2 |
| Agent loop detection (infinite delegation) | ⚠️ Step counter mais pas de cycle detection | Phase 2 |
C. Data integrity (Shopify writes)
| Item | État | Priorité |
|---|---|---|
| Idempotency keys sur tous les writes Shopify | ⚠️ Partiel | Phase 1 critique |
| Confirmation modal avant action destructive | ⚠️ Pas systématique | Phase 1 critique |
| Theme Live protection runtime (pas juste rule) | ⚠️ Rule mais pas enforcement code | Phase 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ée | Phase 2 |
D. Operational reliability
| Item | État | Priorité |
|---|---|---|
| Sentry / error monitoring | ⚠️ À configurer | Phase 1 |
| Structured logging | ✅ Existant | OK |
| Health checks endpoints | ⚠️ Partiel | Phase 1 |
| Graceful degradation (Shopify API down) | ⚠️ Pas systématique | Phase 1 |
| AI Gateway timeout handling | ⚠️ Pas systématique | Phase 1 |
| AI Gateway fallback Anthropic → OpenAI | ✅ Existant | OK |
| 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 perdu | OK |
| Database backup test (Neon snapshot restore) | ⚠️ Auto-backup mais pas testé | Phase 1 |
E. Compliance & légal
| Item | État | Priorité |
|---|---|---|
| CGV / TOS publiés | ❌ À rédiger | Phase 1 critique |
| Privacy Policy | ❌ À rédiger | Phase 1 critique |
| DPA (Data Processing Agreement) | ❌ À rédiger | Phase 1 critique |
| Cookie consent GDPR | ⚠️ Partiel | Phase 1 |
| Stripe Tax setup complet | ⚠️ Activé mais nexus US à reviewer | Phase 1 |
| 1099-K Connect setup pour sellers | ⚠️ Auto si Connect Express activé | Phase 3 |
| Markup ajustable clause CGV | ❌ À ajouter | Phase 1 critique |
4. Notre vrai moat (ce qu'on contrôle 100%)
Non clonable par Anthropic ou par un nouveau concurrent qui démarre :
| Moat | Pourquoi c'est défendable |
|---|---|
| Domain expertise embedded | Nos 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 context | Chaque 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 library | Chaque workflow créé par la communauté = un asset qu'on monétise. Compounding. |
| Trust + audit trail | Les merchants nous donnent accès à leur store. Cette confiance s'acquiert lentement, ne se clone pas. |
| Vertical SEO + content | Articles Shopify, vidéos formation, présence YouTube. Moat marketing. |
| Customer data ownership | Avec 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