Know your crowd. Ship the post.
Small businesses are told to "be on social media", but nobody tells them what to actually post, or to whom. CrowdPilot is a cultural co-pilot: it reads the taste of your crowd with Qloo, turns it into growth directions, drafts posts in your voice, and ships them to your socials, only when you say so.
Inspiration
The owners of cafés, venues and boutiques know their regulars intuitively, but the data side of "who is my crowd and what do they love" is locked behind tools built for marketers. We wanted an agent that does what a great social-media manager does: understand the crowd, decide what to post, create it, and ship it, with receipts for every claim.
What it does
- Onboard in two minutes: sign in with Google or email OTP, tell CrowdPilot your goal and your niche
- Read your audience: a real Qloo taste profile, top tags, multi-domain affinities, and niches hiding inside your crowd
- Decide: growth directions built from your profile, with a radar of signals to track
- Create & ship: a Pilot chat that drafts posts grounded in Qloo evidence, plus Plans that turn a direction into steps ending in a real post
- Accounts: connect your own X through our publishing partner (Onscript); per-user ownership, nothing posts without your approval
How we built it (and where Qloo genuinely powers it)
Qloo is not a garnish: it's the decision engine.
- Entity resolution: your niche text is resolved into real catalog ids via Qloo's /v2/search (artist / brand / place)
- Taste profile: /v2/insights with filter.type=urn:tag and signal.interests.entities returns the crowd's top tags; per-domain affinity insights surface the niches hiding inside your crowd
- Grounded agent: the Pilot's recommendations call Qloo search/profile tools before advising, and every answer cites its Qloo evidence. There's a built-in "with vs without Qloo" compare so you can see the difference yourself
- Persistence: taste profiles are stored per user, so your dashboard rebuilds on any device
Architecture
pnpm + nx monorepo. Effect-TS backend with a typed HTTP API (endpoints defined once, OpenAPI and generated clients flow from it). Two TanStack Start frontends (app + marketing site). PostgreSQL for users, sessions, workspace and posts. Publishing runs through our partner Onscript (create, publish, poll with real permalinks), with per-user connected-account ownership tracked in our own DB. The backend agent uses GLM-4.6 (Z.AI) with Qloo-grounded tool calls.
Deployed: fully self-hosted on a NixOS VPS behind Caddy with an auto-deploy pipeline (API, SSR app and the prerendered marketing site).
Challenges
- Qloo validates entity ids hard. Our first pass seeded reads with invented URNs, and every insights call 400'd with "invalid entity ids" while the UI silently showed fallback data. We ripped the fake seeds out and now resolve real ids from live search at read time.
- Social OAuth for arbitrary users. Our publishing partner hosts the whole OAuth flow, so connecting "user B's X" meant building a claim-based ownership mapping on top of a single integration account.
- Honesty over demo-ware. We replaced every simulated surface (fake "Run it now", fake account connects) with real endpoints, so failures now surface with their real reasons.
Accomplishments
- A stranger can go from a link to a real audience profile to a real post on X, unassisted
- Genuine, multi-endpoint Qloo usage with per-request evidence receipts
- Cross-device persistence: your workspace and taste profile survive sign-out
Links
- App: https://app.crowdpilot.hackathons.adophilus.com
- Site: https://crowdpilot.hackathons.adophilus.com
- GitHub: https://github.com/adophilus/crowdpilot
What's next
Media uploads so Instagram can ship, richer plan generation from live Qloo data, and surfacing per-user publishing headroom.
Built With
- caddy
- effect
- glm-4.6
- nixos
- nx
- onscript
- pnpm
- postgresql
- qloo-api
- react
- tanstack-router
- tanstack-start
- typescript
- vite
- z.ai
Log in or sign up for Devpost to join the conversation.