Inspiration
Crypto and NFTs move on narratives and culture, but most tools ignore cultural context. Qloo’s Taste AI™ maps cross-domain affinities (music, film, fashion, venues, etc.) via an API, which is perfect for turning “vibes” into structured signals. We asked: what if you could trade the vibe before it trends? That led to Cultural Arbitrage — using Qloo’s cultural graph + an LLM to surface on-chain opportunities.
What it does
Type a vibe (e.g., “gothcore futurism” or “solarpunk”). The app:
- Expands the concept with an LLM into related entities (genres, artists, films).
- Queries Qloo to fetch correlated cultural entities across domains.
- Maps those entities to on-chain assets by checking OpenSea (NFT collections/items) and CoinGecko (tokens & market data), and scans Farcaster/Twitter for live mentions to gauge traction.
- Renders an interactive “taste map” + ranked signal cards with rationale, links, and (optional) a quick basket simulation.
This directly addresses the hackathon brief: integrate an LLM with Qloo’s API to connect behavior with cultural context.
How we built it
- Frontend: React + shadcn/ui (Radix + Tailwind) with dark mode as the default for a clean, minimal look; theming via
next-themes. Graph (D3/force-graph) and charts (Recharts/Plotly) sit inside shadcn cards/dialogs. - Backend: Node.js (TypeScript, Express/Fastify). Parallel async services:
gptService– prompt-engineered expansion & explanations (OpenAI/Claude).qlooService– calls Qloo Taste AI for correlated entities.openseaService– queries OpenSea V2 collections/NFTs & events.coingeckoService– token search + prices/volume via CoinGecko.socialService– Farcaster client API (or Neynar) for posts/engagement.
- Pipeline:
theme → LLM expand → Qloo correlate → asset scan → score/fuse → UI. We cache frequent queries and stream partial results to keep TTFB low.
Challenges we ran into
- Semantic drift & LLM noise: Early prompts expanded into unrelated concepts; we moved to structured (JSON) outputs with examples and post-filters before calling downstream APIs.
- Data stitching across APIs: Aligning Qloo entities to NFT collections (OpenSea V2) and tokens (CoinGecko) required fuzzy matching and confidence scoring; V2 endpoints improved latency and stability.
- Social data access: Farcaster has multiple client/APIs; we used the Warpcast client API and explored Neynar for convenience and rate limits.
- Time-to-demo vs. polish: Keeping the UI minimal yet expressive — shadcn’s dark-mode primitives sped this up.
Accomplishments that we're proud of
- End-to-end “vibe → asset” loop that is explainable (cultural graph + rationale), not just a black-box signal.
- Clean, dark, production-feel UX on shadcn/ui that judges can navigate in seconds.
- Modern data stack wired to real APIs: Qloo Taste AI, OpenSea V2, CoinGecko, and Farcaster — all aligned with the hackathon’s integration criteria.
What we learned
- Culture is a powerful organizing layer for discovery — Qloo’s cross-domain graph gives a unique signal surface that traditional price/TA tools miss.
- API ergonomics matter: OpenSea V2 endpoints (collections, NFTs, events) reduced payload size and improved stability vs older APIs.
- UX wins hackathons: A fast, minimal dark UI + obvious explanations beats complex dashboards; shadcn’s theming/docs made dark-mode implementation trivial.
What's next for Cultural Arbitrage Signal Engine
- Alerts & watchlists: Subscribe to a vibe; get notified when new culturally-matched assets appear or cross momentum thresholds.
- Creator (“scout”) marketplace: Let curators publish vibe portfolios/strategies (rev-share).
- Deeper data: More on-chain signals; broader social ingestion; SIWF (Sign-In with Farcaster) for personalized feeds.
- Monetization: Freemium SaaS + B2B data/API offering; long-term explore an on-chain “Taste Index” basket once coverage and backtests mature.
- Production hardening: Rate-limit handling, Redis caching, and OpenSea API key management for scale.
Built With
- javascript
- node.js
- opensea
- typescript


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