← All articles
8 min readAccessibility,Cognition,Plain Language,Localization

Cognitive Accessibility in Flowo: The Rules We Enforce in Code

By Maksym Bardakh Ivko · Chief Executive Officer

In short

In Flowo, cognitive accessibility is a set of rules that fail the build when someone breaks them. Onboarding asks one question per card, and a governance test counts decorative effects and Material widgets per file and rejects any increase. BBMM Technologies ships the app in seven languages, two of them right-to-left, and a completeness test checks every catalog against the English template.

What we mean by cognitive accessibility

Cognitive accessibility is the part of accessibility that deals with how much attention and memory an interface demands. WCAG 2.2 covers some of it in criteria such as 3.2.3 Consistent Navigation and 3.3.2 Labels or Instructions. The W3C note Making Content Usable for People with Cognitive and Learning Disabilities goes further and describes patterns for clear language and predictable structure.

Flowo is a planning tool. It captures tasks and places them in a day. A planner is read in short visits, often in the middle of something else, so we treat every extra decision and every decorative signal as a cost.

One decision per screen in onboarding

Flowo's setup flow shows one question at a time. The screen that asks clarifying questions holds the full list and an index, and it renders a single card for the current index. Answering a card stores the answer and advances.

A card with nothing to ask is skipped. The card about how often someone does their activities depends on activities named earlier, so when none were named the flow moves past it.

Answers are kept. When someone picks "Change my answers" after seeing the result, the cards reopen with each earlier answer matched back to its question by id. Nobody has to remember what they chose.

Every primary action in the flow is the same full-width button. The step dots that used to count the screens were removed. Our design notes record the reason: the dots told people how much was left and did not tell them what to do.

The eligibility notice is the shortest example. A copy test pins its title, its single paragraph and its single button. The button label, "I'm 16 or Older", states the fact that pressing it confirms.

Plain language checked by tests

No sentence in Flowo's presentation code may be written inline. A test scans the screen, widget and notification folders with a pattern that matches a capitalized word followed by a lowercase word inside a text widget or a label argument. A match fails the run with the instruction to move the text into the catalogs.

The same file screens the English catalog for a short list of phrases we consider filler, among them "highly skilled ai" and "processed by neural engine". A second scan rejects Cyrillic literals in screens, which catches copy written for one locale and left in the code.

Explanations are assembled from catalog strings. When the planner places a block, a sheet named Why Here can explain the placement. Its model has one headline sentence, an optional factor that decided the slot and an optional next best alternative. The sheet shows no free text.

Translation quality has its own regression tests. The French test exists because durations once rendered minutes with the word for months. It now requires "30 min" and "1 h", and it checks a list of strings for informal address so the app speaks to the person as vous on every screen.

Predictable navigation

Flowo's shell has four destinations and one Create control. The destinations are Today, Thoughts, the assistant chat and Settings. Settings is last by default, at the far end of the bar where most apps put it.

People can reorder the tabs in Settings, and a saved order is kept exactly as they left it. On every read the order passes through a small function that removes duplicates and appends any missing tab. A corrupted or outdated saved order can never make a destination disappear.

Tabs keep their state. The destinations are children of an indexed stack, so each tab keeps its state while another one is on screen.

In Arabic and Hebrew the bar mirrors. A widget test renders it with an Arabic locale and asserts that Today sits to the right of the chat tab.

Hints follow the same restraint. Flowo has five tips. A tip never blocks the screen, only one shows per place, and a tip is marked done by the action it teaches.

What the design governance test forbids

One test in Flowo, named "visual-debt allowlist can only shrink", decides which visual patterns may appear in the interface. It reads every Dart file under the design, screens, theme and widgets folders, strips the comments, and counts matches for eleven patterns.

  • Linear, radial and sweep gradients.
  • Custom box shadows and glow helpers.
  • Backdrop blur and glass surfaces outside the navigation layer.
  • Confetti.
  • Sparkle and magic wand icons.
  • Ten specific decorative emoji.
  • A hard-coded Inter font family.
  • Eyebrow labels above headings.
  • Material widgets, from Scaffold and AppBar to SnackBar and showDialog.
  • Any reference to the Material icon set.
  • Five legacy card and header components.

