Somashekar GowdaProduct Case Study
Product × Engineering × AI

Karnataka Connect

Building a Community Discovery Platform for Kannadigas in the United States.

From a fragmented discovery problem to a scalable community platform — a product-first case study covering problem framing, PRDs, UX decisions, trust primitives, instrumentation plan, and roadmap. Every non-shipped claim is labelled honestly.

Role
Product Engineer / Product Owner
Timeline
Aug 2026 — ongoing
Platform
Web · mobile-first
Stack
Next.js · React · TypeScript · Supabase · Vercel
Executive summary

What Karnataka Connect is, and why it matters.

Karnataka Connect is a community discovery platform for the Karnataka diaspora in the United States. It brings organizations, events, learning programs, and places from dozens of scattered sources into one structured product — with automated ingestion from each organization's own website and lightweight admin moderation to keep quality high.

Community information exists. Discovery is broken. A Kannadiga trying to find their local sangha, an upcoming Sankranti event, or a Kannada school for their kid has to search across org websites, WhatsApp groups, Facebook pages, Instagram, and email newsletters — and still misses things.

I frame the problem, define the product, decide the trade-offs, design the UX, and ship the code — a one-person operation that documents every decision with honest state labels. Nothing is inflated.

Problem

Community information exists. Discovery is broken.

Karnataka-related content is published continuously — but across dozens of channels that don't talk to each other:

  • Individual org websites (WordPress, iCal, Google Sites, HTML)
  • WhatsApp groups (invite-only, ephemeral)
  • Facebook pages and events
  • Instagram stories
  • Email newsletters
  • Google search (indexes the above unevenly)
  • Word of mouth

Customer pain points

Hypothesis

Informed by my lived diaspora experience + informal conversations with community members. No structured research yet.

  • Fragmentation — no single place to find what's happening across Karnataka community organizations in the US.
  • Discovery lag — new arrivals learn about community events months after they'd have wanted to attend.
  • Ephemeral information — WhatsApp announcements scroll away; Facebook events are forgotten.
  • No cross-org visibility — members of one sangha rarely see what neighboring sanghas are doing.
  • Onboarding friction — a Kannadiga new to a US city has no map for finding their community.
  • Publisher inefficiency — organizers publish to their known audience and wonder why turnout doesn't grow.

The problem isn't a content shortage. Orgs are active, events are happening. The problem is discovery — not publishing.

Customers

Five personas, three primary.

All persona claims are Hypothesis — informed by lived experience and informal conversations, not by a formal research program.

Primary

Established diaspora member

Kannadiga living in the US for years; member of at least one sangha.

Behavior: Checks WhatsApp regularly; misses events from unaffiliated orgs.

Needs: Aggregated cross-org view; notifications about upcoming things.

Primary

New arrival

Recently moved to the US for work or study; searching for community roots.

Behavior: Google → confusing results → asks in Facebook expat groups.

Needs: Introductory map of local Kannadiga community, org contacts, upcoming events.

Primary

Traveling / relocating Kannadiga

Moving between US cities or visiting for work.

Behavior: Doesn't know who to ask in a new city.

Needs: City-scoped discovery.

Secondary

Community organizer

Runs events for a sangha.

Behavior: Posts to org WhatsApp + Facebook; wonders why turnout isn't larger.

Needs: Distribution reach beyond the core audience, with attribution back to the org.

Secondary

Kannadiga parent

Wants children exposed to Kannada language and culture.

Behavior: Asks in parent WhatsApp groups; unclear on Kannada school options in area.

Needs: Structured Kannada learning program discovery.

What's validated

  • • Sole builder's own lived experience as a Kannadiga in the US Bay Area.
  • • Informal conversations with community members (no formal interview program).
  • • Observation of publishing patterns across KKNC, KSS Sacramento, TVKS, SJKS, SocalKCA, KKSSD.

What isn't validated

  • • Structured interviews with any persona.
  • • Survey data on discovery pain frequency.
  • • Behavioral data (analytics not yet instrumented).
  • • Willingness to switch discovery habits.

Explicit gap: formal validation is a Phase 2 priority.

Journey

From a 30-minute task to a 3-minute one.

The product isn't a directory. It's a compression of a 30-minute discovery task into 3 minutes.

Before Karnataka Connect

  1. 1Need arises
  2. 2Google → generic / stale results
  3. 3Facebook → private groups I'm not in
  4. 4Ask WhatsApp → hit or miss
  5. 5Visit 3–5 org sites → different formats / stale
  6. 6Try to remember which org runs which event
  7. 7Still uncertain / miss the deadline

