Somvilla
DataPulse Report Distribution

Real-time stock dashboard for a Belfast distribution company

Outcome

Eliminated a 3-hour weekly manual reporting process and gave the MD live stock visibility for the first time

Published

Tech stack

SQLSage 50ODBCCloudflare PagesResend

The problem

A Belfast-based distribution company — 18 staff, trading across NI and GB — was running their weekly management reporting entirely through a manual export-and-paste process. Every Friday afternoon, their ops coordinator would export four separate reports from Sage 50, combine them in Excel, and email the result to three directors.

The process took around 3 hours. By Monday morning, the numbers were already up to 36 hours old. One of the directors had made a purchasing decision in January based on a stock figure that turned out to be wrong — Sage had been updated after the Friday export.

They needed real-time visibility. They’d been told by their IT support company that it would require a “Sage upgrade and a new reporting module” at a cost of roughly £12,000.

What was actually needed

Sage 50 stores everything in an ODBC-accessible Pervasive database. No upgrade required — just a read-only connection and the right queries.

After a brief to understand the specific KPIs the directors actually used, the scope was:

  • 8 SQL queries covering stock levels by category, aged stock (>60 days), top 20 products by margin, weekly sales vs. target, and delivery performance
  • A live dashboard — a single-page web app that runs the queries on load, refreshes on request, and is accessible from any browser with a token
  • A daily 7am email digest showing the six most critical numbers, sent to all three directors

Technical approach

Sage 50’s ODBC driver was configured for read-only access on their server. The queries were written against the Pervasive schema (documented, though not officially published by Sage).

The dashboard is a static HTML/JS page hosted on Cloudflare Pages — load time under 400ms. It makes authenticated requests to a Cloudflare Worker that runs the queries via a serverless ODBC proxy (a small Node.js process on their existing server, port-forwarded securely).

The daily email uses Resend with a Cloudflare Worker cron trigger at 6:50am. The email renders the six numbers in a plain-text-style HTML format — readable in any email client, no images required.

The outcome

The manual Friday export process was abandoned within two weeks of delivery. The ops coordinator now uses that time for other work.

The purchasing error that triggered the project hasn’t recurred. Stock decisions are now made against numbers that are at most a few minutes old.

Total infrastructure cost to the client after handover: £7/month (Cloudflare Pages + Workers, within free tier for their usage level).

Project delivered in 6 working days against a 7-day quote.