The launch date was fixed. Half the platform wasn't connected.
As our launch date got close, the build had stalled. I took over the code, finished what was missing, and rebuilt promotions, which is the part brands use most.

A launch with holes in it
We had just moved Carmate to a lead-based model, so everything that brings in a lead had to work. The new platform had a launch date, and as it got closer the build stalled. Pages didn't link to each other, some of the logic was wrong or missing, and some pages hadn't been built at all.
Promotions is where it came to a head. I had designed the flow, but it had been built for one trim at a time. The developer said my version was too complex to finish in time. I knew brand staff wouldn't use a trim-only tool, because that's not how they run promotions.
Fill the gaps myself
Arguing about it would have cost us the launch date. On a platform this size, changing one thing tends to break something else, and it needed someone who knew how all of it was meant to work. So I took over the build and worked directly in code I hadn't written. Before launch I fixed or built:
Promotions brands would actually use
Most decisions during the build had to be made quickly. Promotions was the one I slowed down for, because it's what brands judge us on.
A promotion tool nobody would use
I'd been collecting brands' promotion posters for a while, and none of them work trim by trim. It's a model name and “−$3,000”. Brand staff often don't know their exact trim names anyway.
Promotions matter. Brands already spend money on them and they bring in buyers. But they run as Facebook ads that disappear after a while, nobody tracks them, and a brand will drop any tool that makes them change how they work. So the tool had to fit the way their marketing teams already do things.
There was nothing in place for this. Promotion types were hard-coded, and the developer had turned down my design as too complex, with too many new cases. So I built it myself.
If brands were going to rely on our promotions, the normal price, the promo price and the dates had to be right on every page.
From promotion type to price
I redrew the flow in Figma and built it myself, starting from the data structure.
- 01
Types managed in our CRM
Promotion types used to be hard-coded. I moved them into a list in our admin CRM, so the team can add a new kind of offer without a release. Discount is the default and can't be removed.

- 02
Start from the type
When a brand creates a promotion, Seller Central offers the types from that manager: discount, financing, benefits, after-sales, trade-in and cashback.

- 03
Choose what it covers
Then what the promotion applies to. Discounts and cashback can't be brand-wide. They're set on a model or some of its trims.

- 04
Pick the model, or trims within it
One model per promotion. The brand picks the whole model or only some of its trims.

- 05
Details, with a live preview
Poster, title, dates and the offer, with the promo card shown exactly as buyers will see it.

- 06
Confirm the prices
Last, the prices. “−$3,000 on a model” lists every trim with its current price and promo price, which staff can still change before it goes live. A line underneath says when each trim goes back to its normal price.

What about cars already in stock?
A promotion on a model also affects the cars of that model already in stock. Whether a particular car should be in the offer isn't always obvious, and it's the brand's decision to make.
Each affected listing now has an optional promo price. The field only opens while a live promotion covers that car, and staff fill it in for the cars they want included. In practice, not every car in stock is part of a promotion, so staff choose car by car instead of the system applying it to all of them.

Cards that don't shout
Official brands in Cambodia make their promotion posters for Facebook, so they're square or close to it, never landscape. I tried a few ways of putting the poster on our cards, first filling the card with it, then showing it whole above the text.

Both looked too loud. A row of posters looked like a wall of ads fighting each other, and it didn't fit with the rest of the site. In the end the card uses the model's gallery photo with simple text, and the poster goes on the promotion's own page, if the brand has one.

A page that leads to the car
The poster sits at the top of the promotion page, with a countdown big enough to read at a glance. A side panel lets buyers call, message or send an enquiry, and the page links through to the model page for the full details.

Launched on schedule
We launched on the planned date, with everything working.
What I'd do differently
I'd have shown the developer the posters on the first day, along with my designs. The designs showed what to build, but the posters explained why. Everything I knew about how brands advertise was there before the first version of the promotion tool was built.