Inspiration

Creative teams do not need another chatbot or one-shot image generator. They need a reliable production workflow that can turn a structured product brief into consistent, channel-ready campaign assets while preserving quality decisions, revisions, and provenance.

Most generative media tools stop after producing an image. The prompt, model, quality review, parent version, and storage history are often lost. AdForge AI was built to close that gap.

What it does

AdForge AI is a multi-agent creative operations workspace. A user enters a structured campaign brief containing the product, audience, objective, brand voice, preferred language, prohibited claims, and target channels.

Eight specialized agents then execute the campaign workflow:

  1. Brand Analyst establishes positioning, audience, voice, and claim boundaries.
  2. Campaign Strategist selects the core concept and channel strategy.
  3. Copywriter produces channel-native copy and calls to action.
  4. Visual Director creates production prompts, crops, constraints, and text-safe regions.
  5. Media Producer sends the visual contract through Genblaze for image generation.
  6. Quality Critic evaluates brand alignment, visual quality, message alignment, channel fit, and safety.
  7. Revision Manager performs one bounded retry when an asset misses the quality threshold while preserving the original version.
  8. Campaign Curator produces the final readiness score, recommendations, risks, and estimated time saved.

The user can inspect every asset, compare versions, approve or reject it, view its complete provenance, and securely retrieve the private Backblaze B2 object through a short-lived signed URL. The Asset Library turns completed campaigns into searchable creative memory.

How we built it

The frontend is a Next.js and TypeScript application deployed on Vercel. The backend is a FastAPI service deployed on Railway with PostgreSQL as the campaign control plane.

The workflow is asynchronous and database-backed. Every stage records its status, timestamps, attempts, and workflow events. Refreshing the browser reconstructs the campaign from persisted state instead of restarting generation. A failed channel can produce partial success without discarding successful assets.

NVIDIA NIM-hosted open models power structured brand, strategy, copy, visual-direction, and multimodal reasoning. All agent responses are validated against typed schemas before entering the next stage.

Genblaze owns the generative media boundary. AdForge uses the Genblaze Pipeline, DalleProvider, and ObjectStorageSink with a Backblaze-compatible S3 storage backend. The current media model is gpt-image-1 through genblaze-openai.

Backblaze B2 is the durable artifact plane. It stores generated media and sidecar provenance manifests inside a private bucket using deterministic, versioned object keys. PostgreSQL stores searchable campaign state, scores, approvals, run metadata, object keys, and parent-child lineage. Permanent B2 credentials are never exposed to the browser.

Challenges we ran into

The largest challenge was separating a convincing demo from a production-oriented workflow. We needed to preserve every successful stage, handle provider failures, bound retries, and keep media credentials server-side without making the interface feel slow or overly technical.

Another challenge was maintaining honest provenance across multiple systems. We normalized Genblaze run metadata, provider details, prompts, checksums, evaluations, object keys, and version lineage into a single inspectable asset record.

We also designed the system so free or rate-limited model endpoints cannot destroy the entire demo. Live, hybrid, and deterministic demo modes share the same database, API, quality, provenance, and UI paths, and fallback usage is explicitly disclosed.

Accomplishments that we're proud of

  • Built a complete brief-to-campaign workflow rather than a one-shot generator.
  • Implemented eight narrow agents with typed inputs and outputs.
  • Integrated live NVIDIA NIM inference using open Llama models.
  • Used Genblaze as the real media pipeline instead of bypassing it with a direct frontend API call.
  • Stored private generated media and manifests durably in Backblaze B2.
  • Added automated quality scoring and one bounded revision with preserved parent lineage.
  • Made prompts, provider, model, run ID, checksum, evaluation, version, and B2 object key inspectable in the product.
  • Added human approval and short-lived signed downloads for private assets.
  • Created an Asset Library that turns prior campaigns into searchable creative memory.
  • Deployed a public frontend, backend readiness endpoint, interactive API documentation, and public repository.

What we learned

Generative media becomes much more valuable when generation is treated as one stage in a governed workflow rather than the final product. The hard engineering work is not only producing an image. It is making the result recoverable, reviewable, versioned, secure, and reusable.

We also learned that the database and object store should have separate responsibilities. PostgreSQL is the searchable control plane for state, approvals, scores, and lineage. Backblaze B2 is the durable artifact plane for the actual media and manifests.

Finally, narrow agents with validated contracts were easier to observe and recover than one large prompt. Each stage can fail, retry, or be inspected independently.

What's next for AdForge AI

Next, AdForge can add provider comparison through Genblaze, engagement-feedback learning, semantic asset search, campaign ZIP exports, short-form video generation, reusable brand profiles, collaborative reviews, and direct publishing integrations.

The long-term vision is a creative operating system where every campaign becomes durable, searchable brand memory and every generated asset has evidence explaining how and why it was produced.

Providers and models

  • NVIDIA NIM: meta/llama-3.1-8b-instruct for brand, strategy, and copy tasks
  • NVIDIA NIM: meta/llama-3.1-70b-instruct for optional reasoning escalation
  • NVIDIA NIM: meta/llama-3.2-11b-vision-instruct for multimodal quality evaluation
  • Genblaze Pipeline: gpt-image-1 through genblaze-openai for image generation
  • Backblaze B2: private S3-compatible bucket through Genblaze ObjectStorageSink

Links

Built With

Share this project:

Updates