Inspiration

Over 1.3 billion people worldwide (16% of the global population, or 1 in 6) live with a significant disability (WHO, 2022). Despite this, modern digital workspaces like Slack are designed around an assumed-abled, native-English-speaking, low-distraction default user.

We were inspired by the "Curb-Cut Effect",the phenomenon where accessibility features built for a specific group (like sidewalk ramps for wheelchair users) end up benefiting everyone (like parents with strollers, travelers with luggage, or cyclists). We wanted to build Bridge: an ambient infrastructure layer that quietly transforms the default Slack experience into one that is more supportive, cognitively accessible, and inclusive for all employees.

What it does

Bridge works as a passive helper and an on-demand command suite across your workspace:

  1. Auto Alt-Text: When an image is posted, Bridge automatically calls a vision model to generate a WCAG-compliant description and replies in the message thread.
  2. Ambient Translation: Teammates can configure their preferred language. When messages are posted in other languages, Bridge silently translates them ephemerally (visible only to that user) to prevent cluttering the channel.
  3. Plain-Language Simplification (/bridge simplify): Neurodivergent teammates or anyone returning to a massive thread can get a plain-language summary of the discussion.
  4. Channel Digests (/bridge digest): Provides a scannable daily summary of channel activity at a plain-language reading level.
  5. Private Inclusion Nudges: When exclusionary or aggressive language is used, the bot privately DMs the author with a non-judgmental suggestion and a swap option. It is rate-limited and completely opt-out-able.

How we built it

Bridge is built using Python and the official Slack Bolt SDK, taking advantage of the Agents & AI Apps framework.

  • Backend Storage: Local preferences and rate-limit logs are persisted in a DynamoDB Local container running via Docker Compose.
  • Large Language Models: To maintain high speeds and cost efficiency, we integrated Ollama Cloud's OpenAI-compatible endpoint. We route text reasoning, translation, and classification tasks to the gpt-oss:120b Mixture-of-Experts (MoE) model, and use gemma3:27b for image vision processing.
  • Context Fetching: We utilize Slack's RTS (Real-Time Search) API to fetch entire thread contexts dynamically for simplification and digests.

Challenges we ran into

  • Surveillance vs. Support (Nudge Calibration): Setting up a classifier that monitors language runs the risk of feeling like "Big Brother." We mitigated this by enforcing strict asymmetrical privacy: nudges are sent exclusively via private DMs, never logged in the database with their text content, and gated behind a high confidence threshold ($0.75$).
  • Adversarial Tuning: To verify the nudge classifier, we wrote an adversarial test suite of 17 complex cases (jargon, reclaim words, sarcasm). By tuning the system prompt on gpt-oss:120b, we achieved a 0.0% False-Positive rate and a 5.9% False-Negative rate.
  • SQLite Windows Mounting: During Docker setup on Windows, we encountered folder/file permission errors from SQLite within DynamoDB Local. We solved this by switching the container's execution command to utilize the -inMemory flag, removing volume dependencies entirely.

Accomplishments that we're proud of

  • Fail-Silent Passive Design: If an LLM call fails, background tasks degrade silently without alerting users or starting retry loops, while on-demand user commands fail gracefully with a friendly "Try again shortly" message.
  • Strict Performance Goals: The test suite uses moto for mocking AWS resources, ensuring quick local testing runs in under 10 seconds.
  • 100% Passing Tests: Fully verified unit test coverage across language detection, preferences, and the live LLM classification endpoint.

What we learned

We learned how crucial it is to design for the worst-case scenario when using AI in group communication settings. Treating accessibility as an ambient layer rather than a standalone app that users have to remember to summon makes the entire workspace a more collaborative and empathetic place.

What's next for Bridge

  • Aggregated Admin Analytics: Providing workspace administrators with anonymous, aggregated charts showing the number of alt-texts and translations generated, proving organizational impact without violating user privacy.
  • Feedback loop: Adding a "This nudge wasn't helpful" button so users can flag false positives and fine-tune their local instance's classifier threshold.
  • Serverless Production: Migrating the Bolt handler to run on AWS Lambda behind an API Gateway, pointing at a production regional AWS DynamoDB table.

Built With

  • docker
  • dynamodb
  • gpt-oss:120b
  • moto
  • ollamacloudapi
  • pytest
  • python
  • slackboltapi
  • slackrts
Share this project:

Updates