20–60 minutes · low success rate

With Karnataka Connect

  1. 1Need arises
  2. 2Open karnataka-connect.vercel.app
  3. 3Home surfaces upcoming events near default city
  4. 4Browse Near Me / Events / Orgs
  5. 5Filter and evaluate
  6. 6Tap through to org / event detail
  7. 7Connect: visit org site, RSVP, save the date

1–3 minutes · structured relevance

StageCustomer goalFriction (before)Product opportunity
TriggerFind something specificDoesn't know where to lookSingle known destination
SearchLocate relevant infoFragmented across channelsStructured directory
DiscoverFind things I didn't know existedNo cross-org visibilityNear-Me and Events surfaces
FilterNarrow to what fitsManual across tabsCity filter, category filter
EvaluateDecide if it's worth attendingMissing details on some orgsStructured event / org detail
ConnectAttend / contact / sign upContact info scatteredExternal links back to source
Vision

One product, six principles.

Make it easy for every Kannadiga in the United States to discover, connect with, and participate in their community.

Discovery over listing

Organize around user intent (what's near me, what's happening soon), not around publishing hierarchy.

Source of truth stays with orgs

We ingest and link back. We don't try to own the content.

Mobile-first, native-feeling

Phone-in-hand product, not a desktop database.

Cultural belonging

Feels for this community — not a generic city guide skinned in red.

Honest state

Coming Soon items are labelled Coming Soon; MVP scope is explicit.

Community contribution

Long-term health depends on community members submitting and correcting information.

Requirements

What's in, what's next, why.

Framework: Customer value × frequency of need × implementation feasibility. Every item is labelled with its actual status.

Must Have — MVP

Ship the core discovery loop and moderation flow first.

  • Organization directory (6 California orgs)Live
  • Event ingestion + displayLive
  • Learning programs (Kannada schools)Live
  • Search / browseLive
  • City filterLive
  • Organization detail pagesLive
  • Event detail pagesLive
  • Admin moderation dashboardLive
  • Daily iCal · RSS · HTML scrape ingestion on Vercel cronLive

Should Have

In or partially in; a few still need instrumentation or ops work.

  • PlacesPartial

    Live: seeded · Proposed: source-connected

  • Submit an organizationLive

    via /submit → moderation queue

  • Submit an eventLive

    via /submit → moderation queue

  • Verification badgeProposed
  • Personalized city defaultProposed

Later

Phase 3+ scope. Deliberately not shipped in MVP.

  • Community accounts + saved favoritesLater
  • Push notificationsLater
  • AI-powered natural-language searchLater
  • Travel companion (upcoming trips → events)Later
  • Kannada-language UILater
  • Parent / family matchingLater

Prioritization examples

  • Places was seeded, not source-connected in MVP. High customer value BUT no clean source signal — restaurants and temples don't publish structured feeds. Getting Places right requires a manual sourcing effort → Phase 2.
  • AI search was descoped from MVP. Not needed for a 6-org catalog; would add cost and complexity without user value at current scale.
  • Public submissions were pulled into MVP. Community trust depends on frictionless contribution — front-loading the structured form + moderation pipe prevents a costly rewrite later.
PRD example

Event Discovery on Home.

A representative PRD — enough for an engineer to implement with minimal clarification. Every non-shipped section carries an explicit status.

Problem

Diaspora members want to know what Karnataka events are happening near them without visiting multiple org sites.

User

Diaspora member (established or new arrival) checking their phone for what's upcoming.

Goal

Give the user a scannable list of upcoming events near them, in ≤2 taps from landing.

User story

As a community member, I want to see upcoming Karnataka events happening near me, so that I can decide what to attend without searching multiple sites.

Functional requirements

  • Home shows a “Happening near you” carousel by default.
  • Current city inferred from `?city=<city>` URL param OR defaults to first city with upcoming events.
  • If no upcoming events in current city, show fallback with a “try a different city” affordance.
  • Each event card displays: title, date, venue, city, hosting org, category, image if available.
  • Tapping a card navigates to `/events/<slug>`.
  • Only `moderation_status = approved` events are visible (enforced at DB via RLS).
  • Events sorted by `starts_at` ascending.

Non-functional

  • Page renders in <1s on 3G-equivalent (SSR + 5-minute revalidation).
  • Works on 375px mobile viewport with safe-area padding.
  • Passes AA color contrast.

