Inspiration
Marketing teams spend weeks creating campaigns that truly align with their brand identity. Freelancers and small businesses often can't afford a dedicated marketing department, and even with existing AI tools, the output feels generic — it doesn't sound like the brand. We wanted to fix that: give any business an instant, on-brand marketing department powered entirely by AI.
What it does
BrandFlow is a production-ready, multi-agent AI marketing platform. You paste a website URL, and it delivers a complete, on-brand marketing campaign in seconds — no human marketer required.
Here's the flow:
- Paste a website URL — BrandFlow crawls and indexes the site into a DigitalOcean Knowledge Base.
- Extract Brand DNA — An AI strategist analyzes the indexed content via RAG to identify tone, values, audience, key messages, and visual style.
- Generate Campaigns — A team of specialized AI agents (Copywriter, Visual Designer) produces channel-ready content, reviewed by a Creative Director agent.
- Get Production Assets — Receive 3 X/Twitter posts, 1 LinkedIn post, an email draft, and AI-generated images — all consistent with the brand.
How we built it
BrandFlow leverages every layer of the DigitalOcean Gradient™ AI full-stack ecosystem:
Agent Runtime — Gradient ADK
The @entrypoint decorator from gradient_adk exposes main.py as a deployable agent endpoint. The ADK handles authentication, request routing, and lifecycle management with zero boilerplate.
LLM Inference — ChatGradient We use three different Gradient-hosted models, each chosen for a specific role:
| Agent | Model | Why |
|---|---|---|
| Brand Strategist | llama3.3-70b-instruct |
Deep reasoning for nuanced brand analysis from RAG context |
| Copywriter | llama3-8b-instruct |
Fast, creative generation for social/email copy |
| Creative Director | alibaba-qwen3-32b |
Strong structured-output for assembling & reviewing the final pack |
RAG Pipeline — DO Knowledge Bases (KBaaS)
BrandFlow calls the DO API to create a Knowledge Base with a web_crawler_data_source, automatically chunks and embeds the site content, then queries it via hybrid search to pull the top-10 most relevant brand-context chunks for the Strategist agent.
Image Generation — DO GPU Inference API
The Visual Designer agent calls the async-invoke API with fal-ai/flux/schnell, submits a prompt, polls for completion, and retrieves multiple generated image variants per campaign.
Agent Orchestration — LangGraph
A stateful LangGraph graph runs the Copywriter and Visual Designer in parallel, then routes output to the Creative Director for review. If rejected, both agents regenerate with specific feedback. MemorySaver enables thread persistence across turns.
Frontend & Storage Next.js 15 + React 19 frontend deployed on DO App Platform, with brand and campaign history persisted in DO Managed PostgreSQL via Prisma ORM.
Challenges we ran into
- Structured output reliability: Getting LLMs to consistently return Pydantic-validated JSON across multiple agents required careful prompt engineering and leaning heavily on
ChatGradient.with_structured_output()to enforce type-safe schemas at every node. - RAG quality for brand extraction: Brand identity is nuanced and spread across a website non-uniformly. Tuning the hybrid search
alphaand chunk strategy to surface the most brand-relevant content (vs. generic page copy) took significant iteration. - Async image generation polling: Coordinating the async Flux image generation lifecycle (submit → poll → retrieve) within a synchronous LangGraph node required careful state management to avoid blocking the graph.
- Snake_case/camelCase boundary: Bridging Pydantic schemas (Python) and Zod schemas (TypeScript) across the agent API boundary required explicit transform logic to keep the full stack type-safe end-to-end.
Accomplishments that we're proud of
- Truly full-stack on one platform: Every layer — inference, RAG, image generation, agent runtime, database, and hosting — runs on DigitalOcean Gradient™ AI. No stitching together five different vendors.
- Parallel multi-agent execution: The Copywriter and Visual Designer run simultaneously via LangGraph's parallel node execution, cutting campaign generation time in half.
- Brand-consistent output: The review loop with the Creative Director agent ensures generated content is measured against the extracted Brand DNA before delivery — not just vibes-based generation.
- Editable Brand DNA: Users can inspect and tweak the AI-extracted brand profile before generating campaigns, putting humans in control of the creative foundation.
- End-to-end type safety: Pydantic on the Python side and Zod on the TypeScript side with explicit transform layers means no silent data corruption across the agent API boundary.
What we learned
- Model selection matters per role: A 70B model for brand strategy and an 8B model for copy generation isn't just a cost optimization — the quality difference is meaningful. Matching model capability to task complexity is a real architectural decision.
- RAG is only as good as your retrieval strategy: Hybrid search (semantic + keyword) with tuned alpha significantly outperformed pure vector search for brand content extraction.
- LangGraph's graph model is powerful for review loops: Conditional edges and cyclic graphs make it straightforward to implement "reject and retry" workflows that would be messy to build with a linear chain.
- The ADK removes a ton of operational overhead: Not having to write server boilerplate, auth middleware, or deployment config for the agent backend freed us to focus entirely on the AI logic.
What's next for BrandFlow
- Campaign scheduling & publishing: Direct integration with social media APIs to schedule and post generated content.
- Brand memory across campaigns: Long-term brand profile evolution — the system learns what performs well for a brand and refines its DNA over time.
- Multi-brand workspaces: Agency-mode support for managing multiple client brands under one account.
- Custom agent personas: Let users define their own "Creative Director" review criteria and tone guardrails.
- Analytics feedback loop: Connect campaign performance data back into the RAG pipeline so future campaigns are informed by what actually resonated with the audience.
Built With
- digitalocean
- langgraph
- next.js
- python
Log in or sign up for Devpost to join the conversation.