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

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:

  1. POST /ads-insights → queue job
  2. Generate a seed concept an LLM
  3. Fetch Qloo data
  4. Build prompt with insights
  5. Generate Ads campaign with an LLM
  6. Update in-memory results and & serve results via GET /ads-insights/{job_id}

Component Diagram

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
Share this project:

Updates