Sterling Labs
← Back to Work
Enterprise·Meridian Supply Co.

Business Intelligence Dashboard

Timeline3.5 weeks
Investment$12,500

The Problem

Meridian Supply Co. moves roughly $4.2M in product per month across three warehouses. Until late 2025, their leadership team made most business decisions from a combination of gut instinct and a weekly spreadsheet their operations manager spent Friday afternoons assembling.

The spreadsheet pulled from four places: Stripe for revenue, their legacy inventory system for stock levels, a separate Google Sheet tracking customer orders, and QuickBooks for expenses. It took approximately four hours to compile. By the time the Monday leadership meeting happened, the data was already three days old.

The specific problems:

Blind spots in revenue reporting. Stripe showed total revenue but not by customer segment, product category, warehouse location, or sales rep. The CEO had no way to see, at a glance, whether the growth trend was driven by new customers or existing accounts increasing spend.

Inventory visibility gaps. Stockouts were discovered reactively — when a customer called to ask where their order was. The operations team had no automated alert when a fast-moving SKU crossed below a safe threshold.

No executive summary. Every Monday meeting started with 20 minutes of "catch me up" — the CEO and COO asking questions that should have been answered before they walked in the room.

Anomaly detection was purely manual. When revenue dropped 18% in one week in Q3 2024, the leadership team didn't notice until the following Monday. The cause turned out to be a processing error in their payment system — fixable in 20 minutes if caught same-day. They caught it six days later.

The CFO said it plainly: *"We're running a $50M business with the reporting infrastructure of a $500K startup."*


Our Solution

We built a live business intelligence system that aggregates data from five sources, serves a real-time executive dashboard, generates an automated weekly report every Monday at 6:00 AM, and sends anomaly alerts via Slack the moment something falls outside expected parameters.

SYSTEM ARCHITECTURE

DATA SOURCES
┌──────────┐  ┌─────────────────┐  ┌──────────────┐  ┌─────────────┐  ┌──────────────────┐
│  Stripe  │  │  QuickBooks API │  │  Inventory   │  │  HubSpot    │  │  Google Analytics│
│  Payments│  │  (expenses,     │  │  System      │  │  CRM        │  │  (web traffic,   │
│  API     │  │   payroll)      │  │  (custom API)│  │  (deals,    │  │   lead sources)  │
└────┬─────┘  └────────┬────────┘  └──────┬───────┘  │  pipeline) │  └────────┬─────────┘
     |                 |                  |           └──────┬──────┘          |
     └─────────────────┴──────────────────┴─────────────────┴─────────────────┘
                                          |
                              [n8n Data Pipeline]
                              • Scheduled pulls every 15 min
                              • Data normalization + validation
                              • Error handling + retry logic
                              • Change detection
                                          |
                              [PostgreSQL Database]
                              • Structured time-series tables
                              • Aggregation views
                              • 13 months rolling history
                                          |
                    ┌─────────────────────┼──────────────────────┐
                    |                     |                       |
            [Metabase Dashboard]  [Weekly Report Engine]  [Anomaly Detector]
            • 6 live KPI cards    n8n + Claude              n8n scheduled check
            • 4 trend charts      • Runs Monday 5 AM        every 4 hours
            • Revenue by segment  • Pulls last 7 days       • Compares to 8-week
            • Inventory status    • Claude drafts            baseline
            • Filters: date,        executive summary       • Alert if >15% variance
              warehouse, rep      • PDF generated           • Immediate Slack DM
            • Auto-refresh         + emailed by 6 AM         to COO + ops manager
              every 15 min