Each pattern has an allowlist that maps a file path to the number of occurrences that file is permitted. A file that is absent from the list is permitted zero. If a count rises above its number, the test fails and prints the file.

The Material rules follow from a decision we made on 5 September 2026: Flowo uses Cupertino controls on both iOS and Android. One control vocabulary means a switch or a sheet looks and behaves the same on every screen. The remaining Material code is counted as debt. Today the allowlist holds 39 Material widget occurrences across 22 files and 16 Material icon references across 3 files.

Confetti has one reviewed exception. A single burst plays when onboarding completes, and the widget is not built when reduced motion is on.

Seven locales and right-to-left

Flowo ships in English, Ukrainian, Arabic, German, Spanish, French and Hebrew, and all seven are mandatory for every change. The English catalog holds 2,274 messages at the time of writing.

A completeness test compares every catalog with the English template. It enforces the following:

  • Every catalog has exactly the English keys, and no value is empty.
  • ICU placeholders match the English message in every locale.
  • Plural messages cover the categories each language needs: six for Arabic, four for Ukrainian, three for Hebrew.
  • Nineteen consent strings must differ from the English text, so privacy copy cannot fall back to English unnoticed.
  • Arabic and Hebrew resolve to right-to-left, and the other five resolve to left-to-right.

Known limits

Flowo's governance allowlist still records 60 decorative emoji across 9 files and 34 gradients across 15 files.

We do not measure reading level automatically. The tests catch banned phrases, inline strings and specific regressions. They do not score sentence length or vocabulary.

flowoapp.com is available in five languages: English, Ukrainian, French, German and Spanish. The site has no Arabic or Hebrew version, so the right-to-left work described here applies to the app only.

Key takeaways

  • Flowo's onboarding renders one clarifying question per card, skips a card that has nothing to ask, and restores earlier answers by question id.
  • A test fails the build when an English sentence is written inline in a screen, widget or notification file.
  • The governance test counts eleven visual patterns per file and rejects any count above its allowlisted number.
  • Flowo uses Cupertino controls on iOS and Android, and the remaining Material code is 39 widget occurrences in 22 files.
  • All seven locales are checked for key parity, placeholder parity and the plural categories of each language, including six for Arabic.

Frequently asked questions

What is cognitive accessibility in app design?
Cognitive accessibility covers how much attention and memory an interface asks for. In practice it means clear wording, one decision at a time and navigation that stays where people expect it. WCAG 2.2 addresses parts of it in criteria such as 3.2.3 Consistent Navigation and 3.3.2 Labels or Instructions.
How does Flowo keep onboarding from asking too much at once?
Flowo shows one clarifying question per card and advances when the card is answered. A question that depends on an earlier answer is skipped when that answer leaves it empty. Every primary action uses the same full-width button, and the flow has no step counter.
How can a test enforce plain language?
A test cannot judge style, but it can enforce where text lives and what it must never contain. Flowo's tests reject sentences written inline in presentation code, reject a list of filler phrases in the English catalog and pin the exact wording of key onboarding strings. Regressions found in translation, such as wrong duration units in French, get their own assertions.
Why does Flowo use Cupertino widgets on Android?
We decided on 5 September 2026 to ship one control vocabulary on both platforms, so every switch, sheet and button behaves the same on every screen. Android keeps its system guarantees such as the Back gesture and font scale. Material widgets that remain are counted by a test, and the count is only permitted to fall.
Which languages does the Flowo app support?
The Flowo app supports English, Ukrainian, Arabic, German, Spanish, French and Hebrew. Arabic and Hebrew render right-to-left, and a widget test checks that the tab bar mirrors. The flowoapp.com website is available in five of these languages and has no right-to-left version.

References

About the author

Maksym Bardakh Ivko

Chief Executive Officer

Maksym leads product at BBMM Technologies. He designs Flowo’s scheduler and writes most of what ships in it.