A furniture importer + showroom · Chula Vista, CA · 2025

Nine thousand products, one spreadsheet.

Supplier feeds arrived as CSVs with different column names every month. Pricing was recalculated by hand. The website was always three weeks behind the warehouse.

01

Product information manager

02

Supplier feed normalizer

03

Margin engine

04

Storefront sync

The system, roughly

Here is what happens now.

  1. 1
    Supplier drops a feed

    Different column names every month. The normalizer does not care.

  2. 2
    Margin engine runs

    Cost, freight, duty, target margin, rounding rules. Same math every time.

  3. 3
    Catalog updates

    New SKUs in, discontinued out, price changes flagged for review.

  4. 4
    Storefront syncs

    The website matches the warehouse within the hour.

  5. 5
    Exceptions surface

    Anything weird waits in a queue for a human instead of going live wrong.

Roughly what it looks like

Sanitized and reseeded with fake data — but the shape is the shape.

Ridgeline HVAC · operations

Revenue over time

Where the work comes from

Revenue by service

Jobs completed

Booking pressure · by hour

Darker is busier. Two people answer the phone between 8 and 11am.

Visitor → paid job

What changed

Catalog update time

3 weeks

11 min

Mispriced SKUs

~400

0

Products live

2,100

9,340

“The website finally tells the truth about what is in the warehouse.”

— Co-owner

Built with — last, because you should not have to care

PythonDigitalOceanNetlifyShopify API