Edge cases

  • No upcoming events in any city: empty state with CTA to browse orgs.
  • Event with no image: fallback to org branding or generic pattern.
  • Event whose starts_at sits at a timezone boundary: filtered by isUpcoming helper in America/Los_Angeles.
  • City param that doesn't exist: fall back to the first available city.

Acceptance criteria

  • Cards render in <1s on cold load.
  • Empty-state message displays correctly when no events exist for chosen city.
  • City param persists across navigation.
  • Approved events visible; pending/rejected not visible.

Analytics events (Proposed — not instrumented)

  • home_view (with city)
  • event_card_view (visible in viewport, event_slug)
  • event_card_tap (event_slug, source: home)
  • city_change (from, to)
  • zero_events_shown (city)
User stories

Eight stories, priority + status.

P0Shipped

As a community member, I want to discover Kannada organizations near me, so I can connect with relevant community groups.

Accept

  • Near-Me shows orgs ranked by relevance to current city
  • Each org card shows name, category, city, member count, tone

Edge cases

  • No orgs in current city → offer nearby cities
  • Org has no logo → generated avatar fallback
P0Shipped

As a member, I want to see upcoming events, so I can attend.

Accept

  • Home surfaces upcoming events for current city
  • Events tab lists all upcoming, sorted by date

Edge cases

  • All events in the past → section hidden
P0Shipped

As a someone new to a city, I want to switch context to that city, so I see relevant community.

Accept

  • LocationBar allows city switch
  • URL updates with city param (shareable)
P0Shipped

As a parent, I want to find Kannada learning programs, so my kids stay connected to the language.

Accept

  • “Learn Kannada” rail appears on Home when programs exist
  • Learning card shows program name, type, city reach
P1Shipped

As a organizer, I want to submit an event, so more people attend.

Accept

  • Form validates required fields client + server
  • Submission lands as moderation_status: pending
  • Success confirmation shown

Edge cases

  • Duplicate submission → Proposed: dedupe at moderation via embedding similarity
P1Shipped

As a community member, I want to submit an org that isn't listed, so it becomes discoverable.

Accept

  • Form supports category, city, contacts
  • Lands as pending; only approved rows are public via RLS
P0Shipped

As a admin, I want to review, approve or reject pending items, so quality stays high.

Accept

  • Per-org admins see only their org's pending events
  • Full admins see all pending events + all pending orgs
  • Approve → immediately public via RLS
P1Shipped

As a new visitor, I want to understand what Karnataka Connect is and how to use it, so I can trust it.

Accept

  • /about page tells the product story with honest status per surface
UX decisions

Problem → Options → Decision → Why.

Five decisions that shaped the product. Not screenshots — reasoning.

01

Home leads with EVENTS, not orgs

Problem

What does a diaspora member want to see first?

Options considered

  • A) Org directory
  • B) Upcoming events near me
  • C) Search bar

Decision · Why

B — upcoming events carousel

Events are time-sensitive; orgs are stable and can be discovered contextually. Users checking Karnataka Connect are more often asking “what's happening” than “what exists”.

02

Mobile bottom tab bar, not desktop-first sidebar

Problem

Where does this product actually get used?

Options considered

  • A) Desktop-first with sidebar
  • B) Mobile-first with bottom tabs

Decision · Why

B — mobile-first

Community members check community info on their phones. Native-feel bottom tabs with safe-area padding; desktop is the secondary surface.

03

Cultural palette, not generic

Problem

Should the UI look like a generic city guide or feel Karnataka-specific?

Options considered

  • A) Neutral SaaS palette
  • B) Karnataka palette (vermillion, marigold, peacock-teal) + Kannada script accents

Decision · Why

B

Visual belonging matters. This is not a utility app; it's the community's front door.

04

Public submissions use direct DB insert, not email

Problem

How do community members submit new orgs / events?

Options considered

  • A) Mailto link
  • B) Form → email admin
  • C) Form → DB insert as pending → moderation queue

Decision · Why

C

(A) and (B) require admin re-entry — friction, human error, dropped submissions. (C) means admin approves in one click and every future improvement (Turnstile, dedupe, verify, org claim) plugs in cleanly.

05

Places labelled Seeded, not Live

Problem

Places (restaurants, temples) exist in seed data but aren't source-connected.

Options considered

  • A) Hide places
  • B) Show, label Live
  • C) Show, label honestly as Seeded

Decision · Why

C

Product should be honest about its state. A fake “Live” undermines trust.

Edge cases

Product maturity — how the messy things resolve.

