Modèle de coût & tarification
Unit economics de Bell — coût par message, tiers d'abonnement, marges brutes, dimensionnement par hôtel.
Bell est rentable dès le tier Starter grâce au prompt caching. Un hôtel moyen de 100 chambres génère ~3 600 messages/mois pour un coût AI all-in de ~$11. Facturé 199 €/mois en tier Pro, la marge brute AI est de ~92%. Cette page documente la formule et les hypothèses pour pouvoir ajuster le pricing en fonction des retours terrain.
Formule de coût par message
Un message concierge = 1 requête Claude Messages API + 1 embedding query OpenAI.
coût_message = coût_input + coût_output + coût_embedding
où :
coût_input = tokens_cached × $0.10/MTok + tokens_uncached × $1/MTok
+ (si 1er msg session) tokens_cached × $2/MTok (write 1h)
coût_output = tokens_output × $5/MTok (Haiku 4.5)
coût_embedding = tokens_query × $0.02/MTok ≈ toujours négligeableDécomposition typique (Haiku 4.5 + prompt caching 1h)
Sur un message "moyen" d'une session guest (tours 2-10, cache hit) :
| Composant | Tokens | Prix/MTok | Coût |
|---|---|---|---|
| System prompt statique (cached) | 4 500 | $0.10 | $0.00045 |
| KB chunks dynamic (uncached) | 500 | $1.00 | $0.00050 |
| Tools + context divers (cached) | 500 | $0.10 | $0.00005 |
| Conversation history (uncached) | 1 000 | $1.00 | $0.00100 |
| User message (uncached) | 50 | $1.00 | $0.00005 |
| Input total | $0.00205 | ||
| Output réponse concierge | 100 | $5.00 | $0.00050 |
| Embedding query retrieval | 20 | $0.02 | ~$0 |
| Total message (cache hit) | ~$0.0026 |
Sur le 1er message d'une session (write cache + reads) :
| Composant | Coût |
|---|---|
| Cache write 1h (5 000 tokens × $2/MTok) | $0.010 |
| Input uncached (1 050 tokens × $1/MTok) | $0.001 |
| Output (100 tokens × $5/MTok) | $0.0005 |
| Total premier message | ~$0.012 |
Coût moyen sur une session de 10 messages
session = 1 × $0.012 + 9 × $0.0026 = $0.035
≈ $0.0035 par message en moyenne (0.35 ¢)Sans cache (baseline avant optim) : $0.015/message × 10 = $0.15 sur la même session → 4.3× plus cher.
Dimensionnement par hôtel
Hypothèses de trafic
Hôtel "moyen" = 100 chambres, citadin, 4⭐ :
| Paramètre | Valeur |
|---|---|
| Taux d'occupation annuel | 80% |
| % guests qui engagent Bell | 60% |
| Chats initiés / guest actif | 3 par séjour |
| Messages / chat | 5 |
| Séjour moyen | 2 nuits |
Messages/mois = 100 chambres × 80% × 60% × 3 chats × 5 msgs × 15 jours ≈ 10 800Conservatisme : on retient 3 600 msgs/mois (grossièrement le tiers) pour absorber la courbe d'adoption des 3 premiers mois.
Coût AI all-in par hôtel/mois
| Poste | Formule | Coût |
|---|---|---|
| Messages concierge (Haiku 4.5 + cache) | 3 600 × $0.0035 | $12.60 |
| Embeddings ingestion KB | 100 articles × $0.004 | ~$0.50/an (amortized: $0.04/mois) |
| Embeddings retrieval | inclus dans coût message | ~$0 |
| Web search (tier Pro, ~20% des queries) | 720 × $0.01 | $7.20 |
| Total sans web search | ~$13/mois | |
| Total avec web search | ~$20/mois |
Tarification proposée
| Tier | Chambres | Prix/mois | Messages inclus | Coût AI réel | Marge brute AI | Overage |
|---|---|---|---|---|---|---|
| Starter | < 50 | 79 € | 1 500 | ~$5 | ~94% | 0.05 €/msg |
| Pro ⭐ | 50-150 | 199 € | 5 000 | ~$16 | ~92% | 0.04 €/msg |
| Business | 150-300 | 399 € | 12 000 | ~$38 | ~90% | 0.03 €/msg |
| Enterprise | 300+ / multi-sites | sur devis (dès 799 €) | illimité + SLA + custom | variable | ~85% | — |
Addons
| Addon | Prix | Inclus | Coût réel |
|---|---|---|---|
| Web Search (tier Starter/Pro) | +29 €/mois | 500 recherches | $5 |
| PMS Integration (Mews, Opera) | +49 €/mois | 1 provider actif | négligeable |
| Multi-hôtel chain (par site add.) | +20% du tier | — | — |
| Priority support 24/7 | +99 €/mois | response <1h | main d'œuvre |
Projection ARR par cohorte
100 hôtels Pro × 199 € × 12 = 238 800 € ARR
Coût AI réel = 100 × $16 × 12 ≈ 19 200 € (~17 600 €)
Marge brute AI = 221 200 € (~92.6%)Cette marge couvre :
- Infra (Dokploy + Postgres + Traefik) ≈ 3k €/an
- Support L1/L2 (0.5 ETP à 25k €/an) ≈ 12.5k €
- Dev produit continu ≈ 60k €
- Sales & onboarding ≈ 30k €
Reste ~115 k € de contribution positive à l'EBITDA sur une cohorte de 100 hôtels.
Instrumentation coût
Chaque message stocke son usage Claude dans message.metadata.aiTokens :
metadata: {
model: "claude-haiku-4-5-20251001",
aiTokens: {
inputTokens: 1500,
outputTokens: 100,
cachedInputTokens: 4500, // read cache hit
cacheCreationInputTokens: 0, // write (1er msg session)
},
// ...
}Cela permet :
- Dashboard
/admin/cost-monitoring: coût agrégé par org/mois. - Facturation d'overage automatique (trigger quand msgs > inclus).
- Détection d'anomalies (spike de tokens = prompt trop long ou loop).
- Audit vs budget pour chaque tier.
Formule d'agrégation SQL (draft)
SELECT
o.id,
o.name,
COUNT(m.id) AS messages_count,
SUM((m.metadata->'aiTokens'->>'inputTokens')::int) AS uncached_input,
SUM((m.metadata->'aiTokens'->>'cachedInputTokens')::int) AS cached_input,
SUM((m.metadata->'aiTokens'->>'outputTokens')::int) AS output,
-- Coût estimé en USD (Haiku 4.5)
ROUND(
SUM((m.metadata->'aiTokens'->>'inputTokens')::int) * 0.000001 +
SUM((m.metadata->'aiTokens'->>'cachedInputTokens')::int) * 0.0000001 +
SUM((m.metadata->'aiTokens'->>'outputTokens')::int) * 0.000005,
4
) AS estimated_cost_usd
FROM conversation c
JOIN message m ON m.conversation_id = c.id
JOIN organization o ON o.id = c.organization_id
WHERE m.role = 'assistant'
AND m.created_at >= NOW() - INTERVAL '30 days'
GROUP BY o.id, o.name
ORDER BY estimated_cost_usd DESC;Sensibilité & scénarios
Si on enlève le prompt caching
| Métrique | Avec cache | Sans cache | Δ |
|---|---|---|---|
| Coût/message moyen | $0.0035 | ~$0.015 | ×4.3 |
| Coût/hôtel/mois (3 600 msgs) | $13 | $54 | ×4.2 |
| Marge tier Pro | 92% | 73% | −19 pts |
Sans cache, le tier Starter devient déficitaire sur les hôtels très actifs (marge < 50%). Le cache est donc non-optionnel pour viabilité économique.
Si on switche tout sur Sonnet 4.6
| Métrique | Haiku 4.5 | Sonnet 4.6 |
|---|---|---|
| Prix input | $1/MTok | $3/MTok |
| Prix output | $5/MTok | $15/MTok |
| Cache read | $0.10 | $0.30 |
| Coût/message | $0.0035 | ~$0.010 |
Sonnet 4.6 = 2.8× plus cher mais qualité raisonnement supérieure + support web search. Stratégie Bell : Sonnet 4.6 uniquement sur tier Enterprise (clients qui valorisent la qualité premium et acceptent un prix plus élevé).
Si Anthropic change les prix (+50%)
| Métrique | Actuel | +50% |
|---|---|---|
| Coût/message (Haiku) | $0.0035 | $0.0053 |
| Coût/hôtel/mois Pro | $16 | $24 |
| Marge brute tier Pro | 92% | 88% |
On reste confortable même avec une hausse significative.
Variables clés à monitorer
- Cache hit rate (
cachedInputTokens / (cachedInputTokens + inputTokens)) — cible > 80%. - Moyenne tokens/message — si ça dérive >6 000 input, audit du prompt pour trouver le bloat.
- Output tokens avg — cible < 150. Si >200, Claude est bavard → ajuster prompt.
- Messages/hôtel actif — benchmark pour calibrer les tiers.
- % escalation tickets — trop d'escalations = IA pas assez utile. Trop peu = IA qui invente.
Ces métriques sont visibles dans le dashboard /admin/cost-monitoring.
Références
- Anthropic API & Prompt Caching — tarifs détaillés
- Embeddings & RAG — pipeline KB
packages/api/src/services/ai/claude.ts— implémentation cachingpackages/db/src/schema/conversations.ts—MessageMetadatatype