Inspiration
Blue North is a nonprofit startup hub in Northern Kentucky. Its real product is relationship memory — years of context on every founder, investor, and mentor in the region, and the intros between them. But that memory lives in inboxes, meeting notes, and one or two people's heads. When a teammate is out, an intro goes cold, or a win never gets captured, the mission quietly loses ground — and so do the founders who depend on a small team. We wanted that memory to be reachable from where the team already works: Slack.
What it does
Founder Relationship Manager is a Slack agent backed by Blue North's FRM database. In a DM or thread you can:
- Get meeting prep — a brief assembled from real history (shared connections, open loops, funding, even founder passions), optionally published as a Slack Canvas.
- Ask the ecosystem anything — "who haven't we touched in a while?", "how many open founder asks are there?" — answered with read-only SQL.
- Capture in one message — log a note, record a success story (queued for human review, never auto-published), flag an anticipated hire/raise, or share a timely read.
13 tools, behind one conversational agent.
How we built it
One tested core, multiple front doors:
- Shared core (
src/lib/frm/*,src/lib/prep/*) — entity resolution, NL→SQL, capture parsing, write actions, Canvas conversion, and the meeting-prep engine, all unit-tested. - MCP server — a standalone Model Context Protocol server (session-managed Streamable HTTP, bearer-authed) exposes the core as 13 tools + a
frm://schemaresource. - Slack agent — a Bolt for JavaScript app using the Claude Agent SDK, run in Socket Mode, that connects to the FRM MCP server over HTTP and streams answers into Slack. Prep briefs render as Slack Canvas docs.
- Data + AI — Supabase Postgres (a synthetic sandbox for this submission) behind a hardened read-only SQL boundary; Anthropic Claude powers the agent, the prep narrative, and the NL→SQL loop.
Challenges we ran into
- Extracting battle-tested logic without changing behavior — we ported production regexes verbatim and wrote tests that pin the quirks rather than "fixing" them.
- Staying rules-compliant — the whole demo runs on synthetic data (no third-party PII), with a seeder that refuses to touch production.
- Making free-form SQL safe for an agent — a hardened read-only RPC (SELECT/WITH-only, single-statement, no write/DDL, row-capped).
- Wiring the agent to MCP on Windows — the stdio spawn failed silently, so we moved to a session-managed HTTP transport, which we verified end-to-end with a real MCP client.
Accomplishments that we're proud of
- A genuinely useful workflow, not a demo toy — the same engine runs Blue North's FRM today.
- Meeting prep as a durable Canvas, not an ephemeral message.
- Human-in-the-loop writes: success stories queue for review instead of auto-publishing.
What we learned
The highest-leverage move was architectural: re-fronting existing capability behind MCP unlocked Slack, every MCP client (Claude Desktop/Code), and the admin app at once — one core, many surfaces.
What's next for Founder Relationship Manager — a Slack agent
Bring the agent to Blue North's real workspace; add proactive nudges (an intro about to go cold → the agent pings the owner); and open-source the pattern so other accelerators, chambers, and economic-development organizations can run an agent over their own relationship data.
Built With
- anthropic-claude
- bolt-js
- claude-agent-sdk
- mcp
- model-context-protocol
- next.js
- node.js
- postgresql
- slack
- slack-canvas
- supabase
- typescript
- vercel
- vitest
Log in or sign up for Devpost to join the conversation.