Product Design · Autonomous Driving

Scaling Autonomous Vehicle Simulation through traceable programming logic

Nobody called it a problem. That was the first thing I had to understand.

Timeline
Oct – Nov 2021 (Launch)
2023 – 2024 (Scaling)
Tools
Figma · Miro
Unity · GitHub
Team
1 Designer (me)
1 Product Manager · 5 Engineers
The Expressions Panel inside the Genie simulation platform ⚑ Pending Patent

The Expressions Panel — a logic editor embedded directly in the simulation environment.

50%
faster at creating complex scenarios
17%
more scenario revisions — engineers iterating, not accepting
Patent
for dynamic scenario variation management at scale

There was a workaround baked into every engineer's day

Genie is Five AI's internal simulation platform for building autonomous driving scenarios — speed, position, junction behaviour, hundreds of parameters. What it couldn't handle was relationships between values.

If a value was derived — relative speed, proportional distance — engineers had a quiet ritual: open phone calculator, do the maths, type the result back by hand. It worked. Nobody complained.

In a contextual observation session, I watched an engineer pause mid-configuration, pull out his phone, do some maths, then return to Genie. I asked how often he did that.

"Every single time."

The real problem wasn't the maths — it was the missing memory

I ran discovery across three tracks: user interviews, quantitative analysis of existing scenarios, and usability testing once I had a prototype.

The interviews surfaced something the data couldn't: engineers weren't just doing maths outside the tool — they were losing track of why a value was what it was. A number like 14.6 in a field told you nothing about why it was 14.6. The reasoning lived in engineers' heads, not the system.

User Interviews
User Interviews
Walk-throughs of real scenarios with three engineers — not hypotheticals.
Quantitative Analysis
Quantitative Analysis
Looked for signs of manual recalculation in existing scenario files — repeated values, suspicious round numbers.
Usability Testing
Usability Testing
Structured sessions with a prototype. It broke down in places I didn't expect.
User journey mapping

User journey mapping — tracing where engineers left the tool and why.

UX challenges identified

The instinctive answer was wrong

The obvious solution was to embed a calculator. I spent a week down that path before seeing the flaw: a calculator produces a result. Engineers needed to express a relationship — one the system could carry forward as scenarios evolved.

"14.6 is an answer. I needed to design a place to store the question."

The Expressions Panel wasn't a calculator — it was a logic editor. That reframe changed every decision that followed.

Five decisions, each made for a reason

Design directions mapped to user needs

With parameters, expressions, constants, and the calculator all fighting for space, I had to make the case to the product manager and technical lead that the workflow needed more hierarchy — there was simply too much happening on one panel. That conversation led to two changes: colour-coding elements within the formula for easier readability, and an edit dropdown that keeps the calculator hidden until an engineer actually needs it, without hiding the rest of the list.

The panel before the hierarchy pass — parameters, expressions, agent fields, and the calculator all open and competing for space

Every section open at once — parameters, expressions, agent fields, and the calculator all fighting for space. I explored several ways to cut down how much space it took so the rest of the expressions list stayed visible; the edit button that unfolds detail on demand is what I finally landed on.

Testing humbled me in the right ways

I ran structured usability sessions with engineers using a Figma prototype. The results forced two significant changes to the design.

Usability testing findings

An edit icon I designed unfolds expression detail only when needed — progressive disclosure applied precisely. After launch, engineers said it was the first panel in Genie that didn't feel overwhelming on first open.

Scaling introduced a problem I hadn't anticipated

Expressions could now reference other expressions — meaning A could reference B, which could reference A. Engineers needed nested logic, but unconstrained nesting could make a scenario impossible to evaluate.

The solution: a live validation layer that detects circular references the moment they form and flags them inline. Engineers can nest as deeply as needed — they just can't close the loop. The diagram I made of how expressions reference each other became part of the patent documentation.

Agent Fields — Helper Functions in action

Helper functions — agent fields surfaced directly in the panel.

What it became

The panel shipped October 2021. By 2024, scenario creation was 50% faster, revisions rose 17%, and the work contributed to a published patent. One file now carries logic that previously required dozens.

What engineers said most after launch wasn't about speed — it was that they could finally understand their own scenarios. The logic was visible. That's what the project was about.

The panel still pulls people out of the workflow

The Expressions Panel solved the missing-memory problem, not the interruption — you still leave the scenario to commit a value before you're sure of it. I'd design for that moment.

01

A calculator that isn't a destination

A floating calculator in the toolbar, one click from anywhere in the scenario-setting phase, would give engineers somewhere to think without committing. Nothing autosaves — only the finalised expression gets sent through.

Quick CalcScratch · Not Saved
Vehicle_1.Speed + Vehicle_2.Speed × 0.8
Result
14.16
Send to Expressions Panel →

Styled on Genie's real toolbar and Expressions components. Nothing is saved until it's sent.

02

Let the Road Ruler feed the calculator

Genie already has a Road Ruler for measuring distances on the map — it's just disconnected from the calculator. Wiring the two together would feed a real measurement straight into an expression.

distance =
48.2 m — road length
Calculate with the value in the ruler

Genie's existing Road Ruler tool measuring the length of the road directly, instead of engineers eyeballing it separately.

← All work