Case study

Soissons Belles — antiques inventory engine

Designing a product system from spreadsheets to storefront

About

This project started with a straightforward request: build a website for a new antiques dealer.

Like many early-stage businesses, their inventory lived in Excel. It was the fastest way to get started, easy to update, and flexible enough to capture notes, prices, dimensions, and descriptions as stock came in. For a new operation, this was practical rather than careless.

The problem emerged when the business wanted to present the collection publicly. The spreadsheet worked for internal reference, but it wasn’t designed to power a website. Information was inconsistent, fields were overloaded with multiple meanings, and the same object could be described in different ways depending on who entered it.

The task was not to “design a nicer front end.” It was to design a system that could turn a fragile spreadsheet into a reliable product foundation, without forcing the business into a generic e-commerce model that didn’t fit how antiques are bought and sold.

Date
2025
Role
Senior Product Designer
Industry
Antiques & inventory
Deliverables
Inventory engine, admin workflow, public catalogue website
Role & scope

Role: Senior Product Designer

Scope: Product strategy, systems design, data modelling, UX, frontend development

Deliverables: Inventory engine, admin workflow, public catalogue website

I was responsible for defining the problem, designing the system, and implementing the first version end to end.

North star
Trust over completeness.
Problem

Antiques behave very differently from standard products. Every item is unique. Descriptions are nuanced. Prices are often contextual. Sales happen through conversation, not checkout.

Most commerce platforms assume the opposite. They expect fixed prices, consistent attributes, and high-volume transactions. Using one would have solved the technical problem quickly, but at the cost of distorting the business itself.

The spreadsheet, on the other hand, was flexible but unsafe. It mixed facts with assumptions, editorial text with structured data, and left too much open to interpretation.

The challenge was to replace the spreadsheet without losing flexibility, while creating enough structure to support a website and future growth.

Mismatch
Unique objects, not SKUs.
Attempt 1

My initial approach was pragmatic. Instead of asking the client to manually restructure their data, I built a small import and enrichment pipeline in mjs that could take the Excel export and prepare it for use in a content system.

The script normalised categories, attempted to infer missing fields, generated slugs and titles, and generally tried to “clean up” the data automatically. From a technical standpoint, it worked well. The output looked coherent and complete.

From a product standpoint, it was a mistake.

The enrichment created a false sense of confidence. Items appeared finished, but some of the inferred data was subtly wrong. Periods were guessed. Materials were over-specified. Ambiguity was replaced with certainty where none existed.

In antiques, this is dangerous. Missing information is acceptable. Incorrect information is not.

At that point, I stopped pushing the system further in that direction.

Lesson
Automation can lie.
Reframe

The failure wasn’t technical. It was conceptual.

I had optimised for completeness instead of trust.

Rather than asking how much the system could infer, I reframed the problem around what the system should explicitly refuse to do. The goal became to surface uncertainty clearly instead of hiding it behind automation.

This meant accepting that not everything could or should be enriched automatically.

Shift
Surface uncertainty.
Featured
Spreadsheets as raw input.
The Excel sheet stayed fast and familiar — but the system treated it as untrusted input, not the source of truth.
Quality gates over cleverness.
Instead of guessing missing fields, the pipeline surfaced uncertainty and required explicit confirmation before publishing.
Attempt 2

I rewrote the import process around a set of quality gates.

The mjs pipeline still handled ingestion and basic normalisation, but it stopped short of guessing. Required fields had to be explicitly confirmed. Certain attributes were allowed to remain empty until verified. Editorial descriptions were clearly separated from factual metadata.

Items moved through clear states, from incomplete to review-ready to publishable. Nothing could appear on the website simply because it existed in the spreadsheet.

This shifted responsibility back to where it belonged. The system enforced structure and consistency. The client provided expertise and judgment.

The spreadsheet became a raw input format, not a hidden dependency.

Mechanism
Quality gates.
Model

With quality constraints in place, I designed a content model that reflected how antiques are actually documented and evaluated.

Each item needed to support structured facts such as dimensions, origin, period, and materials, alongside richer editorial content like provenance and condition context. It also needed to reflect reality over time, including availability, holds, and sales.

This model was designed before any interface work began. By resolving the information architecture first, I avoided building UI that had to compensate for unstable or ambiguous data.

The inventory engine became the backbone of the product. Everything else depended on it.

Backbone
Schema first, UI second.
Featured
A model built for antiques.
Structured metadata (dimensions, origin, materials) lived alongside editorial context (provenance, condition), without mixing the two.
Clear inventory states.
Items moved from incomplete → review-ready → publishable. Nothing reached the public catalogue by accident.
Visuals
System moments (video tiles)
Locked editorial layout — using video tiles for this case study.
Admin + front end

For administration, I avoided building custom tools prematurely. Instead, I shaped the data model to work cleanly within an existing content environment, giving the client a focused and calm way to manage inventory without introducing unnecessary complexity.

Only once the system was stable did I design the public-facing catalogue. Because the underlying data was disciplined, the front end could be deliberately restrained. There are no e-commerce tropes, no artificial urgency, and no interface elements competing with the objects themselves.

Each item page is powered directly by the inventory engine. What the client manages is exactly what the public sees.

Approach
Restraint through discipline.
Spotlight
Restrained storefront, solid foundation.
With disciplined data underneath, the catalogue could stay calm — no e-commerce tropes, just objects presented with clarity.
Outcome

The result is a custom inventory system that replaces spreadsheets with a structured, scalable foundation, without forcing the business into a model that doesn’t fit.

Data quality is higher. Errors are surfaced early rather than hidden. Updates are faster and safer. The website feels considered and trustworthy because it is built on something solid.

Just as importantly, the system can evolve without being rebuilt. New inventory, richer content, and future workflows can be added without rethinking the core architecture.

Result
Trustworthy catalogue.
Wrap
Admin without complexity.
Rather than building bespoke tools too early, the model was shaped to fit an existing content environment cleanly.
Trust as the product outcome.
Higher data quality, fewer silent errors, and a catalogue that feels credible because the system refuses to pretend.
Reflection

This project is a good example of how I approach product problems.

The most valuable work wasn’t visual design or technical implementation. It was recognising when a solution that “worked” was still wrong, stopping early, and redesigning the system around trust rather than automation.

Good products aren’t built by making systems smarter. They’re built by deciding where intelligence should live, and where constraints matter more than convenience.

That’s the kind of work I enjoy doing, and the kind of problems I’m hired to solve.

Principle
Constraints beat cleverness.
Screens
More evidence
Same locked layout — video tiles to match available media.