The Site Map graph assembling itself, in the chrome it ships in

Novus Motion Lab

Company Pendo

Year 2026

Type

A self-set challenge. Can a whole family of marks come from one geometric grammar, and can each mark's animation explain how it is built instead of decorating it?

Rather run it than read about it? The full motion lab is at the end.

Blocks, 45 degree diagonals, a fixed grid. Twelve marks. Grid, Cross, Stack, Chevron, Ladder, Zigzag, Arrow, Triangle, Frame, Bolt, Spark, and the Novus logo itself, each captioned with the rule that produces it.

139

commits on a motion system nobody asked for, started as a self-set challenge and finished as product work

Designer and creative technologist, solo and self-initiated, July 2026. Built for Novus, an emerging Pendo product with its own visual identity, deliberately distinct from the main design system.

style 1 · currentColor · follows the theme

  • Auto-detect pages and featuresNovus scans your codebase and maps every page, feature and event, with no manual tagging.
  • AI-powered product intelligenceSmart groupings, naming and product areas generated from how your code actually works.
  • Install via PR, go live in minutesReview a single config change, merge it, and your analytics are live. No SDK wiring.
Mapping pages and features
Building your product map
The onboarding panel and the loaders, in the chrome they ship in. Both sides are the committed components, so flipping the switch swaps real code rather than two screenshots. The loaders are the pieces the reviewer wanted swapped first, shown at the sizes they actually run at

One grammar generates the whole set. That is the entire trick. Every mark is blocks on a grid with diagonals locked to 45 degrees, so twelve marks made months apart still look like siblings without anyone maintaining a style guide.

Motion follows the same logic. A lattice snaps together. Arms chase each other around a centre. Lightning strikes rather than fades. Each animation is the construction of the mark performed rather than an effect applied to a finished thing.

2×2 lattice snaps in
hub first, then four arms chase out
a 45° Z, doubled at the kink

Those three, in order, are the three sentences above.

The 45 degree rule was not decorative, it was the constraint holding the set together, and the tier data had quietly drifted to about 41 degrees.

I did not notice by eye. A linter I had written to enforce the rule noticed.

Writing the rule down as something a machine can check turned out to matter more than writing it down as a principle. A principle in a document degrades silently. A principle in a linter fails the build.

two chevrons, arms sweep in at 45°
two rails, then the rungs between them
one W-path, every segment at 45°
apex first, base closes it
an X radiating from a doubled hub
the real mark: blocks pop, diagonal draws
Assembly — each mark builds itself the way its rule says. Running the lab's generators, so the rule under each one is the rule that drew it. Point at any of them to watch it build again

The piece I would actually show is the builder. Constrained generation behind a gate I called Laws, so a teammate could produce a new on-brand mark without me and without breaking the system.

That changes what the deliverable is. Not twelve marks, but the thing that makes the thirteenth correctly.

I also formalised responsive tiers, condensed through regular through expanded, and later reframed them as two axes, size and density, which is the version that actually held up.

The style debate is the part worth telling.

Two candidate directions. Style 1 was the restrained one. Style 2 was more expressive, and I preferred Style 2. So did one of the senior designers.

Style 1, the restrained one. What shipped
Style 2, the expressive one. What I wanted

I argued for Style 1 as the production path anyway, because Style 2 was too distracting in flow. A mark that appears next to text someone is reading has a different job from a mark on a landing page, and my preference was formed looking at it in isolation.

I let the deployed lab and the builder carry the argument rather than my opinion, which meant the people disagreeing with me could go and check.

Calling it two directions is the tidy version. There were four.

Style 3 was an LED treatment, the mark resolving on a dot matrix. It had the best case for scale of any of them, because a grid of lights is modular by construction and would have survived any size I threw at it. It was also the hardest to read. At the sizes these actually appear the dots stop being a mark and start being a texture, and I could not make that go away.

Style 4 scrambled and resolved, characters landing one by one until the word appeared. People liked that one, and it fits the brand better than it has any right to. It is also the one I would not put in a product. A mark that looks like it is decrypting something reads as is my computer being hacked, not the app is thinking. That is a fine feeling on a marketing page and the wrong one next to somebody's data, so it is parked rather than dead.

Style 1 won because it reads as the brand mark. The others were all recognisably a system; this one was recognisably ours, and that is why it kept getting worked on while the rest sat still.

Style 1 is what went forward. The reviewer it was built for described it as something to raise more broadly and try to get into production, and floated swapping the generic loading spinners as an easy first win.

This one has no business metric attached and I am keeping it in anyway.

It is the clearest evidence I have of the thing I actually do: pick a constraint tight enough to be annoying, hold it, build the generator rather than the artifact, and then make a machine check the rule so my own eye cannot quietly relax it.

The marks were later ported into Novus's real codebase, replacing hardcoded hex illustrations with ones that inherit theme colour. That was the point at which a self-set exercise became the product's actual motion identity.

Connect and scan your codebase
AI is building your product map
Go live via a single pull request
The three onboarding illustrations as they ship, drawn from the committed component rather than described. The set they replaced was hardcoded hex, which is the whole difference: switch this site between light and dark and these follow it, because the production version inherits its colour the same way the ones above do
Before and after, rendered from the committed components — reload inside to replay the one-shot animations · open full screen

Want the whole system, not just the spike? The full lab is nine views: the builder, the rules, the tiers, the loaders.

The complete motion lab · open full screen

all work