Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Check the pulse of your side hustle before you launch. An AI agent that uses Qloo's taste graph to find real local demand, partners and a launch plan.
BusinessTypeScript · CSSGitHub @GafardaudaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
AI agent that uses Qloo's taste graph to check if a Gen Z side hustle has real local demand. Qloo Agentic Hackathon entry.
Translation pending
Loading the full README.
Read the full README ↗Check the pulse of your side hustle before you launch.
HustlePulse is an AI agent that uses Qloo's taste graph to check whether a side hustle has real local demand — before you spend a naira on it. Describe your idea and your city, and the agent tells you where your customers cluster, who to partner with, and hands you a data-backed launch plan. Every idea gets a PulseScore (0–100) built from audience fit, location demand and partner strength.
🔗 Live demo: https://hustlepulse.vercel.app 📺 Demo video: (coming soon)
Built solo for the Qloo Agentic Hackathon by Gafar Dauda (data analyst, Nigeria).
An LLM alone will happily invent a trendy-sounding neighbourhood, a plausible-but-wrong local artist, and a launch plan with zero evidence. HustlePulse grounds every recommendation in Qloo's taste graph, so the places are real, the partners actually match the audience, and the plan cites numbers.
To prove it, we ran the same ideas through HustlePulse (Qloo + AI) and through the same Gemini model with no Qloo, then used Qloo itself as an independent referee to score both. Across 10 ideas in 9 cities:
| What we measured | HustlePulse (Qloo + AI) | AI only |
|---|---|---|
| Names real local places | 100% | 70% |
| Picks on-target local artists | 48% | 23% |
| Consistent across repeat runs | 37% | 29% |
| Cites evidence (real numbers) | 100% | 3% |
Full method and the harness are described in the benchmark section below. Numbers are regenerated into lib/benchmark.json and shown live on the app's "Why trust this?" screen.
Cities: Lagos · Abuja · Ibadan · Accra · Nairobi · Cape Town · London · New York · Toronto
HustlePulse is a tool-calling agent built on the Vercel AI SDK with Google Gemini. The model is given two tools and must use Qloo to answer — it can't just free-associate:
research_idea — the model extracts keywords, comparable brands and local artists from the free-text idea. These resolve to Qloo entity IDs via /search and /v2/tags.analyze_market — measures audience affinity, pulls a city heatmap (filter.type=urn:heatmap) and labels the hot cells with real neighbourhood names, finds partner artists/places/brands with Qloo as the anchor, and reads the cross-domain Taste DNA.If the agent fails or the LLM is rate-limited, a keyword-matching fallback (lib/preview-report.ts) still produces a real Qloo-backed report, and the report says why it fell back — the app never shows made-up data as if it were live.
PulseScore = 40% × audience fit + 35% × location demand + 25% × partner strength
Shown in the UI as "who wants it" (40%), "where they are" (35%) and "who you can collab with" (25%) — all three bars cite the Qloo numbers they came from.
| Endpoint | Used for |
|---|---|
GET /search | Resolve idea keywords, brands, artists and places to Qloo entity IDs |
GET /v2/tags | Find valid tag IDs (cuisines, styles, genres) |
GET /v2/insights | Audience affinity, partner picks, Taste DNA (per filter.type) |
GET /v2/insights (filter.type=urn:heatmap) | Neighbourhood demand map over a city |
All Qloo access lives in a single module, lib/qloo.ts — typed responses, an in-memory cache, concurrency limiting and retry on rate limits.
ai) with Google Gemini (@ai-sdk/google) — tool-calling agent + structured output/r/<id> linksRequirements: Node.js 20 or newer.
git clone https://github.com/Gafardauda/hustlepulse.git
cd hustlepulse
npm install
cp .env.local.example .env.local # then fill in your keys (see below)
npm run dev
Open http://localhost:3000.
No keys? No problem. Set USE_MOCK_QLOO=true (or leave the Qloo key blank) and the app runs end-to-end on built-in sample data, so you can explore every screen without any API keys.
| Variable | Required | Purpose |
|---|---|---|
QLOO_API_KEY | for live data | Qloo hackathon API key |
QLOO_BASE_URL | Defaults to https://hackathon.api.qloo.com | |
GOOGLE_GENERATIVE_AI_API_KEY | for the agent | Gemini API key (Google AI Studio) |
GEMINI_MODEL | Defaults to gemini-3.5-flash-lite | |
USE_MOCK_QLOO | true to use built-in sample data instead of calling Qloo | |
KV_REST_API_URL / KV_REST_API_TOKEN | for share links | Upstash Redis; without them, reports still work but aren't persisted to a share link |
Note: Qloo response data and API keys are never committed to this repo. Keys live in
.env.local(git-ignored); only aggregate benchmark percentages are checked in.
The harness runs each sample idea through HustlePulse and through the same Gemini model with no Qloo access, producing the same kinds of picks (neighbourhoods, brands, artists, venues) so both can be scored fairly. Qloo is then used as an independent referee:
/search)/v2/insights)Only aggregate percentages are stored, in lib/benchmark.json, and surfaced on the app's "Why trust this?" screen. (The harness scripts themselves are kept out of the repo since they hit the live APIs.)