πŸ’‘ Inspiration

Every meaningful social initiative starts with a conversation.

Someone says:

"Our school needs laptops."

Or:

"We don't have enough volunteers."

Or:

"We need funding before next month."

The problem is rarely that people don't care.

The problem is that the right people never see the same conversation at the same time.

I'm based in Uttar Pradesh, India, and I've watched this happen repeatedly.

A school needs computers.

A nonprofit knows a donor.

A volunteer group is ready to help.

A government grant already exists.

Yet none of them connect because each organization works in isolation, across different WhatsApp groups, spreadsheets, emails, and disconnected systems.

The conversation simply disappears.

I started asking myself:

What if one Slack message could automatically assemble everyone needed to solve the problem?

Not another chatbot, search tool, or volunteer database β€” something that actually transforms a conversation into a coordinated mission.

That idea became Groundswell.


🌍 The Problem

Today's nonprofit technology ecosystem is fragmented.

One platform helps manage volunteers.

Another tracks grants.

Another stores donor information.

Another manages projects.

Each solves a single piece of the puzzle.

None solve the coordination problem itself.

Real-world missions require multiple independent organizations working together.

For something as simple as providing laptops to students, success often depends on coordinating:

  • Schools
  • NGOs
  • Corporate donors
  • Volunteers
  • Government grants
  • Community organizations

The challenge isn't finding one resource.

The challenge is assembling the right coalition.

That is the problem Groundswell was built to solve.


✨ What Groundswell Does

Groundswell transforms unstructured conversations into executable missions.

Instead of simply answering questions, it orchestrates action.

Step 1 β€” Detect the Need

A teacher posts:

"We need 50 laptops for students in Lucknow."

This can happen:

  • in a Slack channel
  • inside a direct message
  • through the guided App Home interface

No structured forms required.

Groundswell understands natural language.


Step 2 β€” Understand the Mission

Using Gemini 2.5 Flash through Pydantic AI, Groundswell extracts structured information from the conversation.

For example:

  • Resource needed
  • Quantity
  • Beneficiary
  • Location
  • Mission intent
  • Priority

The conversation becomes a structured mission request.


Step 3 β€” Build the Coalition

Groundswell calls its custom MCP server to discover the best available partners.

It searches for:

  • 🎁 Donors
  • 🏒 NGOs
  • πŸ™‹ Volunteers
  • πŸ’° Grants

If local data cannot satisfy the request, Groundswell intelligently expands the search using AI-assisted government education scheme recommendations.

Instead of showing users hundreds of search results, Groundswell recommends the best coalition for the mission.


Step 4 β€” Explain the Recommendation

Every coalition receives an explainable Coalition Score.

The score isn't generated randomly.

It's built from weighted factors including:

  • πŸ“ Geographic proximity
  • πŸ— Organizational capacity
  • 🀝 Mission alignment
  • πŸ™‹ Volunteer availability

Every recommendation can be justified.

Transparency matters when real communities depend on the outcome.


Step 5 β€” Launch the Mission

Once the coalition is assembled, Groundswell automatically creates a dedicated Mission Room inside Slack.

The Mission Room contains:

  • coalition members
  • mission objectives
  • stakeholders
  • progress tracking
  • next steps

A structured Slack Canvas is also generated automatically, providing a living operational document that evolves with the mission.

The conversation becomes an organized workspace.


Step 6 β€” Stay Involved

Groundswell doesn't disappear after creating the mission.

It continuously watches mission conversations using Slack's Real-Time Search capabilities.

If someone writes:

"We're running out of volunteers."

or

"We still need funding."

Groundswell immediately recognizes the blocker, launches the appropriate MCP search, and responds with recommendationsβ€”without anyone needing to mention the agent.

This transforms the agent from a passive assistant into an active mission coordinator.


Step 7 β€” Measure Impact

Every successful coalition contributes to measurable social impact.

Groundswell tracks metrics such as:

  • Missions launched
  • Students represented
  • Coalitions formed
  • Volunteers mobilized
  • Grants identified

These metrics are displayed directly inside the Slack App Home, giving organizations immediate visibility into their collective impact.


🧠 Why This Is Different

Most AI assistants answer questions β€” Groundswell assembles missions. Most nonprofit platforms manage relationships β€” Groundswell coordinates organizations. Most chatbots stop after generating a response β€” Groundswell keeps working until the mission is actually organized.

That distinction defines the entire project.

Groundswell isn't designed to replace collaboration.

It exists to transform collaboration into coordinated action.


πŸ—οΈ Architecture at a Glance

