Files
office_translator/MARKETING_PLAN.md
sepehr 526c87348f
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m20s
feat(translation): quality pipeline overhaul + new features (audit 2026-08-29)
Translation quality & format preservation:
- Word: merge adjacent same-format runs into one unit (sentence-level
  coherence like inline-tag handling); translate comments/balloons;
  dedupe textbox collection (was translated twice); RTL no longer
  overrides center/justify alignment; CJK/Arabic font hints (eastAsia/cs)
- PPTX: chart translations now actually reach the output file
  (ChartPart.blob is read-only — rewrite chart XML in the saved ZIP);
  CJK typeface hints (a:ea)
- Excel: sheet renames no longer break references — rewrite cell
  formulas (3D/quoted), defined names, data validations, cond. formats
- PDF: bold/italic honored (hebo/heit/hebi); table cells never merge;
  unchanged blocks left untouched (typography preserved, fixes duplicate
  hyperlinks); attempted/changed stats + route gate now cover PDF;
  CJK font paths; scanned PDFs via Mistral OCR (detection + admin settings)

Features:
- formality param (formal/informal) + automatic regional-variant prompts
- output_mode=bilingual docx (source above translation)
- per-user translation memory on Redis (falls back to LRU), context-hashed
- QA report + 0-100 confidence score in job status; L0 on by default
- OpenAI-compatible providers: whole chunk in ONE numbered-JSON request
  (~15x fewer calls) with per-item fallback; base prompt always present
  (custom prompt no longer replaces translation instructions)

Infra & marketing alignment:
- plan-based engine gating + vision gating (closes paid-engine leak);
  /providers/available filtered per plan; 107 languages exposed
- zh-CN/zh-TW validation fixed; libmagic disabled on Windows (native crash)
- admin: Mistral OCR settings + engine status dashboard; httpx<0.28 pin
  (TestClient breakage); Prometheus test fixture fixed
- marketing docs aligned with code (PDF+OCR, retention, engines, pricing)
- security: .env.ionos/.env.production/provider_settings.json removed

Tests: 1173 passed / 0 failed (6 network tests deselected: free Google
endpoint temporarily blocked from this machine)
2026-08-29 18:38:09 +02:00

