Inspiration 🚀
I was inspired by the idea that great advertising is cultural, not just computational. Qloo’s unique ability to surface cultural correlations and affinities pushed me to imagine a tool that could empower creators and marketers to launch data-backed, culturally intelligent campaigns — without needing a full strategy team.
What it does 🎯
Qlaire helps you generate personalized ad campaigns based on a product name, platform, and theme. In just seconds, it:
- 🔍 Enriches your input with Qloo’s cultural graph:
- Related entities
- Popularity trends
- Demographics
- 🤖 Sends the full prompt enriched with Qloo's insights and the user's inputs to a fast LLM
- 📦 Returns a complete, structured JSON campaign including:
- 👥 Audience persona summary
- 🎯 Audience segmentation rules
- 📝 Ad copy (headlines + descriptions)
- 🎨 Creative concepts (image/video ideas)
- ⚙️ Campaign settings (objective, placements, budget, A/B tests)
- 💡 Key insights to guide strategy
- 👥 Audience persona summary
How I built it 🛠️
- Backend: Go (Golang) with clean architecture and an async job lifecycle management
- LLM Integration: Groq’s ultra-fast inference API, configured to use Llama 4 model (that can be iterated easily to test other LLMs)
- Cultural Enrichment: Qloo’s APIs for demographic & entity insights
- Frontend: React
- Hosting: Render.com
Data Flow:
POST /ads-insights→ queue job- Generate a seed concept an LLM
- Fetch Qloo data
- Build prompt with insights
- Generate Ads campaign with an LLM
- Update in-memory results and & serve results via
GET /ads-insights/{job_id}
Challenges I ran into 🧩
- Prompt engineering was tricky: LLMs tend to break schema easily — I needed strict formatting and cleaning. At the end, including some retries (behind the scenes) in all LLMs interactions helped to deliver a more robust solution.
- Building a concurrency-safe job queue with retries & timeouts in monolithic hackathon service
- Handling the flexible LLM interfaces to interact with Qloo's REST API.
- Crafting a smooth UX around async jobs and handling incomplete LLM responses
- Designing a logo & brand identity that feels as smart and sleek as the product I imagined initially
Accomplishments I am proud of 🏆
- Fully working prototype in very short time with structured JSON output, clean frontend, and live deployment
- Seamless integration of Qloo insights + Groq LLMs in one cohesive UX
- A creative tool that could save hours of campaign strategy work and can be easily considered for A/B testing against the current Ads Campaigns
- A polished brand and interface, I tried to make Qlaire feel like a real product
What I learned 📚
- How to translate raw data into creative prompts that LLMs can execute
- The power & flexibility of Qloo’s API for cultural recommendations
- The importance of guardrails & retries for LLM-generated structured output
- That UX needs to consider edge cases (async failures, schema breaks)
What’s next for Qlaire 🌟
- 🌐 Add multilingual support for global campaigns
- 🖼️ Enable AI-generated creatives (DALL·E, SDXL)
- 📥 Export campaigns (PDF, Meta Ads import) directly into the platforms
- 🤖 Fine-tune a smaller LLM for offline/edge use
- 🎨 Evolve Qlaire into the go‑to assistant for indie devs, marketers & brands
Built With
- go
- groq-chat-completions-api
- postgresql
- qloo-insights-api
- react
- render.com
- tailwind-css
- vite


Log in or sign up for Devpost to join the conversation.