Inspiration

"The stakeholder alignment vis-a-vis the Q3 deliverable remains suboptimal."

That sentence scores grade 19 on Flesch-Kincaid — postgraduate reading level, for a message that means "people don't agree yet." For a colleague with dyslexia or a cognitive disability, or someone reading in their second language, sentences like that are a wall. And nobody asks for a translation, because asking marks you as the one who didn't understand.

What it does

/simplify rewrites dense text in plain English, with the reading grade before and after /explain-acronym explains an acronym with workplace context /translate-jargon turns technical language into everyday words /structure-notes reorganises meeting notes into Decisions, Actions, and Context /describe-image generates alt text for an attached image

Plus a message shortcut — "Simplify this message" — so you can make someone else's message readable, privately, without derailing the thread.

Real output:

Before Grade 19.4 (difficult) "The stakeholder alignment vis-a-vis the Q3 deliverable remains suboptimal." After Grade 2.3 (easy to read) "Key people do not agree about the work for Q3. It is still not good enough."

How we built it

Slack Bolt.js over Socket Mode. Readability is scored with Flesch-Kincaid — before and after, so the improvement is measured, not asserted. Rewriting uses Gemini via Google AI Studio, with a rule-based simplifier as a fallback that keeps the tool working with no API key at all. An accessibility knowledge base is served over MCP for grounded terminology.

Challenges we ran into

The one that mattered: we caught the tool silently corrupting a fact.

Gemini 2.5 Flash is a thinking model, and its reasoning tokens are charged against maxOutputTokens. With a 1024 budget, thinking consumed 980 tokens and left 40 for the answer. Responses were being truncated mid-sentence — one turned "4000 users" into "400 users."

For an accessibility tool, that is the worst possible failure. The entire promise is that a reader who can't parse the original can trust our version instead. A rewrite that quietly drops a digit doesn't just fail — it lies to the exact person who has no way to check.

We fixed it three ways: disabled thinking (rewriting to plain language needs no reasoning budget), raised the ceiling, and added a hard guard that throws on finishReason: MAX_TOKENS rather than returning a partial answer. A truncated rewrite now falls back to the rule-based path. Better to be plain than to be wrong.

Structuring meeting notes broke for a related reason: the rewrite splits "John owns the migration" from "it's due Tuesday" into separate sentences, so keyword bucketing filed the owner and the deadline under different headings. Keywords can't hold that together — we moved structuring into the model itself, so owner and deadline stay in one action item.

Accomplishments that we're proud of

We measure the claim. Every response shows the reading grade before and after, so "this is simpler" is a number, not a marketing line. Grade 19 → 2. Grade 22 → 4.

And we made it safe to fail: if the API is down, keyless, or returns something truncated, AccessBridge degrades to the rule-based simplifier rather than showing a corrupted rewrite.

What we learned

For an accessibility tool, a wrong answer is worse than no answer. Our reader is, by definition, the person least able to catch our mistake. That reframed every design decision — the fact-preservation guard, the graceful fallback, and showing the readability score so the user can judge the result rather than trust it.

What's next for AccessBridge

Per-user reading-level preferences learned from the Easier / Just right / Too simple buttons, so the tool calibrates to each reader. Then live simplification of long threads, and multilingual plain-language output.

Built With

Share this project:

Updates