Inspiration

Slack runs on fast, dense, jargon-heavy text. For a lot of people that's a barrier, not a convenience: non-native speakers, neurodivergent teammates, people with low vision, or anyone new to a team and drowning in acronyms. Existing "summary" bots give everyone the same wall of text. We wanted something that meets each person where they are — and that helps them participate, not just keep up.

What it does

Allyn is a personalised, agentic accessibility layer for Slack.

  • /allyn setup captures each person's needs: language, reading level, summary length, jargon handling, and free-text access notes. Everything Allyn shows that person is adapted to it.
  • /allyn catchup gives a private, plain-language, translated digest of a channel — the same channel renders differently for each teammate.
  • “Simplify with Allyn” (message shortcut) rewrites any single message at your reading level and language, expanding team acronyms it has learned.
  • /allyn triage reads a conversation, extracts the action items, and turns each into a task — then /allyn tasks lets you complete them with one tap.
  • /allyn remind schedules reminders Allyn DMs you when due.

How we built it

  • Slack Bolt (Python) + Socket Mode for a no-hosting, zero-cost runtime.
  • A custom MCP server (allyn.mcp_server) exposes Allyn's action tools (create_task, set_reminder, glossary, list/complete) over the Model Context Protocol. The agent connects to it as an MCP client over stdio and routes every action through it — that's the challenge's "MCP server integration", used for real.
  • A free-tier LLM brain: Google Gemini primary, Groq automatic fallback.
  • SQLite for profiles, tasks, reminders, and the team glossary — inspectable and portable.
  • The accessibility logic lives in pure, unit-tested functions (22 tests, no network); MCP, the LLM, and Slack are thin adapters around that core.

Challenges we ran into

  • Bridging Slack's synchronous handlers with the async MCP client SDK — solved with a persistent MCP session on a dedicated event-loop thread.
  • Reliable action-item extraction on free models — solved by making extraction a deterministic two-step (one structured LLM call → explicit MCP tool calls) with tolerant JSON parsing.

Accomplishments we're proud of

  • Personalisation that's genuinely per-user, not one-size-fits-all.
  • A real MCP integration, not a checkbox.
  • Runs entirely free, locally, with a tested core.

What we learned

Accessibility is most powerful when it's the default and when it's active — helping people act, not just read.

What's next

Voice/audio digests, scheduled morning briefings per profile, more MCP tools (calendar, docs), and publishing the action tools as a reusable MCP server.

Built With

  • block-kit
  • fastmcp
  • google-gemini
  • groq
  • mcp
  • model-context-protocol
  • python
  • slack-bolt
  • socket-mode
  • sqlite
Share this project:

Updates

Submission history