CaseProduct behavior
No search resultsFallback: “Nothing matches — try broader terms or nearby cities” (Proposed)
Duplicate organizationsDetected at moderation; admin merges (Proposed detection; manual today)
Outdated informationlast_updated_at displayed (Proposed) + community “report inaccurate” flow (partial today)
Organization closesAdmin marks archived; hidden via RLS (Proposed)
Event cancelledAdmin removes; event page shows tombstone (Proposed)
Event date changesIngestion re-syncs from source; admin re-approves (Live for iCal/RSS; Proposed for manual)
Missing locationCard shows city-only fallback
Missing websiteOrg card shows social handle (Proposed)
Incorrect community info“Report inaccurate” → admin (partial via event_reports table)
Similar-named orgsCategory + city distinguish; UI shows category badge
Incomplete submissionServer validation rejects; friendly error (Live)
Spam submissionsHoneypot + server validation (Live); Turnstile / reCAPTCHA (Proposed)
Unverified organizationsAll new orgs start unverified; verification badge shown once admin verifies (Proposed)
Data & trust

Trust is a product feature.

A community directory people don't trust becomes worse than no directory — misinformation spreads. Every product decision maps to a trust primitive.

PrimitivePurposeStatus
Source URLEvery event links back to originLive
Source typeUser sees where data came from (iCal / RSS / scrape / manual)Live
Moderation statusApproved-only public via RLSLive
Ingestion runs logAudit trail of every source runLive
Report inaccurateCommunity can flag bad dataPartial
Last updatedFreshness signal per recordProposed
Verified badgeAdmin marks orgs verified after direct outreachProposed
Duplicate detectionAuto-flag near-duplicates for mergeProposed
Confidence scoreIngestion assigns confidence based on source qualityProposed
Data ownerEach org can claim admin control via org_adminsLive

Data model (Live)

organizations, events, sources, ingestion_runs, event_reports, org_admins, learning_programs.

Engineering

Technical fluency at PM depth.

I don't turn PRDs into implementation tutorials. I make trade-offs engineers can defend.

LayerChoiceWhy
FrameworkNext.js 16 (App Router)Server components + revalidation for cacheable public reads; server actions for form submissions.
LanguageTypeScriptType safety at every layer; prevents runtime schema drift.
DatabaseSupabase (Postgres + RLS)Structured directory data + auth + RLS enforces approved-only reads without app-layer checks.
HostingVercelCron for daily ingestion; edge functions; preview per PR.
IngestioniCal / RSS / CheerioTiered because orgs publish differently; each parser scoped to one kind.

Why relational data, not a document store?

Events belong to orgs; orgs have admins; ingestion runs belong to sources. Postgres FKs enforce integrity; RLS scopes visibility. Document store would push these into app code.

Why separate organizations from events?

Same event might be co-hosted by multiple orgs (future). Orgs have their own lifecycle independent of events.

Why RLS instead of API-layer filtering?

The wrong data can never be returned even if a bug slips into the app.

What happens when data changes?

Ingestion runs upsert on (org_id, external_id). updated_at triggers keep the audit trail.

How should APIs support future mobile?

Typed row shapes → the next iteration can expose a small typed layer for a React Native client without rebuilding the backend. Schema is the contract.

AI product development

Six opportunities, each with a metric.

Current use of AI: AI-assisted development (LLM-assisted scaffolding, ingestion parsers, iteration). Not in-product yet.

Proposed

Natural language search

Proposed

Problem

“Show me temples near San Jose for Sankranti weekend” — beyond keyword.

AI opportunity

LLM query understanding + structured retrieval.

User value

Faster discovery for complex intent.

Risk

Wrong results erode trust.

Human oversight

Ranked results alongside deterministic search, not replacing it.

Success metric

Search satisfaction rate (Proposed)

Event categorization

Proposed

Problem

Manual category assignment doesn't scale.

AI opportunity

LLM classifies from title + description.

User value

Consistent categorization.

Risk

Miscategorization.

Human oversight

Admin sees suggested category, approves.

Success metric

% ingested events with confident category (Proposed)

Duplicate detection

Proposed

Problem

Multiple orgs may submit the same event.

AI opportunity

Embedding similarity + LLM name-match.

User value

Admin doesn't approve duplicates.

Risk

False positives merge distinct events.

Human oversight

Confidence threshold; human confirms merges.

Success metric

Duplicate rate ≤ 2% (Proposed)

Organization enrichment

Proposed

Problem

Sparse submissions.

AI opportunity

LLM extracts details from linked website.

