Dzaky Zakiyal Fawwaz

Accenture · production SaaS, Germany-based team (remote) · 2025–2026

AI Agents for a Production GenAI Ad Creation Platform

AI Engineer, AI orchestration team

Client engagement. Names, data, and identifying details are withheld; the architecture is described at a generalized level.

AI Agents for a Production GenAI Ad Creation Platform

Problem

Producing ad creatives across brands, markets, and banner sizes is repetitive work spread across briefs, brand guidelines, templates, and review rounds. The platform needed AI services that read a brand’s own documents, hold a briefing conversation, and generate or adapt creatives that still respect the brand.

Approach

The orchestrator is a Python microservice behind the product API. Each capability is a “deep agent” built on pydantic-ai with its own tools and skills; agents call back into the platform through about 120 MCP tools and stream reasoning and progress to the UI over SSE. I shipped the Campaign Brief, Template, and Creative agents, extended the Brand Agent, built the RAG pipeline the agents read brand guidelines through, created the evaluation gate every agent change has to pass in CI, and added reasoning streaming, run cancellation, multi-question tools, user confirmation before sensitive actions, PPTX ingestion, and image layer decomposition.

Architecture

Hover a component to trace its connections · drag to pan · use + / − to zoom

  • Source
  • Processing
  • Model
  • Agent / optimizer
  • Data store

How It Works

  1. Upload & deduplicateBrand documents (PDF, DOCX, PPTX, XLSX, HTML, and more) are registered with status tracking and checksum deduplication.
  2. ExtractDocling and PyMuPDF pull out text, tables, and images; a vision LLM describes pages and attachments concurrently, with timeouts and retries.
  3. Chunk & embedHeader-aware chunking into ~900-token sections with 15% overlap; embeddings stored in pgvector.
  4. RetrieveBM25 or embedding search selects context under a token budget for each agent call.
  5. Agent runCampaign-brief, brand, template, and creative agents call platform MCP tools, generate copy and images with Gemini or Azure OpenAI, and return Pydantic-validated output.
  6. Stream & persistThinking steps, tool progress, and text deltas stream to the UI over SSE; state changes are replayed atomically and conversations are checkpointed in Postgres.
  7. Quality gateAn LLM evaluation suite (pydantic-evals) runs in CI with a minimum score per suite, alongside coverage and API-contract checks.

What I Built

  • Campaign Brief, Template, and Creative agents built on a Pydantic AI deep-agent harness, with user confirmation before sensitive actions.
  • Brand Agent extensions that extract colors, brand voices, and logos from guideline PDFs with LLM + VLM pipelines.
  • The LLM evaluation suite (pydantic-evals, LLM-as-judge) and a GitHub Actions gate that blocks PRs on quality regressions.
  • A RAG pipeline for the agents: Docling parsing, header-aware chunking, embeddings in pgvector, and BM25 or embedding retrieval over brand guidelines.
  • Reasoning-token streaming over SSE, run cancellation, multi-question tools, and PPTX ingestion for RAG.
  • Computer vision integration (LayerD, LaMa inpainting, OCR) to split ad images into editable layers.
  • Contributions to the document pipeline, template resizing, and AI smart crop; the campaign-brief agent grew out of my LangGraph proof of concept.

Impact

Shipped 35 merged PRs to a large multi-team codebase running in production for global consumer brands, including agents marketers use daily and the quality gate that keeps every agent change from regressing.

Key Metrics

35Merged pull requests I authored
~120Platform MCP tools available to agents
15k+Automated tests in the service (team-wide)

Tech Stack

PythonFastAPIpydantic-aiLangGraphGemini (Vertex AI)Azure OpenAIPostgreSQL + pgvectorDoclingMCPpydantic-evalsGitHub ActionsLayerDLaMaOCRAWS EKSNestJSVue 3