Case Study

The Product Matrix

A chaotic spreadsheet, rebuilt into the portal that answers a sales team's most expensive question: can we actually sell this?

Role: Product design, data architecture, front-end build · Shift4, 2025

Shift4 Product Matrix portal: product catalog with Ask AI assistant and feedback button
The shipped portal: Shift4's products, integrations, and payments data in one place, with an AI assistant and a feedback button.

The problem

Deals closed on products we couldn't support

Whether a Shift4 product could be sold depended on the merchant's POS integration, their region, and their software version. That knowledge lived in a sprawling spreadsheet and in product managers' heads, so it routinely surfaced too late: pitch delivered, paperwork signed, installation underway, and then the discovery that this merchant runs Squirrel Cloud, and the integrated online ordering they were promised only exists for Squirrel legacy.

Sales coped the only way they could: messaging individual product managers mid-deal to ask whether what they were about to promise would actually work. Nobody trusted the spreadsheet, and the people who knew the answers had become the bottleneck.

The data

From spreadsheet tabs to a SQLite schema

The VP of Product handed me the source material: a spreadsheet with tabs for device types, POS integrations, features, and per-country availability, more than a thousand entries, each with its own configuration requirements. A spreadsheet that size can't be a source of truth; it can barely be read.

So the first work wasn't visual. I organized the data into a SQLite schema that made the relationships explicit: products, platforms, regions, integrations, and the support status connecting them. Once the data had real structure, the portal on top of it followed. Both the design and the engineering were mine.

The system

Spreadsheet

multi-tab source data

SQLite

structured schema

Portal + assistant

cited answers

Feedback loop

Datadog + flag button

Recreated architecture sketch. Usage data and flagged corrections feed back into the data, so the matrix stays accurate after launch.

The design

Built with the people who'd use it

I went back and forth with the sales team throughout: what they needed to look up, what an answer had to include before they'd trust it, and where their deals had gone wrong before. The result is a matrix view: products and modules down the side, countries across the top, support status in every cell. The answer to “can I sell this here?” is a glance, not a Slack thread.

SkyTab availability matrix: product modules by country with supported and unsupported markers
The live portal's SkyTab matrix: product modules by country. Tabs cover hardware, payments, marketplace, and onboarding for each platform.

The assistant

An assistant that answers with citations

For reps mid-call, I added an AI assistant. Ask “can I sell SkyTab Mobile in Canada?” and it answers from the matrix data, with a citation that jumps straight to the relevant rows, so the answer is verifiable, not just plausible. The same grounding-plus-citations pattern I later used in the developer portal started here.

Asking about Kiosk availability in Canada, recorded in the live portal. The response is recreated from the matrix's real availability data; the pilot's model access has since been retired.

Keeping it honest

Keeping the data correct after launch

A reference tool is only useful while people trust it, so I instrumented the portal with Datadog and used the usage data to decide what to improve next. And because the underlying facts change, every page has a feedback button: spot an inconsistency, flag it, and the report lands with me automatically via a SendGrid-backed form. Corrections became a workflow instead of a favor.

The results

Did it work?

After rounds of user testing with the sales team, the portal launched and was adopted across the organization. Reps could answer availability questions themselves instead of chasing product managers mid-deal, and the feedback loop kept the data correcting itself as people used it.

For me, this was the project that proved how far one person can take a problem with persistence and Claude Code: from a spreadsheet nobody trusted to a working data model, portal, and assistant.

More case studies

Read the other three