User value

Richer pages faster.

Risk

Hallucinated info.

Human oversight

Extracted content shown as suggested, admin edits.

Success metric

Time-to-publish per submission (Proposed)

Personalized recommendations

Proposed

Problem

Everyone sees the same rail.

AI opportunity

Behavior-informed ranking.

User value

Higher engagement.

Risk

Filter bubble.

Human oversight

Explain-why on recommendations; user can opt out.

Success metric

CTR lift vs baseline (Proposed)

Community assistant

Proposed

Problem

“What's a good sangha to join in the Bay Area?”

AI opportunity

RAG over structured directory.

User value

Onboarding for new arrivals.

Risk

Confident wrong answers.

Human oversight

Cite sources on every answer; disclaimer.

Success metric

Task completion rate (Proposed)

Principles

Deterministic first, AI second · transparent sources · human-in-the- loop before public · measurable — every AI feature has a success metric.

Metrics framework

North Star + seven supporting layers.

North Star

Proposed

Weekly Discovery Actions

Count of user sessions that resulted in a meaningful discovery action — event view + external click, org view + contact click, or submission. Captures actual value delivered (successful discovery), not vanity (visits). Grows only when the product is actually helping people connect.

LayerMetric
AcquisitionWeekly visitors · referral source mix · search traffic share
Activation% first-time visitors who reach an event or org detail
EngagementSessions/user/week · detail views/session · city filter usage rate
ContributionWeekly submissions (org + event) · approval rate · time-to-approval
QualityDuplicate rate · search zero-result rate · % records with source_url · report-inaccurate rate
OutcomeExternal click-through rate · event RSVP CTR · org contact CTR
TrustDays-since-last-updated distribution · % orgs with admin claimed · % orgs verified

Instrumentation plan

Vercel Analytics for baseline visits + referrers. Custom event stream (Vercel or Plausible or self-hosted) for the events named in each PRD. Next

Experimentation

Three A/B tests, all proposed.

No experiments have been run — instrumentation isn't live yet. These are the first three I'd stand up once metrics land.

Exp 01

Home layout: events-first vs. city-picker-first

Proposed

Hypothesis: Landing on upcoming events (current) drives higher engagement than landing on a city picker.

Variant A

Home leads with events near default city

Variant B

Home leads with a large city picker; events after selection

Metric % sessions that view an event detail within 60s (primary); city changes/session (secondary)

Exp 02

Submission form CTA placement

Proposed

Hypothesis: Placing the “Submit an org/event” CTA in the About footer generates higher submission volume than only surface-card CTAs.

Variant A

Both entry points (current)

Variant B

Footer CTA only

Metric Weekly submission volume; conversion rate by entry point

Exp 03

Verified badge on org cards

Proposed

Hypothesis: Users engage more with orgs that show a “verified” badge.

Variant A

No badge (current)

Variant B

Verified badge on verified orgs

Metric CTR to org detail; qualitative trust perception

Release & operating model

SDLC I run through, from problem to iteration.

Lifecycle

  1. 1Discovery
  2. 2PRD
  3. 3Design
  4. 4Engineering refinement
  5. 5Definition of Ready
  6. 6Development
  7. 7Code review
  8. 8QA
  9. 9Staging (Vercel preview)
  10. 10Release
  11. 11Monitoring
  12. 12Customer feedback
  13. 13Iteration

PM responsibility per stage

  • Discovery

    Observation, informal interviews, journey mapping

  • PRD

    Problem statement, user story, acceptance criteria, analytics events

  • Design

    Empty states, error states, mobile-first review

  • Engineering refinement

    Data model + edge case questions answered

  • Definition of Ready

    Gate keeper

  • Development

    Unblock; answer product questions

  • Code review

    Product acceptance

  • QA

    Product acceptance across devices

  • Staging (Vercel preview)

    Preview + link to stakeholders

  • Release

    Approve merge

  • Monitoring

    Watch for regressions

  • Customer feedback

    Read submissions, reports

  • Iteration

    Prioritize next

Solo build: every role is mine. Framework doesn't change when a team joins — it distributes.

DOR / DOD

Ready and Done — explicit gates.

Definition of Ready

A ticket enters development only when:

  • Problem stated in one sentence.
  • User identified (persona + intent).
  • Acceptance criteria written.
  • Designs / sketches available where UI is involved.
  • Data model dependencies confirmed.
  • Analytics events named (even if instrumentation is deferred).
  • Edge cases documented (empty, error, boundary).
  • Technical questions resolved (RLS impact, timezone, cache).
  • Definition of Done written.

