Olvito
All work

GlanzformCar detailing

Detailers sell a result no photograph shows. So there is no photograph.

Starting point

Every stock image in this trade shows someone else's car in someone else's colour, usually wet and usually at sunset. It proves nothing and it is the same picture on ten competitors' sites. The question was what goes in the hero instead.

The three questions, before the first line of code

01

What does the business do?

Paint correction, interiors, ceramic coating.

02

Where?

Dortmund, appointment-only — the car stays half a day.

03

What should the visitor do?

Ask for an appointment — for the package they already picked on the page.

Decisions

01

No image, a model

Problem
A photo always shows a different car from the one being discussed.
Decision
A stylised car in Three.js the visitor switches through six paint colours and three wheel sets.
Why
Choosing the colour is the first real decision in the sales conversation. It belongs on the page, not on the phone.

02

A body from primitives, not from a profile

Problem
The first attempt extruded a hand-drawn Bezier silhouette. Rendered, it looked like a loaf of bread with wheels.
Decision
Thrown away and rebuilt from separate rounded boxes, with the cabin as a tapered four-sided cylinder.
Why
A shape you can control beats a technique that sounds more elegant. A screenshot decided it, not an opinion.

03

The glow had to become almost invisible

Problem
The chosen package was meant to mark the surfaces it touches. At emissive 0.16 the whole car went pink.
Decision
Down below 0.06, for paint and glass alike.
Why
sRGB lifts dark linear values hard. What looks like a hint in the code is a solid fill on screen.

What actually runs

Three.js through react-three-fiber. Repainting is a colour interpolation on one shared material, and the package selection drives a real emissive rather than an overlay. For the appointment suggestion, Claude reasons a realistic slot out of the package's stored duration — not a fixed string.

What I would do differently

Next time I load a finished GLB and only tint it. The hours that went into the silhouette belonged in the configurator logic, which is where the enquiry is actually won or lost.

Next case study

Ohmwerk