Antalis (KPP Group) — Marketing Automation & Reporting
Multi-source automated reporting, AI-powered translation pipeline and SEO content factory
The Problem
At Antalis (KPP Group), marketing teams faced three distinct problems consuming significant time each month. Reporting: manually consolidating email KPIs (open rates, clicks, unsubscribes, form submissions, ROI) from Eloqua, Qlik Sense and Excel took two full working days per month for the web marketing manager. Translation: every product sheet had to be manually translated into each country's language — repetitive work prone to terminology inconsistencies across technical products. SEO: the texts describing each e-shop item (Product Range, Meta Description, Sales Argument, Applications...) were written manually, one by one, by a dedicated person.
Approach
For reporting: without access to the Eloqua API, I built a Selenium scraper that navigates the Eloqua interface like a user, extracts KPIs campaign by campaign and also retrieves the visual of sent emails. Data is then cross-referenced with Qlik Sense (also scraped, no native API) and team Excel files, then consolidated into a monthly report automatically sent to market managers.
For translation: I first worked with market managers from each country to manually build a technical glossary — the large format printing industry terms that don't translate word for word. This glossary is then injected into the pipeline: DeepL handles the base translation, GPT-4o reformulates taking into account the technical context and glossary terms. When a market manager corrects a translation, the correction automatically feeds back into the glossary for future generations.
For SEO: a person submits a product list. The pipeline automatically searches for information on each product (Google Custom Search + Perplexity), then OpenAI generates the 10 text fields required by the e-shop (Product Range, Title Balise, Meta Description, Sales Argument, Relevant Techniques, Guarantees, Applications, SEO Product Range, Set Up, Storage) structured as JSON, exported to Google Sheets.
Technical Details
Eloqua scraping without API: Selenium drives a real browser with an authenticated session to work around the lack of API access. KPIs are extracted from Eloqua dashboards and the visual rendering of emails is captured via automated screenshot.
Self-learning glossary: market manager corrections are integrated into a feedback loop. Each validated correction updates the glossary file which is reloaded at each new translation session — no technical intervention required.
Multi-model SEO pipeline: Google Custom Search provides sources, Perplexity synthesizes product context, OpenAI generates texts structured as JSON with a prompt parameterized by field type (Meta Description follows different SEO rules than Sales Argument). The JSON output is parsed and injected directly into Google Sheets.
Progressive translation deployment: France and Benelux in production, Switzerland FR and DE in progress, with an architecture designed to scale to all European countries in the Antalis (KPP Group) group without major refactoring.
Challenges & Solutions
The main challenge with reporting was the inherent fragility of interface scraping: Eloqua regularly updates its UI, which breaks selectors. I structured the scraper with semantic rather than positional CSS selectors, and set up alerts that notify me immediately if an extraction fails — before teams notice.
For translation, the real problem wasn't linguistic but terminological. Large format printing has very specific vocabulary — a mistranslated term on a technical product sheet can mislead the customer. The glossary built with market managers was the key: without it, even GPT-4o produced linguistically correct but technically inaccurate translations.
SEO generation needed to produce internally consistent texts for the same product — the Sales Argument and Meta Description can't contradict each other. I structured the prompt to generate all 10 fields in a single inference with shared context, rather than 10 independent API calls.
Results & Impact
- Monthly reporting: 2 working days saved per market manager each month — automatically consolidated and sent.
- Generating a complete product page (10 SEO fields): 2 minutes instead of 45 minutes.
- Hundreds of product pages generated across multiple European markets.
- Thousands of product sheets translated with consistent terminology thanks to the self-learning glossary.
- Active deployment on France and Benelux, extension in progress toward Switzerland and all of Antalis (KPP Group) Europe.
Architecture
REPORTING: Selenium (authenticated Eloqua session) + Selenium (Qlik Sense) + Excel → Python consolidation → auto-sent monthly report. | TRANSLATION: FR product sheet → DeepL (base) → GPT-4o + technical glossary → translated sheet → market manager corrections → glossary update. | SEO: product list → Google Custom Search + Perplexity (research) → OpenAI (10-field JSON generation) → parsing → Google Sheets.
What I Learned
This project confirmed that automating three distinct problems with a common approach is more effective than three separate projects — but only if you identify the right common denominator from the start. Here it was 'input data → AI processing → structured output'. I also learned that the quality of an AI pipeline depends as much on the quality of input data (the glossary, the research sources) as on the model itself.