Inspiration

Ad platforms like Omneky sell one thing: pump out on-brand ad creative at volume. But the interesting part is not generating one image from one prompt. It is getting a team of specialists to disagree, hand work back and forth, and raise the quality bar before a human ever looks. I wanted to see whether a society of small, focused agents could out-design a single large prompt, and whether I could prove it with numbers instead of vibes.

What it does

You paste a product URL. Six agents take it from there over a shared blackboard:

  • Strategist reads the URL and builds a brand kit: palette, fonts, audience, tone, value props, and brand rules.
  • Copywriter writes several framework-diverse angles, grounded in a compiled copywriting playbook.
  • Design Researcher pulls live visual references from Pinterest and analyses them with a vision model into a design brief.
  • Art Director turns the brief into a scene, generates the background on Qwen's image model, and composites the type.
  • Critic scores every creative 0 to 100 across six dimensions (thumbstop, hierarchy, legibility, brand fit, hook clarity, CTA visibility) and sends failing work back with specific fixes.
  • Director orchestrates the loop, arbitrates, keeps the best result, and writes lessons to memory.

The Critic sending work back to the Art Director is the whole point. It is collaboration with a feedback loop, not a single prompt. A persistent memory (SQLite plus embeddings) lets the society recall past brand kits, creatives, and lessons across runs.

How we built it

Every model call runs on Qwen Cloud through DashScope: qwen-plus and qwen-max for reasoning and copy, qwen-vl-max for the vision Critic and reference analysis, text-embedding-v3 for memory recall, and wan2.2-t2i-flash for image generation. The backend is FastAPI with a Server-Sent-Events stream so you watch the team work in real time. Rendering is Jinja2 plus Playwright and Chromium, which composites text reliably at channel sizes. Design references come from Pinterest via Apify with a curated fallback. The agents are also exposed over MCP, including the vision Critic. It ships as a Docker image on Hugging Face Spaces, calling Qwen Cloud for every generation.

Challenges we ran into

Baked-in text from image models spells badly, so I moved all type to HTML and CSS composited over a generated background, which is 100% reliable. Cold-start on the deployed Space kept breaking rendering until I pinned the Playwright and Chromium versions and pre-fetched the model at build time. Tuning the Critic's pass bar was a balance: too strict and nothing passes, too loose and the loop does nothing.

Accomplishments that we're proud of

The benchmark. On a matched sample, the society scored 64.4 versus a single-agent baseline of 56.7, a clean +7.7. The biggest win was brand fit, 8.33 versus 4.67, which is exactly the dimension a feedback loop should improve. A single prompt cannot argue with itself. This one does.

What we learned

A critic with a numeric rubric is worth more than a bigger model. Most of the quality gain came from one agent being allowed to say no and hand the work back, not from any single call being smarter.

What's next for AdLoop

A short-video mode, a tunable pass bar per brand, and publishing the agent tools as a reusable MCP server so other builders can drop the Critic into their own pipelines.

Built With

  • apify
  • dashscope
  • docker
  • fastapi
  • hugging-face-spaces
  • jinja
  • mcp
  • multi-agent
  • playwright
  • python
  • qwen-cloud
  • qwen-max
  • qwen-vl-max
  • server-sent-events
  • sqlite
  • wan2.2
Share this project:

Updates