Back to case studies
case studycommunityAI searchagentic discovery

We Are Black America — An AI-powered discovery platform for Black-owned businesses

As CTO of We Are Black America, I built a community engagement platform with AI semantic search, agentic event discovery, live audio rooms, and a full enterprise audit trail — on Next.js 15, Convex, and Expo for the mobile app.

A network of business nodes representing a community directory

The problem we were solving

There are tens of thousands of Black-owned businesses across the U.S. — and finding the one that fits what you need, where you are, right now, is harder than it should be. Google Maps gives you a pin and a phone number. Yelp gives you reviews skewed by the algorithm. Neither understands community: who's serving whom, which businesses anchor a neighborhood, which events bring people together.

We Are Black America (WABA) is built to be that layer — a platform where Black-owned businesses are discoverable, claimable, and embedded in the community context that actually matters to the people looking for them.

I'm the CTO and lead the engineering. What follows is what we built and why.

AI semantic search as the front door

Keyword search doesn't work for community discovery. Someone looking for "a place to celebrate after a job offer" isn't going to type that into a directory. They're going to type "restaurants near me" — and miss the catering company three blocks away that hosts private dinners.

The WABA search layer is built on OpenAI embeddings + Convex with custom retrieval logic on top. Every business in the directory has a chunked, semantically-indexed profile. Every query — whether it comes from the search bar, an AI assistant conversation, or an event recommendation — flows through the same embedding lookup with location, category, and recency biases applied. The result: a search that responds to intent, not just lexical match.

The same retrieval layer powers our AI recommendations surface and the AI Assistant that runs across the platform — built on a unified context layer that knows what the user is looking at, where they are, and what they've engaged with before.

Agentic event discovery: turning the internet into a community calendar

One of the things that makes a community platform feel alive is its events surface — and one of the things that makes it impossible to staff is keeping that surface fresh. So we built agentic event discovery: an autonomous pipeline that finds, classifies, and dedupes community events from across the web, then queues them for editorial review.

The pipeline:

  1. A scheduled agent crawls a curated source list (community calendars, venue pages, social events APIs)
  2. Raw event data is normalized into a canonical shape via structured-output extraction
  3. A classifier scores fit-to-WABA based on relevance signals — Black-owned business involvement, community focus, geography
  4. Deduplication runs across title, location, and date windows
  5. Discovered events go into a queue that admins can review with one-click approve / reject / edit

Everything is logged through our agentic audit log — every model invocation, every classification decision, every state change. If a bad event makes it through, we can trace exactly which agent run produced it.

Live audio rooms

Community discovery doesn't end with a directory entry — people want to actually connect. We shipped audio rooms as a native feature: Twitter-Spaces-style live audio with invitations, presence, and recording controls. The infrastructure runs on Convex's real-time subscriptions for presence, an SFU for the actual audio fan-out, and our notification pipeline for room invitations.

It's a feature most teams treat as a separate product. We treat it as a part of the platform so a business owner can host a "happy hour" room directly from their listing and pull in people already browsing the directory.

Web and mobile from one codebase (almost)

WABA ships as web (Next.js 15) and mobile (React Native + Expo) from a single Turborepo. Convex is the shared backend — every query, mutation, and real-time subscription is consumed identically on both platforms. The mobile app gets native auth (Google + Apple), background tasks, deep links, and push notifications via the React Native side; the web app gets the discovery and admin surfaces.

Sharing the backend means we ship features once. Sharing types means we don't drift. Sharing the agent runtime — semantic search, AI assistant, recommendations — means mobile users get the same intelligence the web users do without us writing it twice.

Enterprise patterns from day one

A platform serving a community has to be trustworthy. From day one, WABA was built with admin audit logging, agentic audit logging (every agent action), and activity logging (every user action). We log who searched what, who claimed which business, who approved which event — everything reconstructible after the fact.

The audit log isn't a compliance checkbox. It's the difference between a platform we can defend in front of a community board and one we can't.

What's running now

  • AI semantic search across the directory, web and mobile
  • AI recommendations + persistent user memory
  • Agentic event discovery keeping the events calendar fresh autonomously
  • Audio rooms for live community conversations
  • Business directory with map, filters, claim flow, favorites, messaging
  • Web + mobile apps from a shared Convex backend
  • Enterprise audit trail across user, admin, and agent actions

Architecture in one paragraph

Next.js 15 (App Router) + Convex (real-time database, queries, scheduled functions, action runtime) + Expo / React Native for mobile. NextAuth with Google OAuth. Mapbox for the map layer. Anthropic SDK for tool-use-driven extraction. OpenAI embeddings for search and recommendations. PostHog for analytics, fully synced. Vercel for the web deploy, EAS for mobile builds. Turborepo holds everything together.

What this proves

Community platforms get accused of being either thin (a directory with a logo on it) or overbuilt (a social network nobody asked for). WABA is neither, because the AI layer carries weight that would otherwise need to be staffed: a recommendations engine that actually understands what you're looking for, an event surface that maintains itself, an assistant that can answer "what's near me right now."

Service businesses can apply the same playbook. The discovery problem inside a single operation — what to do next, who to dispatch, what to surface to whom — is the same problem WABA solved for a directory of thousands of businesses. The pattern travels.

If you're building anything that needs an "intelligent surface" over a directory, a catalog, or a calendar, let's talk.

Want a system like this for your operations?

Tell us what's eating your team's time. No pitch deck — just a direct conversation about what can be automated and what shouldn't.