← Easy USA projects

A clearer view
of the business.

I built an automated sales intelligence dashboard that brings Easy USA’s accounting and online sales together—so understanding performance no longer starts with assembling a spreadsheet.

Open larger preview ↗
Working dashboard captured October 14, 2026. Customer identities and monetary values are redacted; chart shapes and interactions are preserved.
Reporting cadenceEvery weekday

Automated refresh, replacing a manual weekly process.

Online revenue≈42% higher

Shopify since launch versus OpenCart in the same period last year.

Online ordersMore than 2×

Across the same comparison period.

Snapshot through October 11, 2026: August 19–October 11 versus the same dates in 2025. The sales comparison describes store performance, not growth caused by the dashboard. Excluding one large prior-year order, the reported revenue increase is approximately 120%.

The problem: different systems, overlapping sales

Easy USA is an established wholesale footwear business. Most sales come through direct accounts, phone orders, and EDI, alongside online channels. Weekly reporting meant running Python scripts and assembling Excel files from an aging accounting system.

The difficult part was knowing which numbers belonged together. Online orders are entered into Sage BusinessWorks too. Adding Shopify, OpenCart, or Faire revenue to the accounting total would count the same sales twice. And after moving from OpenCart to Shopify in August 2026, we needed a fair way to compare the new store with the old one.

Start with rules the business can trust

I built the reporting around Sage as the source of truth for company revenue, with online channels treated as subsets of that total. Shopify order numbers are matched to Sage invoices to connect the storefront with accounting.

Weekly reporting uses completed Monday-to-Sunday weeks, and year-to-date totals reset on January 1. The Shopify comparison uses the same period in the previous year, with an option to exclude outlier orders so a single large purchase doesn’t obscure the underlying pattern.

Build a tool people can explore

The private dashboard uses clear KPI cards, compact navigation, and interactive charts. Date and channel filters let the team move from a company-wide view into Shopify, OpenCart, Faire, or Sage. Presets cover recent weeks, month-to-date, quarter-to-date, and year-to-date, with custom week ranges when needed.

The Shopify-versus-OpenCart view pairs weekly bars with cumulative lines and compares revenue, orders, and average order value. Other sections cover trends, channel mix, top styles, the Shopify funnel, customers and movers, open receivables and aging, and historical OpenCart performance.

Shopify and OpenCart comparison with revenue percentage change and paired charts
The same-period comparison makes the baseline and outlier choice visible. Customer identities and monetary values redacted.

AI helps explain the numbers

AI is a substantial part of how I built the system, and it also has a defined role inside the finished product. Each section gets a written summary of trends, outliers, and issues worth investigating.

The summaries are generated from a prepared fact digest rather than asking the model to invent or independently calculate figures. A safeguard hides a summary when it no longer matches the current data. That keeps an old explanation from sitting beside newly refreshed numbers.

AI insight card explaining the Shopify comparison with sensitive details removed
A summary grounded in the report’s data. Customer identities and monetary values redacted.

From manual reports to a scheduled pipeline

Python pulls accounting and historical OpenCart data through read-only database connections over a secure tunnel, alongside Shopify API data. It then builds the fact digest, generates summaries, renders the dashboard with Chart.js, and deploys the static site behind Vercel Authentication.

A scheduled AI-agent routine runs each weekday at 6 a.m. Eastern. Tuesday adds a digest and a full Excel workbook saved to Google Drive. Database access is SELECT-only, sensitive fields are excluded by guards, and credentials stay in environment variables.

What changed

Reporting moved from a manual weekly process to an automated weekday refresh. The team can examine the new store against the old one without reconstructing the comparison each time.

The October project snapshot showed Shopify revenue approximately 42% above OpenCart for the same period last year, with more than twice as many orders. Excluding one unusually large prior-year order, revenue was approximately 120% higher. Showing both views makes the effect of that order explicit.

The summaries also surfaced questions worth following up: a possible duplicate invoice behind a spike, a receivables balance discrepancy, and a customer recorded under two names. These are investigation leads, not automatically resolved accounting findings.

Open receivables dashboard with an aging chart and redacted insight summary
Receivables aging brings operational questions into the same reporting tool. Customer identities and monetary values redacted.

Part of modernizing Easy USA

The storefront was one step. This project connects the newer sales channels with the systems the business still relies on, creating a more dependable foundation for daily decisions.

Modernizing Easy USA →