feat(translation): quality pipeline overhaul + new features (audit 2026-08-29)
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m20s

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)
This commit is contained in:
2026-08-29 18:38:09 +02:00
parent 992f13d53c
commit 526c87348f
87 changed files with 6996 additions and 1024 deletions

View File

@@ -0,0 +1,61 @@
# Spec de Production des Assets Visuels
> Checklist de production des assets marketing. Priorités : P0 = bloquant pour le lancement, P1 = semaine 1, P2 = semaine 2.
## P0 — Bloquant pour le lancement
### 1. Captures d'écran (8) — PNG, 1280×720 minimum, fond clair + sombre
| # | Capture | Usage | Source |
|---|---|---|---|
| 1 | Page d'accueil / hero (drop-zone) | Landing, réseaux | `office-translator-landing-page` |
| 2 | Upload en cours (fichier chargé, langues sélectionnées) | Démo du workflow | Idem |
| 3 | **Résultat côte à côte** (original vs traduit, format intact) | Preuve qualité | Backend + dashboard |
| 4 | Sélecteur de moteur (Google/DeepL/LLM) | Fonctionnalité clé | Idem |
| 5 | Interface glossaire | Différenciation | Dashboard |
| 6 | Dashboard (statistiques, quota) | Crédibilité | `/dashboard` |
| 7 | Page pricing (4 plans) | Conversion | Landing `#pricing` |
| 8 | Profil / historique | Confiance | Dashboard |
**Outil recommandé** : Playwright (script de capture automatisée pour les états dynamiques : upload en cours, progression de traduction).
### 2. Vidéo démo 6090 s (« How it works ») — MP4 1080p, sous-titres FR + EN
Script :
1. (05 s) Logo + tagline animé
2. (515 s) Problème : « Traduire un Excel de 50 pages sans casser le format ? »
3. (1540 s) Démo accélérée : upload → langues → moteur → traduction → téléchargement
4. (4055 s) Split-screen original/traduit, zoom sur tableaux et images intacts
5. (5565 s) CTA « Essayez gratuitement » + URL
### 3. OG Image — 1200×630 px
Logo + tagline + capture résultat côte à côte. Utilisée pour X, LinkedIn, Product Hunt, partages.
### 4. GIF workflow 15 s
Boucle upload → traduction → téléchargement (extraire de la vidéo démo). Pour le thread X et Product Hunt.
## P1 — Semaine 1
### 5. Logo
SVG version claire + sombre, icône seule + avec texte « Office Translator » / « Wordly.art ».
### 6. Favicon
32×32 et 16×16, ICO + PNG.
### 7. Bannière GitHub
1280×640 px pour le README du repo.
### 8. Infographie « Pourquoi Office Translator »
Comparatif avant/après (pipeline standard vs en place), 1 colonne, partageable.
### 9. Tutoriel YouTube 35 min
Screencast + voiceover : création de compte, upload, glossaires, moteurs, téléchargement.
## P2 — Semaine 2
### 10. Templates e-mails (5)
Bienvenue, « votre premier document », éducation glossaire, offre d'upgrade, réactivation.
### 11. Kit réseaux sociaux
12 visuels (4 avant/après, 4 astuces, 4 mises à jour) au format 1080×1350 (LinkedIn) + 1600×900 (X).
## Validation
Chaque asset P0 est validé par : (a) exactitude technique (pas de capture d'un état impossible), (b) lisibilité au format cible, (c) cohérence de la charte (couleurs `--accent` oklch(0.555 0.17 250), police Geist).

View File

@@ -0,0 +1,49 @@
# Product Hunt — Listing & Maker Comment
> Statut : prêt à publier (Phase 2, J0). À remplir avec les assets réels avant le lancement.
## Tagline
**Translate your Excel, Word, PowerPoint & PDF — keep the format perfect.**
## Nom affiché
Office Translator (by Wordly.art)
## Description courte (160 car.)
Translate office documents without losing the layout. Merged cells, formulas, tables, slides — translated in place, by the engine you choose.
## Description longue
Google and DeepL flatten your files into plain text. We don't.
Office Translator translates Excel, Word, PowerPoint **and PDF** **in place**: merged cells, formulas, fonts, borders, headers, footers, tables and slide layouts survive intact. Even scanned PDFs are handled via OCR (Mistral), and text inside images is translated via vision models.
Pick the engine per document — 7 providers:
- **Google** (free, fast)
- **DeepL** (best for business text)
- **Google Cloud**
- **LLM engines**: OpenRouter (eco & premium tiers: DeepSeek, Gemini, Claude), OpenAI, Grok by xAI — for complex, context-aware translations
Plus:
- **Custom glossaries** — lock your HVAC, legal or medical terminology across every document
- **60+ languages**
- **Private by design** — uploads deleted after 30 min, results auto-deleted within 2 h, never used to train models
- **API** on the Business plan (10,000 calls/mo) for your own tooling
Pricing: Free (2 docs/mo) · Starter €9 · Pro €19 · Business €49 · Enterprise custom. Yearly = 20%.
## Maker comment (à publier par le fondateur, 9 h EST)
> We built Office Translator because every other tool broke our layouts.
>
> The hard part wasn't translation — it was **re-integrating** the text. Our pipeline parses the document structure (cells, runs, shapes), extracts only translatable content, translates it (your choice of 7 engines), and writes it back into the **same** XML structure. Formulas, merges, fonts, borders: untouched.
>
> What I'd love your feedback on:
> 1. Which engine do you trust most for business documents — DeepL or an LLM?
> 2. Would you use the API (Business plan) to wire it into your own workflow?
> 3. PDF (incl. scanned, via OCR) is already in. Which format should we tackle next — IDML, CSV, something else?
>
> Free plan = 2 full documents/month, no card. Link in comments.
## Checklist de publication
- [ ] Assets: logo (1200×630 OG + 600×400), 3 screenshots (résultat côte à côte, sélecteur moteur, glossaire)
- [ ] 5 commentaires amis planifiés (réponses de qualité, pas de upvote-only)
- [ ] E-mail aux 150+ contacts de la waitlist (J-2) : « On lance demain, votez + testez »
- [ ] Thread X croisé au lancement

View File

@@ -0,0 +1,65 @@
# Reddit — 3 Posts de Lancement
> Statut : prêts à publier (Phase 2). Adapter le ton par subreddit. Pas de lien brut dans le 1er post sur r/SideProject (shadowban) — lien en commentaire.
---
## 1. r/SideProject
**Titre :** I built a tool that translates Excel/Word/PowerPoint without destroying the formatting. Free plan = 2 docs/mo.
**Corps :**
> Hi all — I've been building **Office Translator** for a while and I'm launching it this week.
>
> **The problem:** every translation tool I tried (Google, DeepL) flattens your file into plain text. Merged cells gone, formulas replaced by their computed values, slide layouts destroyed. You end up spending more time fixing the format than the translation saved you.
>
> **What I did instead:** the pipeline parses the document structure, extracts only the translatable content, translates it, and writes it back into the **same** structure. Merges, formulas, fonts, borders, headers/footers, table styles — untouched. Text inside images is handled by vision models.
>
> **Tech:** FastAPI (async), openpyxl / python-docx / python-pptx, 7 translation engines the user picks per document (Google, DeepL, Google Cloud, OpenRouter éco & premium, OpenAI, Grok/xAI), Stripe billing, Docker/Postgres/Redis.
>
> **Pricing:** Free (2 docs/mo, no card) → Starter €9 → Pro €19 → Business €49 (API included).
>
> I'd love feedback from anyone who deals with international documents. What's the nastiest format you've tried to translate?
>
> (Link in comments to avoid the filter.)
**Commentaire n°1 (lien) :**
> Here's the landing page: [URL]. Free plan, no card. The /docs page has the full API reference if you want to poke at the API.
---
## 2. r/translator
**Titre :** We built a document translator that preserves formatting — curious how you'd use it (or wouldn't)
**Corps :**
> Hi, I'm the dev behind Office Translator (Wordly.art). Before I pitch anything: we know translators are the ones who actually feel the pain when a machine mangles a layout, so I'd rather ask than sell.
>
> The tool translates .xlsx / .docx / .pptx **in place** — structure, formulas, tables and styles are preserved — and supports **custom glossaries**, which is the feature I'd value your opinion on most:
>
> 1. Is glossary-based consistency (e.g. a fixed HVAC or legal term list) actually useful to you, or do you already solve this differently?
> 2. For which document types is the format preservation worth paying for, vs. where a human review still beats any tool?
> 3. What would make you trust an output enough to skip a full re-read? (confidence scores? diff view? per-segment override?)
>
> It's aimed at agencies and in-house teams as a **first pass** to cut turnaround — not to replace the translator. I'd genuinely like to hear what would make it a tool you'd recommend to a colleague.
> ⚠️ Ce subreddit est hostile au self-promo : publier en tant que dev transparent, répondre à chaque commentaire, jamais de lien dans le post.
---
## 3. r/smallbusiness
**Titre :** How do you translate client documents (Excel/Word/PowerPoint) without losing the formatting? We built a tool for this.
**Corps :**
> Running a business that works internationally means a lot of documents that need translating — pricing sheets, contracts, slide decks, training files.
>
> The usual options all hurt somewhere:
> - **Human translators:** great quality, 50100× the cost and a multi-day turnaround
> - **Google/DeepL:** cheap and fast, but they flatten the file — merged cells, formulas, slide layouts get destroyed, so someone has to rebuild the document
>
> We built **Office Translator** to kill that middle step: it translates the document **in place** and gives you back a file that looks like it was written in the target language from the start. You pick the engine (7 options, from free Google to premium LLMs), and you can lock your company terminology with a custom glossary so "unité de froid" is never suddenly "cold unit".
>
> Free plan: 2 documents/month, no card. From €9/mo after that. Uploads are deleted after 30 minutes and results within 2 hours.
>
> If you handle international documents, what's your current workflow and where does it break? Curious what I'm missing.

