A taste profile built from your real Instagram data. Connects via Open Data Labs Context Gateway, reads your following list, ad topics, and targeting categories, then uses Claude to generate a cross-platform aesthetic and interest fingerprint across 5 dimensions.
- Next.js 14 App Router + TypeScript
- Tailwind CSS
@opendatalabs/connect-js— Context Gateway iframe flow@anthropic-ai/sdk— Claude Haiku analysishtml2canvas— card screenshot/download
git clone https://github.com/vana-com/taste-profile
cd taste-profile
npm installcp .env.local.example .env.localFill in .env.local:
| Variable | Where to get it |
|---|---|
OPENDATALABS_API_KEY |
ODL dashboard > API Keys |
OPENDATALABS_ENCRYPTION_SECRET |
ODL dashboard > API Keys |
OPENDATALABS_APP_ID |
ODL dashboard > Apps |
ANTHROPIC_API_KEY |
console.anthropic.com |
NEXT_PUBLIC_APP_URL |
http://localhost:3000 for local, your deployed URL for production |
- Create an app at dashboard.opendatalabs.com
- Set the allowed origin to your app URL (e.g.
http://localhost:3000) - Enable scopes:
read:profile,read:following,read:ads - Copy the API key, encryption secret, and app ID into
.env.local
npm run devOpen http://localhost:3000.
- Landing page — user clicks "Connect Instagram"
- Connect page — server creates an ODL session, client renders the Context Gateway iframe. On successful connection,
postMessagefires with aconnectionId. - Result page — fetches the connection result from ODL (following list, ad topics, targeting categories), sends to Claude Haiku, renders a 5-dimension Taste Profile card.
- Share — "Copy summary" copies the one-sentence profile to clipboard. "Save card" uses html2canvas to download the card as a PNG.
This app uses Open Data Labs Context Gateway to access Instagram data with user consent. No data is stored server-side — it is fetched at request time and passed directly to Claude.
vercel deploy --prodSet the same 5 environment variables in Vercel project settings or via vercel env add. Make sure NEXT_PUBLIC_APP_URL matches your production domain and is added as the allowed origin in the ODL dashboard.