Definition of Done

Done means:

  • Implementation matches PRD.
  • Code reviewed.
  • Tests where meaningful.
  • Lint clean; build succeeds.
  • Accessibility (keyboard, contrast, labels).
  • Manual QA across mobile + desktop.
  • Empty + error states verified in browser.
  • Responsive at 375px / 768px / 1440px.
  • Analytics events added (currently deferred).
  • RLS / permissions verified.
  • Console clean on the affected surfaces.
  • Product acceptance (clicked through, matches PRD).
  • Case study or docs updated.
  • Merged and verified in production.
Product trade-off

How should community submissions work?

A representative decision from this actual project — not a hypothetical.

OptionCostUXAdmin frictionExtensibility
A — Mailto linkZeroFeels datedHigh (retype from email)Low
B — Form → emailSmallModern formMediumLow
C — Form → DB → moderationHigherModernZero re-entryHigh

Decision · C

Option A was the honest MVP shortcut for a day. Every subsequent capability (spam control, dedup, verification, org claim, ownership transfer) requires structured data. Front-loading C's cost saves the hidden cost of migrations later, and gives admins a one-click flow they actually enjoy.

What I gave up: a few extra hours to build the form + server actions + admin OrgRow. Bet: the platform's ability to grow depends on frictionless contribution — worth the upfront cost.

What I learned

Specific lessons, not clichés.

  1. 01

    Naming the problem is 80% of the work. “Community discovery is fragmented” wasn't obvious until said out loud. Once said, every product decision fell out of it.

  2. 02

    A directory is not a product; a discovery experience is. The DB looks the same, but the shape of the UI, ranking, mobile-first tab bar, and city-scoped Home changed because we're building discovery.

  3. 03

    Honest labels beat inflated claims. “Places: Seeded” tells the truth. “Places: Live” would be more marketable and less trustworthy.

  4. 04

    Direct DB submissions were the right hard decision. Building the mailto version would have shipped in an hour and cost weeks of admin overhead. The fastest shortcut isn't always the right one.

  5. 05

    Data quality is UX. Every trust primitive (source URL, moderation, verified badge) is a UX pillar, not a backend concern.

  6. 06

    AI belongs where it earns its place. Nothing in the current product uses in-product AI. Instead, six specific opportunities each mapped with user value + risk + human oversight.

  7. 07

    Community submissions are the growth engine. No amount of scraping keeps a directory current; the community has to feel comfortable submitting. That's why the form matters more than the ingestion.

Roadmap

Six phases — customer problem → capability → outcome → metric.

  1. Phase 1

    Foundational

    Shipped
    Problem
    No structured directory exists.
    Capability
    6 orgs · event ingestion · admin moderation · public submissions · mobile-first UX.
    Outcome
    MVP live.
    Metric
    n/a — no instrumentation yet.
  2. Phase 2

    Instrumentation + Community contribution

    Next
    Problem
    No signal on what works; contribution requires community trust.
    Capability
    Vercel Analytics + custom events · verified badge · “last updated” freshness · expanded report-inaccurate.
    Outcome
    North Star measurable; contribution volume grows.
    Metric
    Weekly submissions ≥ 3; baseline weekly Discovery Actions established.
  3. Phase 3

    More cities & orgs

    Next
    Problem
    Only 6 CA orgs; usefulness caps at California.
    Capability
    Ingestion into Texas, New Jersey, Pacific Northwest · onboarding runbook · org self-claim flow.
    Outcome
    20+ orgs across 4+ regions.
    Metric
    Orgs onboarded / month; % that claim admin.
  4. Phase 4

    Personalization

    Later
    Problem
    Everyone sees the same rails.
    Capability
    Optional accounts · saved favorites · city defaults · follow-org.
    Outcome
    Higher engagement, return visits.
    Metric
    WAU; sessions/user.
  5. Phase 5

    AI-powered discovery

    Later
    Problem
    Complex intent isn't served by keyword search.
    Capability
    NL search over structured data (RAG) · duplicate detection at ingestion · org enrichment.
    Outcome
    New discovery patterns unlock; admin overhead drops.
    Metric
    NL search satisfaction rate; % submissions clearing moderation in <24h.
  6. Phase 6

    Community ecosystem

    Future
    Problem
    Discovery is one loop; ecosystem is broader.
    Capability
    Community accounts · notifications · travel companion.
    Outcome
    Platform, not a directory.
    Metric
    Monthly active community members.