Inspiration
Slack is where work happens — but for deaf and hard-of-hearing, low-vision, dyslexic, ESL, and neurodivergent teammates, it can be a wall of unexplained acronyms, dense threads, and undescribed screenshots. Accessibility tooling usually stops at the OS level; nothing adapts the content itself to the reader. Clarion closes that gap: same conversation, delivered in the form each person can actually use.
What it does
Accessibility profile (/clarion profile): each user picks how they want content — plain language, bullet summaries, or original style — and opts into acronym expansion and image descriptions. Stored per user; every Clarion response adapts to it. "Make Accessible" message shortcut: right-click any message → get a private card with a TL;DR, plain-language rewrite, action items, expanded terms, and a permalink to the original. One click sends it to your DMs for later. Nothing is posted publicly — no one has to disclose a disability to their team. Workspace-aware acronym expansion: asks Slack's Real-Time Search (assistant.search.context) what an acronym means in this workspace and cites the source message; falls back to general knowledge when no workspace definition exists. Private image descriptions: when someone posts a screenshot or chart, opted-in channel members privately receive an AI-generated description that reads out the actual text and numbers in the image (e.g. "Q3 Revenue Dashboard — NRR 118%, Churn 2.3%"). Agent chat: Clarion lives in Slack's agent panel with suggested prompts, live status, and thread titles — ask it anything and it answers in your preferred reading style. MCP server: Clarion's four capabilities (simplify_text, describe_image, expand_acronym, accessibility_lint) are also exposed as MCP tools over stdio, so any MCP client — including Slackbot's MCP client — can reuse them.
How we built it
Slack: Bolt for JavaScript (TypeScript, Node 20), Socket Mode, the agent surface (agent_view, assistant.threads.*), Block Kit modals/cards, message shortcuts, and the Real-Time Search API. AI: GPT-4o (text + vision) via an OpenAI-compatible API, with centralized prompts that inject each user's accessibility profile into every call. Storage: SQLite for profiles/opt-ins only — message and image content is never stored (processed in memory, delivered ephemerally or by DM). MCP: @modelcontextprotocol/sdk server sharing the exact same core logic as the Slack app.
Challenges we ran into
Slack action payload size limits broke "Send to my DMs" for long cards — solved with a UUID-keyed in-memory card cache. The sandbox's RTS endpoint rejects action tokens (invalid_action_token), so we built graceful degradation: Clarion still answers from general knowledge and clearly labels it. The image pipeline needed careful privacy scoping (only opted-in users who are actually members of the channel get descriptions) plus rate limiting.
Accomplishments
Every feature was verified live in a real Slack Developer sandbox — profile persistence, the shortcut card + DM delivery, acronym expansion, private image descriptions that correctly read a dashboard's real numbers, and MCP tool calls over stdio.
What's next
Daily "what you might have missed" digests tuned to cognitive-load preference, unanswered-mention nudges for users who opt in, an inclusivity linter, and huddle caption summaries.
Track
Slack Agent for Good — accessibility. Impact statement: Clarion removes the invisible tax that fast, jargon-dense chat places on disabled and ESL workers, privately and without requiring anyone to disclose a disability. One in six people worldwide live with a significant disability; most workplace chat tooling ignores them.
Qualifying tech used (all three)
Slack agent surface / AI capabilities — agent panel, suggested prompts, assistant.threads.* Real-Time Search API — workspace-grounded acronym expansion with citations (graceful fallback) MCP server integration — four Clarion tools over stdio
Built With
- block-kit
- gpt-4o
- mcp
- node.js
- real-time-search
- slack-agent-surface
- slack-bolt
- socket-mode
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.