← Back to projects

🤖 Agent1: Multi-Agent Engine for Editable Advertising Posters - Architecture Breakdown

Multi-agent generative engine in n8n and Node.js that turns raw hotel and event photos into layered, fully editable PowerPoint posters compiled from scratch in OpenXML/DrawingML.

🎯 Architectural Problem

Marketing teams in luxury hospitality and live events needed advertising posters produced at volume from raw photography. The two usual options both failed in production. Diffusion models produce attractive bitmaps that nobody can edit afterwards, so every typo or price change means starting over. Template tools drop rigid text boxes over the photo and end up covering the bed, the pool, or the artist on stage.

The client needed files a designer could open in Canva, Google Slides, or Keynote and keep editing layer by layer, with text that stays readable on any background.

⚡ Engineering Solution

  • Spec-driven multi-agent pipeline: Built decoupled n8n workflows governed by four JSON Schema contracts validated with Ajv. A vision agent (GPT-4o / Qwen 2.5 VL 72B) maps the focal subjects of each photo, an art-director step defines the layout, and a copy agent (GPT-4o / Claude 3.7 Sonnet) writes headlines within strict character budgets.
  • Deterministic geometry outside the LLM: Anything that can be computed is computed in plain Node.js. A Maximal Empty Rectangle solver finds the free areas of the image, and 2D AABB collision checks guarantee that no text box covers a primary subject.
  • Zero-dependency PPTX compiler: Wrote an OpenXML/DrawingML (ECMA-376) compiler on native Node.js buffers, including in-memory CRC32 and PKZip packaging. It emits six-layer vector posters with proportional cropping and edge bleed that import cleanly into Canva and Google Slides.
  • Quality gates and human review: A deterministic critic checks WCAG 2.1 contrast (at least 4.5:1) and minimum type size. A visual QA loop with a hard iteration ceiling refines the result, Puppeteer renders HD previews with a PHP GD fallback, assets live in Cloudflare R2, state lives in PostgreSQL, and a human-in-the-loop editor gives the team the final word.
Popular:

Type any technology, keyword, or company to see live results.

Open dedicated search page →

Direct Message Channel

Encrypted Direct Channel · Immediate Delivery

(Optional)
Minimum 20 characters
Initializing security check...
Average response < 24h
Prefer direct email? arturo@arturonavax.dev