Storefront Graph, the API behind volvocars.com
I joined after the endpoint was already federated. The work that mattered was what you can build on one API once stock cars and configurable cars finally live in the same index.
Storefront Graph is the federated GraphQL platform behind volvocars.com, covering vehicle configuration, pricing, and commerce. Six backend teams own the services behind it, each deploying on its own schedule, and hundreds of frontend clients read it as one API. I joined the team after the endpoint had already been federated, so the composition problem was solved before I arrived. What I worked on was what you can build once many services read as one, and what happens when the ground underneath them moves.
A platform migration nearly doubled our latency
Volvo Cars moved the whole area from AWS to Azure. The graph came out the other side running at close to double the latency it went in at, which is the sort of regression that gets quietly filed as the cost of moving. I led the work to get it back.
We finished well past recovered. Both p95 and p99 landed under half their pre-migration numbers, so the slowest requests ended up faster than they had ever been on the old infrastructure. The median came down too, by a more modest amount. That shape is the one worth having. The tail is where customers feel a platform being slow, and the tail is what moved.
Two of the systems we depended on were outside our control
Composing independently deployed services into one API means the whole thing is only as available as the weakest part behind it, unless you decide otherwise in advance. Two of the systems we relied on were owned outside our area, so when they went down we could not go and fix them. We strengthened resilience against exactly that case, keeping a cache and serving stored values when a dependency was unavailable, so an outage upstream degraded part of a page rather than all of it.
Anyone who found the endpoint could query it
The graph was public. Any client that knew the URL could ask it for anything, so nobody could say with confidence who the consumers were or what they depended on, and an unknown caller could hammer it unchallenged. I moved consumers behind a client registry. Every caller is known, which meant we could turn away unknown clients before they became an abuse problem, and go to the teams making slow or expensive requests and help them fix them.
Stock cars and configurable cars were two different questions until they shared an index
A configurable car is a set of valid option combinations. A stock car is a specific vehicle that already exists in a yard somewhere. Customers do not experience these as different things, but the systems did, and any feature that needed both had to ask two questions and reconcile the answers itself. I built a searchable index holding both.
The index turned out to be the useful part. Listing the features of a model, and comparing them across trim levels, had meant expensive queries against the configuration services. Reading them from the index instead made both fast and cheap, and I led that work.
Finding a customer a real car close to the one they just configured
A customer configures the car they want. It does not exist yet, and building it takes months. Somewhere in stock there is often a car close enough that they would take it today instead. Matching those is not an exact-match query, because how close is close enough depends on which differences a particular person cares about.
I led the work that used vector embeddings from an AI model over the index to find stock cars similar to any customer-configured spec, ranked by how near they were. A customer who would have waited for a factory build gets shown a car they can have sooner.
Storefront Graph was not a frontend team
Worth saying plainly, because the shape of this work gets misread. It was a platform team. The frontend relevance is that it served hundreds of frontend clients and drove UX consistency across the car configurator and the offer selector, which I worked on closely with about six internal frontend teams. That is not the same thing as having built those frontends.
Scale
Six backend teams behind it, hundreds of frontend clients in front of it, millions of sessions across 50+ markets.