Educational Need
        β”‚
        β–Ό
Slack AI + Gemini
Need Understanding
        β”‚
        β–Ό
Groundswell Mission Engine
        β”‚
        β–Ό
Custom MCP Server
 β”œβ”€β”€ Donors
 β”œβ”€β”€ NGOs
 β”œβ”€β”€ Volunteers
 └── Grants
        β”‚
        β–Ό
Coalition Formation Engine
        β”‚
        β–Ό
Mission Room + Slack Canvas
        β”‚
        β–Ό
Real-Time Search Monitoring
        β”‚
        β–Ό
Impact Tracking

Every component has one responsibility.

Together they transform a simple conversation into an executable mission.


🌟 The Vision

Slack is where conversations begin.

Groundswell ensures they become coordinated missions by bringing together the right organizations, resources, and people at exactly the right time.

From conversation to coordinated action.

πŸ—οΈ How I Built It

Groundswell is built as a collection of independent components that each solve one responsibility exceptionally well.

Rather than building one large AI application, I designed a modular architecture where Slack, AI reasoning, external tools, mission orchestration, and impact tracking remain cleanly separated.

This made the system easier to debug, easier to extend, and much closer to how an enterprise product would evolve.


πŸ€– Slack AI Capabilities

Groundswell is built on Slack's Agent Builder scaffold using Bolt for Python and Pydantic AI.

At the center of the system is a real AI agent powered by Gemini 2.5 Flash, responsible for understanding unstructured educational requests and deciding which actions should happen next.

Instead of simply generating text responses, the agent performs several reasoning tasks:

  • Understands natural language mission requests
  • Extracts structured mission information
  • Decides when MCP tools should be called
  • Explains coalition recommendations
  • Produces mission summaries
  • Streams responses directly inside Slack

Responses are streamed token-by-token using Slack's native streaming APIs, accompanied by live "Thinking..." status updates and feedback buttons, creating an experience that feels native to Slack rather than a chatbot embedded inside it.

The AI isn't responsible for finding resources.

It's responsible for deciding which resources should be searched for.

That separation became one of the most important architectural decisions in the project.


πŸ”Œ MCP Server Integration

One of the hackathon requirements was integrating the Model Context Protocol (MCP).

Rather than treating MCP as another API wrapper, I made it the backbone of the system.

Groundswell communicates with a standalone FastMCP server running as an independent subprocess.

The MCP server exposes five dedicated tools:

  • find_donors
  • find_ngos
  • find_volunteers
  • find_grants
  • build_coalition

Each tool has a single responsibility.

The Slack agent never searches datasets directly.

Instead, it reasons about the mission, selects the appropriate MCP tools, and lets the MCP layer handle resource discovery.

This creates a clean separation between:

Decision Making

↓

Tool Execution

↓

Data Retrieval

Because of this architecture, replacing today's curated datasets with enterprise databases or live APIs would require changing only the MCP implementationβ€”not the Slack agent itself.

That flexibility is exactly why MCP exists, and Groundswell demonstrates it in practice.


πŸ” Real-Time Search

Most AI assistants only respond when users ask them something.

Groundswell continues working after the conversation begins.

Real-Time Search monitors active mission discussions for blockers such as:

  • volunteer shortages
  • funding gaps
  • missing NGO partners
  • grant requests

Imagine someone replying inside a mission thread:

"We're running out of volunteers."

Nobody mentions the bot.

Nobody asks for help.

Groundswell still detects the blocker, identifies the missing resource, launches the corresponding MCP tool, and responds inside the thread with recommendations.

This turns the agent from a reactive chatbot into an active mission coordinator.

Real-Time Search became one of my favorite features because it demonstrates autonomous behaviour instead of simple request-response interaction.


🧩 Coalition Formation Engine

This is the core innovation behind Groundswell.

Most systems return search results.

Groundswell forms coalitions.

Instead of recommending individual organizations, it assembles the best combination of donors, NGOs, volunteers, grants, and community partners around a single mission.

Every recommendation is evaluated using an explainable weighted scoring model based on:

  • Geographic proximity
  • Organizational capacity
  • Mission alignment
  • Volunteer availability

Instead of saying:

Here are 20 NGOs.

Groundswell answers:

This coalition has the highest probability of successfully completing your mission.

That's the difference between search and coordination.

πŸ“Š Data Layer

For the hackathon, Groundswell uses curated datasets representing educational ecosystems across several cities in Uttar Pradesh, including:

  • Lucknow
  • Prayagraj
  • Banda
  • Kanpur