209 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan Marketing — Office Translator (Wordly.art)
> Document de référence pour l'agent marketing. Dernière mise à jour : 2026-08-29
>
> **Changements majeurs vs. version du 2026-05-10**
> 1. **Le billing est réellement implémenté** (Stripe : checkout, webhooks, portail, crédits) — la section tarifaire est désormais ancrée sur les plans réels du backend (`models/subscription.py`, `services/pricing_config.py`), plus sur des tiers fictifs.
> 2. **La landing page est fonctionnelle** : sections pricing, FAQ, preuve sociale, capture d'e-mail (waitlist) et analytics (Vercel Analytics) sont déployées dans `office-translator-landing-page/`.
> 3. **Un endpoint public d'inscription** existe : `POST /api/v1/waitlist` (dédoublonné, persisté dans `data/waitlist.json`), compteur `GET /api/v1/waitlist/count`.
> 4. La mention « SOC 2 Compliant » (infondée) a été retirée du footer.
>
> **Alignement code du 2026-08-29** (voir `docs/marketing/PLAN-ALIGNEMENT-CODE.md`) : le PDF est supporté (dont **PDF scannés via OCR Mistral**) et l'ajoutera à tous les supports ; rétention réelle = envois 30 min / résultats ≤ 2 h ; les moteurs vendus sont exactement ceux des plans (`PLANS[plan]["providers"]`, désormais appliqué côté API) ; 100+ langues exposées via `/api/v1/languages`.
---
## 1. Positionnement & Proposition de Valeur
### Le Produit
**Office Translator** (marque **Wordly.art**) est un SaaS de traduction de documents professionnels (Word, Excel, PowerPoint, **PDF — y compris scannés, via OCR**) qui **préserve la mise en forme, les formules, les tableaux, les images et les styles** du document original. L'utilisateur choisit son moteur de traduction par document.
> Nommage : « Office Translator » est le nom du dépôt / nom de travail interne ; **Wordly.art** est la marque publique (domaine de lancement, landing, footer). Le footer de la landing affiche donc « Wordly.art » — c'est intentionnel.
### Accroche unique (USP)
> « Traduit en place. Zéro perte de mise en page. »
Contrairement à Google Translate (qui aplatit le fichier en texte brut) ou à DeepL (formatage limité), le moteur translate *in place* : cellules fusionnées, formules Excel, en-têtes/pieds de page Word, animations PowerPoint restent intacts. Les PDF scannés (pages image) sont récupérés par **OCR Mistral** avant traduction — DeepL et Azure les refusent. Les textes dans les images sont traduits via des modèles vision (plans payants).
### Différenciateurs
| Différenciateur | Détail | Preuve produit |
|---|---|---|
| Préservation du format | Structure préservée (formules, fusions, styles) ; PDF scannés via OCR | openpyxl / python-docx / python-pptx / PyMuPDF + `services/mistral_ocr.py`, tests de réintégration |
| Multi-moteurs (7) | Google, DeepL, Google Cloud, OpenRouter éco **et** premium, OpenAI, Grok (xAI) — grille appliquée côté API par plan | Choix par document, `PLANS[plan]["providers"]` |
| IA contextuelle | Traduction LLM contextuelle (DeepSeek / Claude / Gemini) sur plans payants | `ai_translation` + `ai_tier` |
| Glossaires techniques | Terminologie personnalisée (CVC, IT, Légal, Médical…) | `routes/glossary_routes.py` |
| 60+ langues | 100+ codes validés, exposés via `/api/v1/languages` | `middleware/validation.py` |
| Confiance | Suppression auto des fichiers (envois 30 min, résultats ≤ 2 h), TLS, jamais utilisé pour l'entraînement | `config.py` (TTLs), docs sécurité |
### Segments cibles (priorisés)
| Segment | Douleur | Taille | Priorité | Message clé |
|---|---|---|---|---|
| **PME internationales** (export, docs commerciaux/techniques récurrents) | Traducteurs humains chers et lents, formats cassés | Grand | **P1** | « Le coût par page, sans casser le format » |
| **Agences de traduction** (productivité) | Revue manuelle des mises en page, marges écrasées | Moyen | **P1** | « 7 moteurs au choix, glossaires partagés, 5 sièges » |
| **Départements RH multilingues** (contrats, onboarding) | Volume saisonnier, terminologie juridique | Moyen | P2 | « Glossaires légaux + volume Business » |
| **Freelances / consultants** | Outils gratuits qui détruisent leur travail | Grand | P2 | « 2 docs gratuits/mois, Starter à 9 € » |
| **Étudiants & académiques** | Budget nul | Grand | P3 (freemium) | « Plan Free, sans carte bancaire » |
---
## 2. Tarification (source de vérité : `models/subscription.py` + `services/pricing_config.py`)
**Monnaie : EUR. Billing Stripe implémenté (checkout, webhooks, portail client, crédits à l'unité).**
| Plan | Mensuel | Annuel (20 %) | Docs/mois | Pages/doc max | Fichier max | Moteurs | IA | API |
|---|---|---|---|---|---|---|---|---|
| **Free** | 0 € | — | 2 | 10 | 5 Mo | Google | Non (filigrane) | Non |
| **Starter** | 9 € | 7,20 €/mois | 50 | 50 | 10 Mo | Google, DeepL | Non | Non |
| **Pro** ★ populaire | 19 € | 15,20 €/mois | 200 | 200 | 25 Mo | + Google Cloud, OpenRouter | Essentielle (DeepSeek) | Non |
| **Business** | 49 € | 39,20 €/mois | 1 000 | 500 | 50 Mo | + OpenAI, x.ai/Zai, premium | Premium (Claude/Gemini) | Oui, 10 000 appels/mois, 5 sièges |
| **Enterprise** | sur demande | sur demande | illimité | illimité | illimité | + custom | custom | illimitable |
**Paquets de crédits** (au-delà des quotas, sans changer d'abonnement) : 50 cr. 5 € · 100 cr. 9 € · 250 cr. 20 € · 500 cr. 35 € · 1 000 cr. 60 € (0,060,10 €/page).
### Message tarifaire
- **Ancrage** : coût par page vs traduction humaine (50100× moins cher) et vs réfection manuelle après Google Translate.
- **Freemium réel** : le plan Free (2 docs/mois, sans carte) sert d'essai — c'est le « free trial » opérationnel.
- **Transparence** : les prix exacts ci-dessus sont ceux du backend (`models/subscription.py` + `services/pricing_config.py`) ; toute promo est gérée via `data/pricing_overrides.json` (admin). À noter : la section pricing de la landing (`components/pricing-section.tsx`) est un **miroir statique** de ces plans (constante `PLANS`) — aucun prix n'est généré automatiquement, donc tout changement de prix/fonctionnalité doit être répercuté **à la main** dans ce composant et dans ce document le même jour.
---
## 3. Actifs Marketing en Place (état 2026-08-29)
| Actif | Statut | Emplacement |
|---|---|---|
| Landing page (hero, démo de traduction) | ✅ | `office-translator-landing-page/` (Next.js 15 + Tailwind) |
| Section **Pricing** (4 plans + toggle mensuel/annuel + bannière Enterprise) | ✅ | `components/pricing-section.tsx` |
| Section **FAQ** (10 questions) | ✅ | `components/faq-section.tsx` |
| Section **Preuve sociale** (stats vérifiables : 60+ langues, 7 moteurs, 100 % format, TTL 60 min + 3 témoignages génériques à remplacer par de vrais clients) | ✅ | `components/social-proof-section.tsx` |
| **Capture d'e-mail** (waitlist : e-mail + segment d'intérêt) | ✅ | `components/waitlist-section.tsx``POST /api/v1/waitlist` |
| **Analytics** (Vercel Analytics : pages, événements, heatmaps) | ✅ | `app/layout.tsx` (`@vercel/analytics`) |
| Footer corrigé (mention SOC 2 retirée) | ✅ | `app/page.tsx` |
### À produire avant le lancement (voir §6, checklist)
- 8 captures d'écran réelles de l'interface (héros, upload, résultat côte à côte, sélecteur de moteur, glossaires, dashboard, pricing, profil)
- Vidéo démo 6090 s + tutoriel 35 min
- GIF 15 s du workflow upload → traduction → téléchargement
- OG image 1200×630 + bannière GitHub + infographie avant/après
- Remplacement des 3 témoignages génériques par 3 témoignages clients réels (objectif : 1 par segment P1/P2)
---
## 4. Canaux de Lancement
### Phase 1 — Pré-lancement (Semaines 12)
| Canal | Action | Responsable | Livrable |
|---|---|---|---|
| Landing page | Publication en prod (Vercel ou Docker) avec URL propre `wordly.art` | Dev | URL + OG image |
| Waitlist | Activation `POST /api/v1/waitlist` en prod ; objectif **150 e-mails** avant lancement | Marketing | Compteur `/api/v1/waitlist/count` |
| Product Hunt | Préparation du listing (assets, tagline, maker comment, 5 commentaires amis planifiés) | Marketing | `docs/marketing/launch/product-hunt.md` |
| Reddit | Rédaction de 3 posts (r/SideProject, r/translator, r/smallbusiness) | Marketing | `docs/marketing/launch/reddit-posts.md` |
| Hacker News | Rédaction du Show HN (angle technique : préservation du format) | Dev | `docs/marketing/launch/show-hn.md` |
| X/Twitter | Thread de lancement (12 tweets + GIF) | Marketing | `docs/marketing/launch/x-thread.md` |
| LinkedIn | Post ciblant PME/agences (fondateur) | Fondateur | Post + 2 relances |
### Phase 2 — Lancement (Semaine 3)
| Jour | Action |
|---|---|
| J-2 | Test du tunnel complet : inscription → 1ère traduction → upgrade Stripe (mode test) |
| J0 | Lancement Product Hunt (mardi/mercredi), Show HN (matin EST), thread X, cross-post Reddit, post LinkedIn |
| J1 | Suivi des commentaires (réponse < 2 h), relance X, e-mail waitlist n°1 « vous êtes dedans » |
| J+7 | E-mail waitlist n°2 : 3 études avant/après + offre de lancement (20 % la 1ʳᵉ année, code via `pricing_overrides.json`) |
### Phase 3 — Croissance (Semaines 48)
| Canal | Action |
|---|---|
| SEO | Publication des 5 articles de blog (§5) ; pages « traduire un excel sans perdre le format », « traduire un powerpoint en anglais » |
| YouTube | Tutoriel 35 min + review avant/après |
| Partenariats | 5 agences de traduction (commission 15 % la 1ʳᵉ année), 3 consultants internationaux, annuaires SaaS français |
| Google Ads | Campagne test (10 €/jour) sur « traduire excel » / « translate powerpoint » uniquement si CAC < 3× marge mensuelle |
| Communautés | Discord/Slack de traducteurs et de devs (Build in public) |
| AppSumo | Lifetime deal Business (optionnel, à valider après semaine 4) |
---
## 5. Stratégie de Contenu
### Articles de blog (SEO) — 5 au lancement, dans `docs/marketing/blog/`
1. **« Comment traduire un fichier Excel sans perdre la mise en forme »** (pilier, 1 500+ mots)
2. **« Les 5 meilleurs outils de traduction de documents comparés (2026) »** (comparatif : nous vs Google, DeepL, Smartling, Transifex, Smartcat)
3. **« Traduction professionnelle de documents : guide complet pour les PME »**
4. **« Pourquoi DeepL et Google Translate détruisent vos documents Excel (et quoi faire) »**
5. **« Auto-héberger son outil de traduction : guide Docker complet »** (capture de l'audience self-hosted)
### Rythme social (répétitif, 3 h/semaine max)
| Type | Fréquence | Plateforme |
|---|---|---|
| Avant/Après document (anonymisé) | 1×/sem. | X, LinkedIn |
| Astuce traduction | 2×/sem. | X |
| Mise à jour produit / build-in-public | selon releases | X, LinkedIn, IndieHackers |
| Témoignage client | au fil de l'eau | toutes |
---
## 6. KPIs & Mesure
### Mesure (déjà branchée)
- **Vercel Analytics** sur la landing (pages, événements, top pages, referrers).
- **Waitlist** : `GET /api/v1/waitlist/count` + segmentation par intérêt (champ `interest`).
- **Backend** : `/health` (monitoring) ; quotas par plan visibles dans le dashboard admin.
### Objectifs
| Métrique | Mois 1 | Mois 3 | Source |
|---|---|---|---|
| Visiteurs uniques landing | 5 000 | 25 000 | Vercel Analytics |
| E-mails waitlist | 150 | 1 500 | `/api/v1/waitlist/count` |
| Inscriptions (tous plans) | 200 | 1 500 | BDD utilisateurs |
| Documents traduits | 500 | 5 000 | Journal de jobs |
| Taux de conversion visite → inscription | 2 % | 4 % | Analytics |
| MRR | variable | variable (cible : 300 abonnements payants) | Stripe |
| NPS | > 40 | > 50 | Enquête post-traduction |
| CAC (Google Ads) | — | < 3× marge mensuelle du plan d'entrée | Ads |
---
## 7. Concurrence (actualisé 2026-08)
| Concurrent | Force | Faiblesse | Notre avantage |
|---|---|---|---|
| **Google Docs (traduction intégrée)** | Gratuit, connu | Détruit les formats complexes, pas de glossaire | Préservation du format + multi-moteurs |
| **DeepL (documents)** | Qualité de traduction | Prix élevé, formatage limité, moteur unique | 7 moteurs au choix, 60+ langues, prix |
| **Smartling / Smartcat** | Complets, TMS | Lourds, chers, surdimensionnés pour une PME | Simplicité + prix accessible |
| **Transifex** | Enterprise i18n | Trop cher, orienté localisation logicielle | Fichiers bureautiques, pas de code |
| **Outils one-shot (DocTranslator, etc.)** | Simple | Qualité inégale, pub, aucune API | Interface pro, glossaires, API Business |
---
## 8. Timeline Recommandée
```
S1-2 : Publication de la landing + waitlist + production des assets (captures, vidéos, GIF)
S3 : Lancement (Product Hunt + Show HN + Reddit + X + LinkedIn) + e-mails waitlist
S4 : 5 articles SEO + YouTube + 5 partenariats agences
S5-6 : Google Ads (test) + communautés + relances
S7-8 : Optimisation (A/B du pricing, témoignages réels, LTV)
```
---
## 9. Checklist Exécutable (état au 2026-08-29)
- [x] Landing page : sections Pricing, FAQ, Preuve sociale, Waitlist
- [x] Endpoint waitlist (`POST /api/v1/waitlist`, dédoublonné) + compteur
- [x] Analytics (Vercel Analytics) branchée sur la landing
- [x] Footer corrigé (SOC 2 retiré)
- [x] Contenu de lancement rédigé (`docs/marketing/launch/`)
- [x] 5 articles de blog rédigés (`docs/marketing/blog/`)
- [x] Spec des assets visuels (`docs/marketing/launch/assets-spec.md`)
- [x] Doc de suivi des KPIs (`docs/marketing/kpis.md`)
- [ ] Publication de la landing page en production (`wordly.art`)
- [ ] 8 captures d'écran réelles de l'interface
- [ ] Vidéo démo 6090 s + tutoriel 35 min
- [ ] GIF workflow 15 s + OG image 1200×630
- [ ] 3 témoignages clients réels (remplacer les génériques)
- [ ] Lancement Product Hunt (assets + 5 commentaires planifiés)
- [ ] Séquence e-mail : 5 e-mails post-inscription
- [ ] Configuration GA4 (optionnel, en complément de Vercel Analytics)
---
*Ce document est la source de vérité marketing. Toute modification de prix passe par `data/pricing_overrides.json` (admin) et doit être répercutée ici le même jour.*