Joining Materia
2024-06-10
Joining Materia in 2024 meant walking into a Turborepo monorepo with 33 packages mid-transformation. The platform -- materialbank.com -- was evolving from a traditional product catalogue into something more intelligent: AI-powered search, visual discovery, recommendation engines. My first task was making those AI features feel native, not bolted on. The gap between "we added AI search" and "search just works better now" is enormous, and it's mostly a design problem, not a technical one.
The vector image search was the first real challenge. Users upload a photo or pick a material, and the system finds visually similar products across the entire catalogue. Getting embeddings right is the easy part. Making the results feel intuitive is harder -- users don't think in vector space. They think "something like this but warmer" or "similar texture, different colour." We built colour search using both HSL and OKLab perceptual colour space, because HSL alone produces results that are mathematically correct but visually wrong. OKLab models human colour perception, so "similar colours" actually means what a designer expects it to mean. The difference in result quality was immediately obvious.
The challenge of joining a complex codebase is that you need to ship quickly while learning the system's opinions. Every monorepo has implicit conventions that aren't documented anywhere -- naming patterns, state management preferences, how data flows between packages. I spent the first two weeks reading more code than writing it, tracing data from the API layer through tRPC routers into React components. The 33-package structure meant understanding not just what each package does, but why it's a separate package in the first place. Some boundaries were architectural. Others were historical. Knowing which is which matters when you're deciding where new code lives.
The thing about making AI features feel native is that the AI needs to disappear. Nobody should think "I'm using the AI search." They should think "search works well." That means the vector results blend seamlessly with keyword results, the colour picker feels like a natural filter rather than a separate mode, and the recommendations surface at exactly the right moment in the browse flow. We measured success not by whether people used the AI features, but by whether they noticed them at all.