Inspiration

I was looking at a large group chat where people were trying to organize a team practice for my pickleball team. People were suggesting times and places or talking about random other things that had nothing to do with planning our practice. It was a mess, and that was only with half the group participating.

That led me to this idea. A social app that encourages people to put down their phones and meet with real people. Limited online conversations. No photos and endless scrolling. Just planning and meeting without the confusion.

What it does

It gives people a focused and easy way to make a plans with friends or to find public gatherings or events nearby. There are a few ways it does this, and integrates directly with AI assistants.

  • HERE NOW "I'm at the neighborhood bar right now. Let my friends know." This will send a "here" event notice to your friends group.

  • MIGHT GO "I'm looking for 3 other people to meet me for pickleball at 4pm today at Hammond Park. Anyone can join." Create a conditional plan that only becomes confirmed when enough people commit. No more showing up and wondering if anyone else will be there.

  • DEFINITELY GOING "I'm going to trivia tonight at Mo's. Let my trivia group know." An open invitation to everyone in the user's trivia group.

  • FEELERS "Let's plan pickleball practice with my pickleball team any weekday this week at 7 or 8. We can play at Hammond Park or Ridgeview." This will open a poll that's sent to my pickleball team. It will have several options for times and days and it will have options for the location. When enough people have answered, the organizer can turn the results into a confirmed plan.

AI-powered social coordination

FolkAround isn't just another application that an AI assistant can search. Through its MCP integration, assistants can help users discover activities, coordinate availability, join gatherings, and organize plans through natural conversation.

The MCP server is already operational and demonstrated through ChatGPT. Its capabilities are designed to support future voice-first experiences such as Alexa+, where someone could organize an evening with friends simply by speaking to their assistant.

How we built it

I started FolkAround on September 29, 2026. In under four weeks it became a live web app at folkaround.app, an iOS app, and an MCP server that AI assistants can connect to. Though I used AI agents to build it, it began with a framework I had previously hand-written.

Architecture

One API contract. Protocol Buffers define every endpoint. Go and TypeScript types are generated from them, so the server, the web client and the iOS app can't drift apart.

Go backend using Connect, which serves gRPC, gRPC-Web and Connect on a single port. All SQL, permission checks and audit records sit in one data layer. Privacy rules like "a private group's plans never show up in a count or search" are written once there, and every query uses them.

PostgreSQL with ordered migrations built into the server binary. All infrastructure is managed in Terraform.

Web client built with Lit, Vite and TypeScript. The iOS app is a Capacitor shell around the same web build, with live updates, push notifications and Siri App Intents.

The MCP server

Built into the API, not bolted on. /mcp runs MCP over stateless HTTP using the official Go SDK. Each tool is a thin handler over the same data layer the app uses, so an assistant gets exactly the same privacy and permission rules as a person using the app.

32 tools across two tiers. Signed-out tools (find_events, find_places, find_venues, count_plans, …) return only what the public pages show, and plans appear only as counts. Once a user connects their account, the assistant can post plans and feelers, answer them, turn a feeler's poll into plans, join groups, read and post in a plan's chat, and check my_updates.

OAuth 2.1 sign-in. It uses PKCE, Client ID Metadata Documents, and Dynamic Client Registration for clients like Gemini. Tokens are tied to the /mcp resource and can't be used as an app session. Each client is named by a host the server can verify, and users under 18 can't connect an assistant.

Preview, then confirm. Every tool that other people will see (posting, answering, cancelling, inviting) makes two calls. The first is a dry run that changes nothing and returns a preview plus a confirm code valid for 15 minutes. The second call, with that code, does the action. The dry run uses the real code path and rolls back its transactions, so a preview refuses anything the real action would refuse. A user never says yes to something that can't happen. This turns out to work well for voice: the assistant reads back what it's about to do and acts on "yes."

Built to be safe for voice and chat. Tool descriptions and server instructions are kept within a token budget enforced by tests. Answers name a plan's host and nobody else. Other people's messages are passed along as data, never as instructions. Each tool has per-user rate limits, and the logs record no personal data.

Measured. A daily count per tool and per assistant feeds an Assistants dashboard in our admin console. I built it with AI coding agents working against design documents in my own ticket system, with real-database tests and visual-regression tests as gates on every change.

What's next for FolkAround

Building traffic. Onboarding venues. The business model is that this will always be free for users. Venues can pay a small fee to list their events which are shown to nearby users as promoted events.

The mcp connector and plugins are currently in review in Claude and ChatGPT. I'm looking forward to being able to do the same with Alexa+.

Share this project:

Updates

Submission history