← All posts

Charts That Tell the Truth: Validating Our Data-Viz Palette

June 30, 2026 · 5 min read

By Ruby Cotterell, Product & Brand Design at Genovo Technologies

There is a special embarrassment available to a data-quality company that ships deceptive charts. Our dashboards render risk trends, credit spend, growth curves, and dimension scores — and every one of those pixels either supports or undermines the claim that we take measurement seriously.

So we stopped choosing chart colors by eye. Every series color is validated computationally against the actual dark surface it renders on: lightness inside a defined band, chroma above a floor, colorblind-vision separation between adjacent hues, and a minimum contrast ratio. Our violet passed; our first two emerald candidates failed the lightness band and were replaced by one that passed. The validator does not care that a color looked nice in Figma.

Marks that stay out of the way

Color is half the honesty; geometry is the rest. Lines are two pixels, grids are recessive dashed hairlines, axes drop their boxes, and a single-series chart carries no legend because the title already names it. Tooltips ride the shared glass surface with a crosshair cursor, and values always state their unit — a trend labeled “Risk Score Trend” with a per-point “% risk” reads honestly at a glance.

Text never wears the series color. Values, labels, and legends stay in ink tones; a colored mark beside them carries identity. It is a small rule that prevents a whole family of rainbow-dashboard failures.

Prototype, validate, ship

The workflow is now boring in the best way: prototype the chart, run the palette through the validator for the target surface, fix what fails, then look at the rendered result for label collisions and overflow before it ships. Design intuition still matters — it just is not allowed to overrule arithmetic on questions arithmetic can answer.