These datasets contain information about:

  • Donors
  • NGOs
  • Volunteers
  • Grants

When a suitable local grant cannot be found, Groundswell falls back to Gemini-powered discovery of relevant Indian government education schemes.

The important architectural decision here is that the AI never replaces structured data.

It complements it.

This keeps recommendations grounded while still allowing broader discovery when local resources are unavailable.


☁️ Deployment

Groundswell is deployed on Railway with uptime monitoring to ensure judges can evaluate a live, production-ready system at any time.

The deployment remains active, preventing cold starts during judging and demonstrating a complete end-to-end application rather than a local prototype.


⚑ Challenges I Ran Into

Building AI reasoning was straightforward.

Building reliable infrastructure around it wasn't.

Windows + MCP

Reliable communication between the Slack agent and the MCP subprocess required several rounds of debugging.

I encountered Windows-specific subprocess behaviour, stdout buffering issues, and transport initialization problems that silently broke JSON-RPC communication.

Understanding subprocess lifecycle management turned out to be far more challenging than prompting the language model.


Enterprise Grid

Slack Enterprise Grid introduced several API differences that weren't immediately obvious.

Operations such as channel creation required explicit team_id values that aren't necessary in standard workspaces.

Tracking these down required careful debugging because the API failures often appeared unrelated to the real cause.


Production Behaviour

Deployment introduced an entirely different class of problems.

Locally everything worked.

Production exposed issues including:

  • cold starts
  • stale MCP sessions
  • race conditions
  • concurrent Slack event processing

These required real production log analysis rather than local debugging.

It reinforced an important lesson:

A demo that works once isn't the same as a system that works reliably.


Structured AI

Language models naturally generate flexible language.

Software systems require consistency.

Early versions of Groundswell produced category names that didn't match the structured datasets.

Rather than trying to prompt around the issue, I introduced controlled vocabularies together with deterministic fallbacks.

The result was significantly more reliable than relying on prompts alone.


πŸ† Accomplishments I'm Proud Of

Looking back, I'm most proud that Groundswell became much more than a hackathon prototype.

Some highlights include:

  • βœ… All three required Slack technologies are genuinely implemented rather than simulated.
  • βœ… A standalone FastMCP server powers real tool execution.
  • βœ… Autonomous Real-Time Search detects blockers without requiring explicit prompts.
  • βœ… Explainable Coalition Scores provide transparent recommendations.
  • βœ… Mission Rooms and Slack Canvas transform conversations into structured workspaces.
  • βœ… The application is persistently deployed and continuously available.
  • βœ… A comprehensive automated test suite verifies core functionality.
  • βœ… Every major subsystem was independently audited before submission.

The result is a system that not only demonstrates AI capabilities, but also demonstrates engineering discipline.


πŸ“š What I Learned

This project fundamentally changed how I think about AI systems.

The language model was never the difficult part.

The difficult part was everything surrounding it:

  • orchestrating tools
  • managing subprocesses
  • handling production infrastructure
  • designing explainable decision making
  • integrating multiple independent systems into one coherent workflow

The biggest lesson I take away is this:

Great AI products are built on great software engineering.

The model provides intelligence.

The architecture determines whether that intelligence is reliable, trustworthy, and genuinely useful.

πŸš€ What's Next

Groundswell is intentionally focused on education for this hackathon, but the coordination engine was designed to be domain-agnostic.

The same architecture can support any mission where multiple organizations, people, and resources must work together.

My long-term vision is CoalitionOSβ€”where AI coordinates missions across organizations, not just answers questions.

Future work includes:

  • 🧠 Coalition Knowledge Graph to remember organizations, missions, and successful partnerships.
  • πŸ“ˆ Mission Intelligence to predict risks, resource shortages, and mission success.
  • 🀝 Cross-Organization Collaboration that connects schools, nonprofits, companies, governments, and volunteers across workspaces.
  • 🌍 Expansion beyond education into disaster response, public health, food security, environmental sustainability, and economic opportunity.

Groundswell demonstrates that conversations can become coordinated missions.

CoalitionOS explores what becomes possible when thousands of missions learn from one another. Because the hardest part of creating impact isn't finding people who care.

It's helping them find each other.

Groundswell exists to make that happen.

Built With

  • fastmcp
  • google-gemini
  • google-genai
  • mcp
  • model-context-protocol
  • pydantic-ai
  • pytest
  • python
  • real-time-search
  • slack-agent-builder
  • slack-ai
  • slack-api
  • slack-app-home
  • slack-bolt
  • slack-canvas
Share this project:

Updates