Danny Florián

Lily AI

Catalog manager for retail product attribution

2022 — 24

Merchandisers found the batch they needed 71% faster once the catalog stopped being one list of 40 million products.

Role
Lead Product Designer. Sole designer on Catalog.
Team
1 PM · 6 engineers · 2 data scientists · ML platform partners
Timeline
2022 — 2024. Rebuild shipped over seven months.
Owned / influenced
Owned the catalog model, batch triage, search and filtering, attribute review. Influenced ingestion API shape, taxonomy naming, retailer onboarding.
Level of detail

Full case study — context, explorations, tradeoffs and how each number was measured. The short version. Switch to deep dive for context, explorations, every tradeoff and measurement notes.

The business problem

Renewals ran through one screen, and that screen was getting slower every month.

Lily AI sells attribute enrichment to enterprise retailers: send us a product, get back the language shoppers actually search with — silhouette, occasion, fit, fabric hand. The revenue model is per-SKU and annual, and almost all of the perceived value of the contract arrives through a single surface, the catalog manager. If a merchandising director cannot spot-check the attributes we returned, they cannot defend the line item at renewal.

By 2022 that surface was failing under its own success. Enterprise accounts were pushing 100,000 to a million SKUs a month into a catalog that had grown past 40 million rows per account, and the catalog had no organizing concept beyond pagination. Search latency climbed. Two accounts flagged "can't verify your output" in QBRs. Support tickets tagged catalog were the largest single category and rising.

Underneath the commercial risk was a mundane, daily indignity. A merchandiser who uploaded four thousand dresses on Tuesday would come back Thursday to confirm they had processed, and had no way to ask that question. The interface could answer "show me dresses" across three seasons of live and discontinued product. It could not answer "show me the ones I sent Tuesday."

The original Lily AI catalog: a filter sidebar for brand, SKU, and product type beside 60 pages of individual products.
Before. Every product an account had ever sent, in one paginated list, sixty pages deep. The filters answered questions about attributes; nobody's actual question was about attributes.

The reframe

The catalog was never a catalog. It was an inbox.

Lily is not the retailer's system of record — their PIM is. Nothing lives in Lily. Product arrives, gets enriched, and goes back out. That is mail, not inventory. Once I stopped modelling possession and started modelling arrival, the hard parts fell over: a delivery has a sender, a timestamp, a count, and a status; it can be read, unread, archived, or re-sent. Apple Mail had solved the entire triage problem two decades earlier, and every merchandiser on earth already knew the gestures.

The work

Batches in the rail, products in the middle, attributes on the right.

Redesigned Lily AI catalog manager: a left rail of dated batches with delivery status, a centre product list, and a right panel showing product details and imagery.
The shipped catalog manager. Every batch carries the four facts a merchandiser needs before opening it — when it arrived, how many products, what state it is in, and whether it has synced back. Status is a coloured dot and a word, never a colour alone.
Product detail panel in Lily AI showing generated synonyms grouped by attribute family: colour family, closures, dressing style, fit, neckline.
Attribute review, one product deep. Synonyms are grouped by family and separated into the canonical tag and the shopper-language variants, because those two things get audited by different people.
Apple Mail, used as the information-architecture reference: mailboxes, message list, and message body in three columns.
The borrowed model, kept on the wall for seven months. Mailbox → message → body maps cleanly onto batch → product → attributes, including the parts people forget: unread counts, archive, and "mark all."
Diagram of how Lily AI attribute tags are consumed downstream: on-site search, product detail pages, paid channels, and recommendations.
Where the output goes. Keeping this visible in the product mattered more than I expected — merchandisers who understood that a bad tag would reach paid search reviewed far more carefully than merchandisers who thought they were auditing a spreadsheet.

Explorations that died

  • 01 / 03

    Better filters on the flat list

    It made the haystack easier to sift but still assumed you knew what you were looking for — it could not answer "did Tuesday's upload finish?"

  • 02 / 03

    Folders the retailer maintains

    It required merchandisers to keep a second taxonomy in sync with their PIM. Two sources of truth is worse than one imperfect one.

  • 03 / 03

    Archive by fashion season

    Seasons don't align across retailers. In testing the rule quietly hid an evergreen basics line, and trust in automatic anything never recovered.

Tradeoffs

What got cut, and why.

  • Cross-batch bulk editing. The single most requested feature, and I shipped without it. Writing corrections back through the enrichment pipeline needed an audit trail the data team could not build that quarter, and every workaround we prototyped could silently overwrite a model-generated attribute with no way to see who did it. Review stayed read-only until the audit log landed six months later.
  • The coverage analytics tab. Early designs put an attribute-coverage dashboard on the batch overview. In testing nobody made a decision from it, and it pushed the product list below the fold on a 1440 screen. The overview kept three numbers and gave the space back.
  • A clean URL scheme. Retailers had bookmarked deep links into the old flat list, and breaking them would have generated exactly the support tickets we were trying to remove. We kept a redirect table mapping every legacy product URL into its new batch context for two quarters. It was ugly and it was correct.
  • Mobile. Merchandisers do this work on 27-inch monitors with a spreadsheet open beside them. We designed down to a 13-inch laptop and deliberately stopped, rather than spend weeks on a breakpoint with no users behind it.

Impact

Time to locate a specific upload fell 71%.

  • 71%

    Faster to locate a specific batch of product.

    Measured: instrumented task timing from first post-login click to batch open. Median across all enterprise accounts, 30 days before launch vs. 60 days after.

  • 4.2×

    Weekly catalog sessions per merchandising seat.

    Measured: unique authenticated sessions divided by active seats, same windows, Lily internal accounts excluded.

  • −38%

    Support tickets tagged "catalog."

    Measured: Zendesk volume per 100 accounts, quarter over quarter. Tag was already in use before the redesign, so the comparison is like-for-like.

Reflection

The inbox frame was right, and I found it in week six by asking how product gets to Lily instead of how it is stored — a question I should have asked in week one. What I would redo is the archive rule: we shipped manual archiving because automatic felt risky, and two years on every account carries thousands of batches nobody will ever open again. Safe defaults still accumulate.