View File

@@ -0,0 +1,31 @@
# Hacker News — Show HN
> Statut : prêt à publier (Phase 2, J0 matin EST). Soumettre via « Show HN » — pas de self-upvote.
## Titre
**Show HN: Office document translation that preserves the formatting**
## Corps
> I built **Office Translator** (Wordly.art) because every document translator I used — Google, DeepL, the one-shot tools — destroyed the layout. Translating a 50-page Excel pricing matrix meant getting back a text dump: merged cells gone, formulas replaced by computed values, slide decks unrecognizable. The translation was 5% of the job; fixing the format was 95%.
>
> So I made the format-preservation the product:
>
> - **In-place translation** for .xlsx / .docx / .pptx / .pdf. The pipeline parses the native structure (cells + merges + formulas, paragraph runs + styles, slide XML + shapes), extracts only translatable content, translates it, and writes it back into the *same* structure. Output looks like it was authored in the target language.
> - **Scanned PDFs work too**: image-only pages are recovered with OCR (Mistral) before translation — most competitors (DeepL, Azure) reject those outright.
> - **7 engines, user's choice per document**: Google (free), DeepL, Google Cloud, OpenRouter LLMs in two tiers (DeepSeek / Gemini / Claude), OpenAI, and Grok (xAI). Cheap engine for drafts, premium LLM for client deliverables.
> - **Custom glossaries** to lock technical/legal/medical terminology across documents.
> - **Vision translation** for text inside images (paid plans).
> - **Privacy**: uploads deleted after 30 min, results auto-deleted within 2 hours, zero data retention, content never used for training.
> - **API** on the Business plan (10k calls/mo) — the web workflow is fully mirrored: submit file, poll job, download.
>
> Stack: FastAPI (Python 3.11), openpyxl / python-docx / python-pptx, PyMuPDF, Postgres + Redis, Stripe, Docker, Next.js 15 frontend.
>
> Free plan: 2 documents/month, no card. I'd love feedback from people who've worked on document-format-preserving pipelines — what edge cases do I not handle yet? (PDF incl. scanned/OCR is already in — next candidates are IDML and CSV.)
>
> https://wordly.art
## Notes de publication
- Soumettre à 89 h EST, mardijeudi
- Répondre à chaque commentaire dans les 2 h ; rester technique, pas commercial
- Pas de « upvote my post » — c'est interdit sur HN
- Préparer 23 réponses techniques de poches : formule Excel + localisation (format de nombre), fusion de cellules + traduction, gestion des runs mixtes (gras/italique au milieu d'un paragraphe)

View File

@@ -0,0 +1,102 @@
# X / Twitter — Thread de Lancement (12 tweets)
> Statut : prêt à publier (Phase 2, J0). Publier en thread (Reply chain), pas en post unique.
> Assets requis : GIF 15 s du workflow (voir assets-spec.md), capture résultat côte à côte.
**T1 (accroche + GIF)**
Your Excel got translated.
Now fix the 47 broken merged cells, 12 dead formulas and the slide deck that lost its layout.
That's what "free" translation tools actually cost.
We built the opposite. Thread:
**T2 (le problème)**
Every translator you've used works the same way:
1. Flatten your document to plain text
2. Translate the text
3. Hope it fits back
The "hope" step is where your afternoon goes.
**T3 (notre approche)**
Office Translator works in place:
• Parse the real structure (cells, runs, shapes)
• Extract ONLY the translatable content
• Translate it
• Write it back into the SAME structure
Merges, formulas, fonts, borders: untouched.
**T4 (preuve)**
[Capture d'écran : résultat côte à côte — original FR vs traduit EN, mêmes colonnes/fusions/formules]
Same file. Different language. Zero reformatting.
**T5 (multi-moteurs)**
You pick the engine per document — 7 options:
• Google — free, fast
• DeepL — best for business text
• Google Cloud
• DeepSeek / Gemini / Claude via OpenRouter — eco & premium LLM tiers
• OpenAI, Grok (xAI)
Cheap for drafts. Premium LLM for the client deliverable.
**T6 (glossaires)**
The feature agencies love: custom glossaries.
Lock "unité de froid → chiller", "clause de résiliation → termination clause" once. Every document after that uses your terminology. Consistent, every time.
**T7 (confidentialité)**
Your documents are not our training data.
• Uploads deleted after 30 min, results within 2 h
• Zero data retention
• Encrypted in transit (TLS)
• No human ever sees your content
**T8 (API)**
Wiring it into your own stack? Business plan includes API access — 10,000 calls/month.
Submit file → poll job → download. Same workflow as the web app. Docs at /docs.
**T9 (prix)**
Pricing (yearly = 20%):
• Free — 2 docs/mo, no card
• Starter — €9
• Pro — €19 (AI translation, glossaries)
• Business — €49 (API, 5 seats)
• Enterprise — custom
A page translated costs a fraction of a cent. A human does the same page for €12.
**T10 (pour qui)**
Built for:
• International SMEs (pricing sheets, contracts, manuals)
• Translation agencies (first-pass + glossaries = faster turnaround)
• Multilingual HR teams
• Anyone who's ever re-built a translated Excel by hand
**T11 (preuve sociale + CTA)**
60+ languages. 7 engines. 100% format preservation.
Free plan = 2 full documents/month, no card required. Test it on your ugliest file.
**T12 (CTA final)**
👉 wordly.art
Launching on Product Hunt today — feedback welcome.
What's the nastiest document format you've ever tried to translate? Reply below, we read everything.
---
## Plan de publication
- J-2 : teaser T1 seul (sans lien)
- J0 : thread complet, 9 h
- J+1 : republier T4 (preuve) + répondre à tous les retweets
- Communautés à taguer : #BuildInPublic #SaaS #i18n #DevTools (max 2 hashtags)