Asteco Community Management
EDM Gate
A fact-checked pipeline that writes an Asteco resident notice in English and Arabic, checks every fact against the brief, and returns the email, the PDF, and the JPG ready to send.
7
Pipeline Stages
English written and locked first, Arabic transcreated after
2
Languages
English and mirrored right-to-left Arabic
5
Assets Per Brief
EN copy, AR copy, PDF, JPG, and SFMC email
3
AI Models
Claude Sonnet and Opus write, GPT-4o audits
The Problem
The Problem
Asteco's community teams send resident notices constantly: maintenance windows, water and power shutdowns, events, and policy changes. Every one has to go out in English and Arabic, on brand, and in several formats at once.
Done by hand the work is slow and easy to get wrong. A mistyped date, a weekday that does not match the date, a loose translation, or an off-brand PDF each reach thousands of residents before anyone catches it.
The brief was a single form that produces send-ready comms in both languages and every format, with one hard rule: the system never states a fact that was not in the brief.
What I Built
What I Built
I designed and built the whole system with Claude Code: the brief schema, the multi-model pipeline, the bilingual templates, and the guardrails that keep the output accurate. Three areas carried most of the work.
Pipeline and Model Orchestration
Designed a seven-stage pipeline where Claude generates and refines the English, GPT-4o audits it as an independent second model, then Claude transcreates and parity-checks the Arabic
Split every stage into its own API call with a client-side runner, so a full bilingual run stays inside Vercel’s execution limit
Surfaced real per-stage token cost on every run, so each notice shows exactly what it cost to produce
Bilingual Accuracy
Built mirrored templates with English on the left and right-to-left Arabic on the right, stacking cleanly on mobile
Derived every weekday from its date in code, in both languages, so the model can never label the wrong day
Parsed dates day-first (dd/mm/yy) to match UAE convention, removing an entire class of month and day swaps
The Fact-Checking Gate
Traced every fact in the notice back to the brief; the auditor reads the assembled notice against the form and blocks anything it cannot support
Wrote a calendar checker that catches false date claims even when they hide inside a relative clause or a negation
Added a recovery loop: a blocked notice is rewritten once with the audit findings fed back in, then escalated to human review if it still fails
How the Pipeline Runs
Seven Stages, Two Passes
English is written and locked first so there is a single approved source of truth. Only then is the Arabic transcreated from it, which keeps both languages carrying identical facts.
English — written and locked first
Generate
Claude drafts the notice from the brief, and nothing else
Tone
Claude enforces the Asteco voice: formal MSA register, no exclamation marks, no banned phrases
Lint
Code checks the assembled notice for the required contact line, footer, and exact strings
Audit
GPT-4o independently verifies every fact against the form and can block the run
Arabic — transcreated from the approved English
Transcreate
Claude rewrites the approved notice in natural Arabic, not a literal translation
Lint
Code checks Arabic formatting, Western digits, and the fixed contact phrases
Parity
A final pass confirms the Arabic and English carry exactly the same facts
What It Produces
What It Produces
Approved Bilingual Copy
English written and locked first, then transcreated into Arabic rather than translated word for word, so both read naturally to residents.
A4 PDF Notice
A branded, print-ready bilingual PDF rendered on the server with headless Chromium, matching the layout of Asteco's sent notices.
Broadcast JPG
A high-resolution image of the same notice for WhatsApp and social channels, generated from the identical source.
SFMC-Ready HTML Email
Salesforce Marketing Cloud email markup with merge fields in place, ready to drop into a send.
The Brief Form
A guided form with typed input masks, optional and independent schedule toggles, and known community names that prefill the contact details.
Per-Stage Cost Transparency
Live token cost for each model call, so the running cost of a notice is never a surprise.
Inside the Brief
One Form, One Source of Facts
The whole system hangs off one principle you can see right in the form: the “what is happening” field is the only place facts enter. Everything else — schedule, audience, hero image — is structure and styling.
Dates and times are optional and independent per notice type, so a policy update can carry no schedule while a maintenance window carries both a date and a time window. The hero image is labelled decoration only, never a source of facts.
Built With
Built With
One brief in. Two languages, five formats, and not a single fact the brief did not contain. EDM Gate takes a slow, error-prone bilingual comms process and turns it into one checked step.