Brent Haskins / Applied AI
Formably blocks unusable brand color pairs before publish
Formably applies global brand defaults and per-form overrides with contrast validation so generated and manual forms do not ship light-gray-on-white submit buttons. Brent Haskins built this into the AI form product because illegible branded forms were the top support pattern in early launches.
A form that matches the brand but fails contrast is still a broken form.
Formably generates forms from plain language. Generation without brand guardrails produced pretty layouts recruiters could not read on outdoor screens.
Two-level brand model
| Level | Purpose |
|---|---|
| Global defaults | Company-wide palette, typography baseline |
| Per-form override | Campaign accent with precedence rules |
Precedence must be documented in product—not tribal knowledge in support.
Contrast as release gate
Block or warn when:
- Button text vs button background fails minimum contrast for normal text
- Label text vs field background fails for default sizes
Warn with actionable copy (“pick a darker accent”) instead of WCAG jargon alone.
AI output is still untrusted
Even with brand settings, validate generated field labels and helper text server-side. Do not let the model inject arbitrary color CSS outside the token system—see spam and abuse on public endpoints.
Related posts
Brent Haskins shipped Formably full-stack in 2025. Contrast checks are product logic, not a linter you run once before launch.
FAQ
Questions people ask about this topic.
Does Formably check color contrast for forms?
Yes as a product requirement: brand colors at global and per-form levels go through contrast-aware checks before users share a public link. The goal is readable labels and buttons for typical body text sizes, aligned with WCAG contrast minimum guidance—not a substitute for a full accessibility audit of every custom field layout.
How does Formably branding relate to AI generation?
Natural-language generation proposes fields and layout inside brand settings defined in the product—not unconstrained CSS. Global defaults cover logo placement and palette; per-form overrides handle campaigns. See the brand contract post on this blog for the full generation boundary.
Sources