What's next for isitfunky?
Community-driven roadmap β built by drinkers, for drinkers
9,000+ Venues
Bars, restaurants, bottle shops, and producers across 150+ cities
Unified Places Schema
All venue types in one database with placeType enum (bar, restaurant, bottle-shop, cafe, winery, vineyard, distributor, importer)
City Pages
Dedicated pages for every city with vibe filters, view modes, and local picks
Producer Pages
Winery and producer profiles with 'where to drink' section
Supply Chain Graph
place_relationships table linking bars to distributors to producers to vineyards
Community Submissions
Submit new bars, report corrections, tag vibes via /submit
Operator Claims
Self-serve claim flow with auto-verify via email domain matching
Google Places Enrichment
Phone, address, Google Maps URL, and star ratings for all venues
Funky Score
0β100 proprietary vibe rating on every venue
Vibe Tags
Filterable tags from PΓ©t-Nat to Qvevri to Candlelit
Photo Storage
1,376+ real venue photos stored in Supabase Storage via Google Places API ($0 ongoing cost)
Supabase Database
9,000+ places + 150+ cities in PostgreSQL with Drizzle ORM query layer
SEO Infrastructure
Sitemap (1,500+ URLs), robots.txt, JSON-LD, rich OG metadata per page
9-Language i18n
Full internationalization with language picker in nav
Bar Discovery Script
Auto-discover new bars in any city via Google Places API
Google Maps
Interactive dark-themed maps with funky score markers
View Modes
List, cards, map, and split views on city pages
Search Overlay
Full-screen search with Algolia support (falls back to client-side)
Curated Guides
Local expert guides: Belleville After Dark, Tokyo Natural Wine 101, and more
Wine Crawl Planner
Plan and share multi-bar crawls with walk times
Taste DNA Engine
Personalized recommendations based on vibe tag affinity
Badge System
8 achievement badges with real progress tracking
Favorites
Save/unsave places with Supabase persistence (requires login)
Near Me Mode
Geolocation-based venue discovery
Trace the Funk
Search a producer, see every bar worldwide that pours their wine. The supply chain graph query.
Auth System
Email/password + Google OAuth with Supabase SSR
User Reviews
Rate and review venues with star ratings
Share Buttons
Share bars and crawls via native share or clipboard
Email Capture
Per-venue event notifications on bar detail pages
City Waitlist
Request your city and get notified when it's added
Referral System
Invite friends with referral links and reward tiers
Resy Affiliate Links
Direct reservation links with UTM tracking on all venues
Operator Dashboard
Stats, profile editing, events, reservations, analytics tabs
Wine Club
3-tier subscription: Explorer ($49), Collector ($99), Cellar ($199)
Virtual Cellar
Track bottles by type, rate, add tasting notes
City SEO Blog Posts
19 articles live β 9 educational + 10 city guides (NYC, Paris, London, Tokyo, Barcelona, Melbourne, Berlin, Shanghai, Copenhagen, Montreal). Each links to city pages.
Operator Outreach Template
Customizable email template at /operator/outreach for reaching bars. Fill in bar name + city, copy to clipboard, send.
OG Social Sharing Images
PNG OG image for homepage + FUNKY section. Branded previews when sharing on iMessage, Twitter, WhatsApp, LinkedIn.
Resend Email Notifications
Contact form submissions email pilot@isitfunky.com via Resend API. Domain verification needed for branded sender.
FUNKY Documentary Section
5-page pitch site at /funky β Overview, Pilot, Deck (PDF export), Team, Sponsors (3 tiers + GTM add-on). Shared nav, story flow, contact CTAs.
GEO Reference Pages
Own the 'funky wine' definition in AI answers: /what-is-funky-wine, /glossary (30 terms), /funky-score methodology, Organization schema, question-query posts.
Funky Entity Cluster
Own 'funky' beyond wine: /what-is-funky (cultural definition), /faq (24 Q&As), /regions (19 wine regions), /architecture (16 buildings), /best-natural-wine-bars hub β all with FAQPage/DefinedTermSet/ItemList schema for AI extraction.
Funky Art & Galleries
16 curated independent galleries and art spaces in reused buildings (bathhouse, bunker, distillery, sewing factory), each linked to the city's wine scene. Live at /art.
The Funky Map (All Categories)
Unified hub at /funky-map covering every category β wine bars, restaurants, shops, producers/farms, galleries, architecture, fairs, moments, pop-ups, design hotels β labeled Mapped / Curated / In build so coverage claims stay honest.
Bottle / Vintage / SKU Layer
LIVE: bottles + bottle_placements tables created in production β producer, cuvΓ©e, vintage, grapes, colour, ABV, skin-contact/pΓ©t-nat/no-SO2 flags, and where each bottle is carried (by glass, by bottle, retail, portfolio). Empty and ready for data.
Modes as Lenses
LIVE: entities and stories carry modes text[] (f&b, art, hospitality, cpg, design, architecture) β optional, multi, no default, so unclassified stays honest. Backfilled f&b on all 9,182 rows because every one came from natural-wine discovery.
Knowledge Layer (Stories)
LIVE: stories + story_links tables. A podcast/essay/film attaches to an entity OR an edge (how this bottle reached this bar) with a CHECK constraint enforcing exactly one target. The K in FUNK β the chain is infrastructure, stories are the product.
Map the Funk Circuit (OSM)
DONE, $0: 27,487 candidates across 145 cities via OpenStreetMap β 17,544 bars, 3,687 galleries, 2,015 bottle shops, 1,833 concept stores, 1,322 farms, 1,086 art spaces. All unpublished and unclassified pending review.
Triage Policy (Decided)
Reviewing 27k rows by hand is not a plan. Policy now in classify-funk.ts --policy: high-confidence funky auto-publishes, high-confidence not-funky auto-rejects, and ONLY the medium/low band reaches a human in /god. --sample audits what was auto-published; publishing is reversible.
RAW NY Outreach List
scripts/outreach-list.ts builds a mail-merge CSV per city β page URL, contact, and a REAL review-count stat for the wave-1 template. 191 NYC targets ready. Caveat: sorted by popularity, so it surfaces Death & Co before natural wine bars until classification lands.
City Listicles (Best Bars in {city})
Programmatic ranked 'best natural wine bars' pages for every city with 5+ venues, with ItemList schema β 63% of AI citations are ranked lists.
State of Funk Report
Live data report at /state-of-funk: venues, cities, countries, top-10 city ranking, scene breakdown β citable stats with Dataset schema.
The Funk Calendar
Year-round cultural moments the taste tribe travels for β wine fairs (RAW, La Dive), Cannes, fashion weeks, art fairs (Zona Maco, Basel, Frieze), music, sport β month by month with where-to-drink links. Live at /calendar.
Blog Tranche 1 (Question Queries)
All six AI-citation question posts published: hangover myth, is-it-better-for-you, cloudy, chilled, how-long-it-lasts, orange-vs-rosΓ©.
Listicle Data Quality
City listicles exclude non-wine-bars by name and require 20+ reviews. Data pass since fixed 1,854 postal-codes-as-neighborhoods and 140 wrong-city rows caused by city-name collisions (Cambridge UK vs MA, Geneva CH vs NY).
SEO Blog
19 articles live β educational guides + city-specific SEO posts
AI Sommelier
Claude-powered chatbot for natural wine questions and recommendations
Vercel + Custom Domain
Auto-deploy on push, isitfunky.com with SSL
About + Contact Pages
Company info, contact form, unsubscribe flow
Webhook Infrastructure
Instagram + Stripe webhook handlers built
The Funk Database
Producer β bottle β vintage β who-pours-it. The natural wine supply graph, browsable from either end. Preview live at /database.
Natural Wine Verification
Replace the legacy random funky score with a deterministic, multi-signal natural-wine confidence score (keyword density + Google rating + review volume + producer-list matches). v1 scorer in scripts/lib/funky-score.ts.
Wine-List β Producer Matcher
Claude extracts producers from venue wine lists, matched against the producer graph; writes sources_from links that feed the score. Script live at scripts/match-producers.ts.
Verified-Natural Badge & Tiering
places.verified now surfaces as a Verified badge on bar cards + detail and a 'Verified natural only' filter on /discover. Flips on once scoring writes the flag.
Algolia Full-Text Search
Lightning-fast fuzzy search (needs API keys to activate)
Instagram Auto-Import
Webhook + Claude extraction for auto-creating events from bar posts (needs Meta app)
Resy Slug Population
Add real Resy venue slugs for top 50 bars in NYC/London/Paris to activate direct booking links with commission tracking
Stripe Billing
Operator tiers: Free/$49 Verified/$129 Pro (needs Stripe keys)
Travel Partner Tiers
Claim (free) / Feature ($499) / Campaign ($1,999) / Enterprise (custom) packages for hotels, restaurants, galleries, and experiences on the funk circuit. Live at /travel.
The Pour (Impression β Glass)
Producer-funded ad product: every impression carries a redeemable ticket for the funkiest pour. $999 package = video + ad spend + one pre-funded glass. Concept live at /pour.
Pour Ticket / Wallet UI
Consumer-facing pre-paid ticket: the wine, its story, a PRE-PAID badge, and a QR to scan at the bar. Sample live at /ticket.
The Stage (Venue as Platform)
Every venue is a programmable space β floor plan, occupancy, availability, schedule, co-brand, events, retail. Concept live at /stage; runs concierge today.
isitfunky for Business (Hub)
One page tying every partner product into a single ladder β claim free, get into the database, fund a Pour, program the Stage, get featured on Travel. Producer-first. Live at /business.
Partner Outreach Engine
Segmented outreach (city tier Γ venue type) leading with each venue's live page + real stats. One CTA: claim free; paid tiers as upsell. See the outreach playbook.
Google Auth Completion
Supabase Google OAuth configured. Fix redirect flow test. Once working, save/favorite/review flows activate.
Funk Place Types (Schema)
place_type enum extended with gallery, art-space, popup, farm, design-hotel, listening-bar, concept-store, landmark. Migration at packages/db/migrations/0001_funk_place_types.sql β RUN IT in Supabase before writing rows with these types.
The Funk Graph (Entities + Broker)
Generic model so wine, art, architecture and design share one schema: entities with a kind (source/maker/object/broker/venue/happening/brand) + typed relationships, including the broker layer (importer, distributor, dealer) between object and venue. Model in docs/funk-graph-model.md; migration 0002 renames placesβentities with compatibility views (safe to run any time).
Importer Portfolio Ingestion
BUILT: scripts/import-portfolio.ts turns one importer CSV into broker + makers + bottles + brokered_by edges in one command. Dry-run by default, idempotent, tested end-to-end. Needs a real portfolio book β the highest-leverage data load available.
Funk Classifier (Blocked)
scripts/classify-funk.ts reads each candidate's own website and asks Claude Haiku whether it is genuinely funky, with a hard budget cap and no auto-publishing. Blocked only on ANTHROPIC_API_KEY being set.
Press Kit & Digital PR
/press with boilerplate + citable facts. Next: pitch the dataset to VinePair/Punch/RAW WINE-tier outlets AI already trusts.
Blog Tranche 2+ (Cities, Brand, Bottles)
Mexico City + Seoul city guides, 'Beige Is a Choice' brand essay, and 'The Beginner's Case: 10 Bottles' (producer-rich) published. Remaining: Lisbon, LA, Tbilisi guides β blocked on venue-data quality (see Listicle Data Quality).
Weekly Digest
Email digest via Resend with branded template (needs API key)
Bottle Shop Inventory
Browse what's in stock at local shops
Bottle & Vintage Schema
Data model for cuvΓ©es and vintages under each producer β the layer beneath the supply graph that the database page previews.
Venue Inventory Ingestion
Pipe real bar/shop/import-book lists into the graph so the database maps live per-bottle, per-vintage availability.
Master List + Domain Confirmation
Airtable/Dune-style public master list where venues confirm their own rows by logging in with their work email β reusing the domain-match logic from operator claims.
Raisin / Guide Cross-Reference
Match venues against canonical natural-wine sources (Raisin, Glou Guide, city guides) to confirm a verified core β the cheapest high-precision signal.
Run Verification on Live Data
The highest-leverage move: run match-producers + score-places against the live DB to replace random funky scores with real, multi-signal confidence and light up the Verified badge. Scripts migrated to Places API (New); gates: enable the API in GCP + ~$350-400 budget sign-off. See docs/verification-rollout.md.
Search Console Indexing Push
Post-deploy: resubmit the sitemap in Google Search Console and request indexing on the pillar pages (/what-is-funky-wine, /glossary, /funky-score, /state-of-funk, /press) β starts the ~90-day AI-citation clock and corrects the wrong entity data in AI Overviews.
Production Ops Checklist
Rotate IG_ACCESS_TOKEN in the Meta dashboard (fragment echoed to a local terminal); set ANTHROPIC_API_KEY in .env.local so the producer matcher can run; enable Places API (New) on the Google Cloud project.
Live Pulse
Real-time feed of what's pouring now. Instagram stories β Claude extraction β live feed.
Cross-City Taste Portability
You loved Belleville caves β here's what to hit in Tokyo. Vibe-based cross-city recommendations.
Offline Mode
Save bars for travel without internet
Photo Reviews
Upload photos with reviews
Friends & Following
See what your crew is drinking
Community Feed
Activity feed of reviews, visits, crawls
Creator Economy
Sommelier profiles with followers, guides, event calendars, and curated picks. Build an audience on the platform.
Vivino/Wine-Searcher Affiliate
Add 'Buy wines from this bar' links on bar pages. Passive affiliate revenue from wine purchases.
Wine Club Stripe Checkout
Wire up Stripe Checkout for 3 tiers: Explorer ($49/mo, 2 bottles), Collector ($99/mo, 4 bottles), Cellar ($199/mo, 6 bottles). Reuse operator webhook pattern.
Merch Store
isitfunky branded tees, tote bags, wine keys, glasses. Stripe checkout or Shopify integration.
Affiliate Wine Sales
Partner links to buy wines featured at bars β commission model with producers and distributors
Menu Management
Operators upload wine list and food menu
Inventory Tracking
By-the-glass pours and low-stock alerts
Tock + OpenTable Links
Expanded reservation platform affiliate links
Operator Flywheel
Operators maintain data for free because dashboard drives reservations + events β better data β more users β more operators.
Enterprise / Custom Pricing
Multi-city campaigns, dedicated account management, co-branded content, and volume pricing for hotel groups, importers, and tourism boards.
Partner Campaign Manager
Self-serve dashboard for partners to buy and manage Feature & Campaign packages, upload assets, and track bookings driven β with in-kind (stay/tasting) as an alternative to cash.
Funk Nights (Ticketed Events)
Hosted natural-wine + listening-bar + supper-club takeovers in design hotels. Proprietary, high-margin, brand-defining β needs a ticketing flow.
Guided Pub Crawls
Ticketed, hosted multi-bar funk crawls in Tier-1 cities β extends the Wine Crawl Planner into paid, scheduled events.
Solo Seat
Single-seat booking + solo-traveler experiences: counter seats at natural wine bars, solo-friendly crawls, and 'table for one' matching.
Distributed Sampling (Pour Anywhere)
Fund a 5oz pour of a wine across every venue that carries it β the supply graph already knows which. Drinkers sample wherever they are; framed as a sampling expense, not an ad buy.
Virtual SKU + Ticket Redemption
Each funded pour becomes a virtual SKU with a redeemable, single-use ticket carried by the impression and burned at the table.
OpenTable Affiliate Booking
Bind a Pour ticket to a reservation via OpenTable's affiliate/API (Resy is walled β link only). Turns an impression into a booked seat with the glass attached.
Pour Redemption (Code β Stripe Issuing)
POS-agnostic redemption: a short code your app owns (P1), then a reusable Apple/Google Wallet card via Stripe Issuing with real-time auth (P2). No POS scanner or Toast partner required. See docs/pour-payments.md.
Pour Payments Rail (Stripe Connect)
Rent the rails, don't build them: Stripe collects producer pre-pay, Connect pays venues out. Lawyer-review the flow before the first dollar. See docs/pour-payments.md.
Pour Concierge Pilot
Validate The Pour by hand before any rails: one bar, one producer, one night, manual money + redemption tracking. See docs/pour-pilot-playbook.md.
Producer Prepay Wallet
Producers pre-fund pours from a balance; restaurants draw against it at zero inventory risk; isitfunky reconciles redemptions.
Floor Plan + Occupancy
Map each room into zones (tables, bar, standing, stage) with real seated/standing capacity for partial or full-buyout booking.
Space Availability + Scheduling
A live venue calendar of open windows and hire slots β what's on, what's booked, what's bookable for events and takeovers.
Co-Brand Activations Marketplace
Match brands and producers to rooms for takeovers and activations β book the floor, set the terms, put a name on the night.
In-Venue Retail Drops
Sell bottles, merch, and limited drops off the floor during events, tied to the venue's POS and the supply graph.
Populate 50 Resy Slugs
Look up top bars in NYC/London/Paris on resy.com, add resySlug to DB. Activates affiliate booking revenue.
FUNKY Sizzle Reel
30-sec B-roll cut from Octagono for /funky hero section. 10x sponsor conversion vs text-only.
Resend Domain Verification
Add isitfunky.com DNS records in Resend dashboard so emails come from pilot@isitfunky.com not onboarding@resend.dev.
Dynamic OG Images Per City
Auto-generated social preview images per city/bar page with funky score, photo, and branding.
Get One Importer Book
THE bottleneck. One book populates maker + object + broker layers at once (~40 producers, their bottles, the broker edges) and doubles as a sales conversation with the best-funded customer segment. Everything above the venue layer is waiting on this.
God Mode / Master View
Admin-only console: review queue for assigning role+modes and verifying entities, entity editor, ingestion runner, graph explorer. Server-side ADMIN_EMAILS allowlist, noindex, unlisted. Scoped to review queue + editor for v1 β it earns its place as a data-quality weapon, not a dashboard.
Three Navigations
Chain view (follow the object soilβglass), lens view (filter by mode), story view (enter through narrative) β three renderers over one graph, not three products.
Finish the Entities Rename
The one migration statement deliberately not run: placesβentities / place_relationshipsβrelationships in 0002. Compatibility views make it functionally a no-op, so it's naming hygiene β run when convenient, then point pgTable at the new names and drop the views.
Hybrid Tastings (20% Take)
Ticketed tastings where the bottle is already at the venue and the maker joins live β one grower, twelve cities, one night. Uses the venue's licence, avoiding three-tier shipping law. 20% take, payer varies by who supplies demand. See docs/funk-graph-model.md.
Spot-Check Auto-Published
After each classifier run, audit a random sample of auto-published rows (classify-funk.ts --sample 50) and reject anything wrong in /god. The check that keeps automation honest.
Region & Ungeocoded City Discovery
8 cities unswept by design: 6 are wine regions (Loire, Kakheti, Itata, Languedoc, Valle de Guadalupe, Eastern Townships) where a radius around a centroid is meaningless β they need bounding-box queries; KrakΓ³w and Miami have zero geocoded venues so no centre can be computed.
Producer Data Gap
CRITICAL for /database credibility: 9,151 of 9,182 venues are typed 'bar'. Only 9 wineries; zero vineyards, distributors, or importers β so the 'producer β bottle β who pours it' graph has almost no producer side yet.
Fair Dates Audit
RAW Berlin/NY/Paris + La Dive now carry sourced dates (July 2026); the remaining ~17 fairs in data/fairs.ts still have stale mock dates that need sourcing from each fair's site.
Calendar Γ Travel Packages
Sell event-pegged partner campaigns: 'Fashion Week takeover', 'Zona Maco pour', 'La Dive week feature' β the calendar becomes the sales hook for /travel and /pour.
RAW Week NYC Campaign (Nov 2026)
First event-pegged campaign: outreach to NYC venues ahead of RAW Wine New York (Nov 8-9), a 'Where to Drink During RAW' guide in October, Features/Campaigns sold against the event. Playbook at docs/raw-ny-campaign.md β outreach starts August.
Remaining Geo Outliers
84 venues still sit >60km from their city centre with no clearly closer city β deliberately left alone rather than guessed. Needs human triage in /god.
Fix place_type Defaults
9,151 of 9,182 original rows are typed 'bar' because that was the column default β the corruption that started everything. The kind column now defaults to 'unknown' instead; place_type still needs a real backfill.
Winemaker Interviews
Long-form interview content with producers
Push Notifications
Event alerts and new bars nearby
Public API
Access the funky database
isitfunky Travel Card
Co-branded travel rewards card β points on funk stays, dining, and events, redeemable across partner venues.
POS Integration
Connect venue point-of-sale (Toast, Square, Lightspeed) for live menus, inventory, and attributable bookings/sales.
Distributor Trade Budgets
Open The Pour to distributors, not just producers β they expense tastings across their whole book to drive placements/pull-through. A bigger wallet than individual producers.
Tock Prepaid Partnership
Tock's native model is pre-paid ticketed dining β the closest fit for Funk Nights and pours at high-end venues. Partner instead of rebuilding prepaid settlement.
Funding Round
Raise to scale the travel vertical, partner ops, and content engine β investor materials and data room.
Own the Bar (Community Raise)
Crowdfund a natural wine bar owned by its regulars β Bukowski x duende. Pitch + interest capture live at /crowd; live raise needs a registered Reg CF platform (Wefunder/Republic) + legal.
Podcast Integration
Embedded podcast episodes
AR Wine Label Scanner
Scan labels to learn about producers and regions
Capacitor Native App
iOS and Android app
Want to suggest a feature?
Tell us what's missing