The executive dashboard (Metabase, accessible via browser and mobile) shows:

  • Gross revenue today / this week / this month vs. prior period
  • Revenue by customer segment (new vs. returning, by product category)
  • Top 10 customers by revenue this month
  • Gross margin by product category
  • Inventory levels for the 40 fastest-moving SKUs with threshold indicators
  • Open pipeline value from HubSpot
  • Website traffic and lead source attribution from Google Analytics
  • Outstanding invoices and cash position from QuickBooks
  • Every number updates every 15 minutes automatically.

    The weekly executive summary is generated every Monday at 5:00 AM by an n8n workflow that pulls the prior week's data, feeds it into a Claude API call with a structured prompt, and outputs a clean 400–600 word summary covering: revenue performance vs. prior week, top customers, inventory alerts from the prior week, pipeline movement, and one flagged area of concern. It is emailed to the CEO, COO, and CFO as a formatted HTML email before 6:00 AM. They walk into Monday meetings already briefed.

    The anomaly detection system runs every four hours and compares key metrics against an 8-week rolling baseline. If revenue for a time window deviates more than 15%, an inventory item drops below safety stock, or payment processing shows a gap — the COO and operations manager receive a Slack alert with the specific metric, current value, baseline value, and a one-line plain-language description of what changed.


    Tech Stack

    | Component | Tool |

    |-----------|------|

    | Workflow / data pipeline | n8n (self-hosted, 2-core VPS) |

    | Data warehouse | PostgreSQL (managed, Supabase) |

    | Dashboard | Metabase (self-hosted, open source) |

    | AI summary generation | Claude Sonnet via API |

    | Revenue data | Stripe API |

    | Accounting data | QuickBooks Online API |

    | CRM data | HubSpot API |

    | Web analytics | Google Analytics Data API v1 |

    | Inventory data | Custom REST API (Meridian's existing system) |

    | Report delivery | n8n email node + HTML templates |

    | Alerts | Slack webhooks |


    Results

    Operational impact (60-day review):

  • Monday prep time eliminated — leadership team estimated 20–25 minutes recovered per meeting, 52 meetings/year = ~21 hours/year of executive time reclaimed
  • CFO's Friday afternoon spreadsheet ritual: eliminated — 4 hours/week returned, ~208 hours/year
  • Anomaly detection caught 2 issues in first 60 days that previously would have gone unnoticed until the weekly meeting:
  • - *Week 3:* A product category showing 24% revenue drop vs. baseline — traced to a pricing error on 6 SKUs. Corrected within 4 hours of alert. Estimated revenue preserved: $18,400.

    - *Week 7:* Inventory on two high-velocity SKUs crossed below safety stock simultaneously due to an unforeseen supplier delay. Meridian had time to source from a secondary supplier before stockouts affected any orders.

  • Inventory stockout incidents dropped from an average of 3.2/month to 0 in the 60-day review period
  • CEO at 60-day review: *"I used to walk into Monday meetings hoping someone had the right numbers. Now I've read the summary before I've had coffee."*
  • Financial context: Meridian's average monthly revenue is ~$4.2M. The two anomaly catches in the first 60 days preserved roughly $18,400 in traceable revenue. The stockout prevention is harder to quantify directly, but the operations manager estimated that each stockout historically cost between $2,000–$8,000 in expedited shipping, customer credits, and lost repeat orders.


    Timeline

    | Phase | Days | Work |

    |-------|------|------|

    | Discovery & Audit | Days 1–2 | Two 60-minute calls with CEO, COO, and CFO. Audited all five data sources, reviewed API documentation, confirmed data quality issues. |

    | Architecture & Schema | Days 3–4 | Designed database schema, defined KPIs with leadership team, wireframed dashboard layout. Client approved before build started. |

    | Data Pipeline Build | Days 5–9 | Built and tested all five API connectors. Normalized data formats. Set up PostgreSQL schema and aggregation views. Handled QuickBooks API auth issues on Day 7 (token refresh bug — 4-hour delay). |

    | Dashboard Build | Days 10–12 | Built Metabase dashboard. Configured all views, filters, and refresh intervals. Client walkthrough on Day 12, minor layout adjustments requested. |

    | Report + Anomaly Engine | Days 13–16 | Built weekly report generator. Wrote and tested Claude prompt through 12 iterations to get summary quality right. Built anomaly detection workflow with threshold configuration. |

    | Testing & Calibration | Days 17–19 | Fed 90 days of historical data through the system. Calibrated anomaly thresholds to avoid false positives. Tested edge cases. |

    | Training & Handoff | Days 20–21 | Full team training session (90 min, recorded). Delivered documentation. Handed over admin access. Meridian went live Day 21. |

    Total delivery: 3 weeks.


    Investment

    Enterprise tier: $12,500

    Ongoing infrastructure costs to Meridian: ~$90/month total (VPS hosting for n8n, Supabase, Metabase). Claude API usage for summaries runs approximately $8/month at their scale.

    The CFO's time savings alone (4 hours/week at executive rates) represents ~$20K in recovered capacity annually, before factoring in the anomaly detection value or the leadership team's meeting efficiency gains.


    *Operating at scale and need visibility across your business? Our BI Dashboard engagements are scoped per business — no two are identical. [Get a quote →](https://jsterlinglabs.com/contact)*

    Need something similar?

    We build systems like this every week. Tell us what you need.