Pulse

Pulse

A live operations dashboard connecting Shopify, Algolia, and the warehouse into one command center for a GCC health & beauty brand.

A live operations dashboard connecting Shopify, Algolia, and the warehouse into one command center for a GCC health & beauty brand.

A live operations dashboard connecting Shopify, Algolia, and the warehouse into one command center for a GCC health & beauty brand.

Next.js
Shopify Admin API
Vercel
Supabase
Algolia
Google Search Console

Designed and shipped Pulse — Avnzor's internal intelligence dashboard — replacing a daily Python script + Google Sheet workflow with a live, multi-department operations platform. It connects directly to Shopify Admin API, Google Search Console, Algolia Analytics, and the warehouse management system, serving the buying team, operations, marketing, and leadership from a single source of truth with no manual data entry.

Industry

E-commerce operations · Internal tooling

Stack

Next.js · Shopify Admin API · Vercel · Supabase · Algolia · Google Search Console

Before Pulse, the buying team got a daily Slack alert with a Google Sheet. After Pulse, every department sees live, actionable data tailored to their role — updated every 15 minutes.


The Problem

Avnzor runs a fast-moving catalog of 1,300+ monthly orders across skincare, haircare, and health. The buying team was making daily reorder decisions based on a Google Sheet updated once a day — if they were lucky. Finding out a bestseller had gone out of stock happened after a customer complained. Dead stock worth tens of thousands of SAR sat unaddressed because no one had the time to audit it. Reorder quantities were calculated by feel.

The data existed — in Shopify, in the warehouse system, in Algolia's search logs, in Google Search Console. The problem was that nothing connected it, surfaced it, or made it actionable in real time. Every department was operating with a different lag, a different spreadsheet, and a different version of the truth.

The goal wasn't another dashboard. It was an intelligence layer that each department could actually act on — without manual data entry, without waiting for a report, and without depending on a developer to add a new view.


Designed and shipped Pulse — Avnzor's internal intelligence dashboard — replacing a daily Python script + Google Sheet workflow with a live, multi-department operations platform. It connects directly to Shopify Admin API, Google Search Console, Algolia Analytics, and the warehouse management system, serving the buying team, operations, marketing, and leadership from a single source of truth with no manual data entry.

How I Framed It

I mapped the decision each department makes daily and worked backwards to the data required.

The buying team's core decision is: what do I reorder today, and how much? That requires sell-through velocity, current stock, lead time, and safety buffer — all in one place, ranked by urgency. The marketing team's core question is: what are customers looking for that we're not serving well? That requires search gap analysis, CTR by query, and trending terms. Leadership needs a 10-second health check: SKUs at risk, revenue at risk, OOS count.

Rather than building one monolithic dashboard, I built the product as a set of purpose-specific views — each one answering a department's primary question — backed by a shared data layer that pulls from Shopify, Algolia, Google Search Console, and the WMS on a 15-minute cache refresh.

The design principle throughout: zero manual input. Every number is live or cached from a source of truth. The dashboard surfaces what the data says, not what someone chose to enter.


Key Decisions

Build internally, not buy a third-party inventory tool

Context: There are established Shopify inventory tools (Stocky, Inventory Planner) — cheaper in the short term. But the buying team's workflow was deeply specific: Bewazir consignment catalog, WMS reconciliation, Arabic-language context. No off-the-shelf tool connected Shopify, WMS, Algolia, and Google Search Console in one place.

Choice: Custom internal build on Next.js. Zero per-SKU fees, no data leaving the ecosystem, full control over the UX. The internal build became the only place that could honestly answer questions like 'which Bewazir-consigned SKUs are about to go OOS and which supplier do I call?'

Trade-off: Significant build time and ongoing maintenance responsibility. Every new data source requires custom integration work.

15-minute cache over real-time streaming

Context: Real-time streaming from Shopify's API is technically possible but architecturally complex and expensive at scale. Options ranged from webhook-driven streaming to daily batch refresh.

Choice: 15-minute cron-warmed cache. For buying decisions, 15-minute data is effectively real-time — no one is making reorder decisions faster than that. The cache meant every page load was instant (pre-warmed), reducing API quota usage and eliminating cold-start latency for the team.

Trade-off: A 15-minute blind spot on flash OOS events. Mitigated by a separate hourly WMS sync that reconciles Shopify inventory against warehouse quantities and flags desyncs.

Dead Stock Triage as a dedicated full-screen mode

Context: Dead stock (inventory with zero sales in 30/60/90 days) was the buying team's most painful unresolved problem — worth tens of thousands of SAR in tied-up capital. Surfacing it as a filter on the main products table had been the existing approach and it wasn't moving the number.

Choice: Dedicated full-screen triage mode where each dead stock item is reviewed one by one — with an AI-generated action suggestion (promote, bundle, liquidate, or remove) specific to that SKU's category, value, and supplier. The one-at-a-time format forces decisions rather than enabling indefinite deferral.

Trade-off: A heavier build than a simple filter. The AI suggestion quality depends on metafield coverage — SKUs with thin data get generic recommendations.

AI features as workflow accelerators, not novelty

Context: Every dashboard in 2026 has an AI feature. The risk is building AI that gets used once and ignored. A general chat over the data is easy to build and hard to make load-bearing.

Choice: Targeted AI at specific bottlenecks. The Daily Buying Brief surfaces every morning as a 120-word summary of inventory health with three urgent actions. Reorder email drafts are AI-generated on demand because writing supplier emails in English and Arabic was a real daily friction point. Dead stock suggestions are AI-generated because the action (promote/bundle/liquidate) requires judgment the data alone can't provide.

Trade-off: More complex to build and maintain than a general chat. Each AI feature needs a prompt, a data schema, and a quality bar — and all three require iteration.


How I Framed It

I mapped the decision each department makes daily and worked backwards to the data required.

The buying team's core decision is: what do I reorder today, and how much? That requires sell-through velocity, current stock, lead time, and safety buffer — all in one place, ranked by urgency. The marketing team's core question is: what are customers looking for that we're not serving well? That requires search gap analysis, CTR by query, and trending terms. Leadership needs a 10-second health check: SKUs at risk, revenue at risk, OOS count.

Rather than building one monolithic dashboard, I built the product as a set of purpose-specific views — each one answering a department's primary question — backed by a shared data layer that pulls from Shopify, Algolia, Google Search Console, and the WMS on a 15-minute cache refresh.

The design principle throughout: zero manual input. Every number is live or cached from a source of truth. The dashboard surfaces what the data says, not what someone chose to enter.


Key Decisions

Build internally, not buy a third-party inventory tool

Context: There are established Shopify inventory tools (Stocky, Inventory Planner) — cheaper in the short term. But the buying team's workflow was deeply specific: Bewazir consignment catalog, WMS reconciliation, Arabic-language context. No off-the-shelf tool connected Shopify, WMS, Algolia, and Google Search Console in one place.

Choice: Custom internal build on Next.js. Zero per-SKU fees, no data leaving the ecosystem, full control over the UX. The internal build became the only place that could honestly answer questions like 'which Bewazir-consigned SKUs are about to go OOS and which supplier do I call?'

Trade-off: Significant build time and ongoing maintenance responsibility. Every new data source requires custom integration work.

15-minute cache over real-time streaming

Context: Real-time streaming from Shopify's API is technically possible but architecturally complex and expensive at scale. Options ranged from webhook-driven streaming to daily batch refresh.

Choice: 15-minute cron-warmed cache. For buying decisions, 15-minute data is effectively real-time — no one is making reorder decisions faster than that. The cache meant every page load was instant (pre-warmed), reducing API quota usage and eliminating cold-start latency for the team.

Trade-off: A 15-minute blind spot on flash OOS events. Mitigated by a separate hourly WMS sync that reconciles Shopify inventory against warehouse quantities and flags desyncs.

Dead Stock Triage as a dedicated full-screen mode

Context: Dead stock (inventory with zero sales in 30/60/90 days) was the buying team's most painful unresolved problem — worth tens of thousands of SAR in tied-up capital. Surfacing it as a filter on the main products table had been the existing approach and it wasn't moving the number.

Choice: Dedicated full-screen triage mode where each dead stock item is reviewed one by one — with an AI-generated action suggestion (promote, bundle, liquidate, or remove) specific to that SKU's category, value, and supplier. The one-at-a-time format forces decisions rather than enabling indefinite deferral.

Trade-off: A heavier build than a simple filter. The AI suggestion quality depends on metafield coverage — SKUs with thin data get generic recommendations.

AI features as workflow accelerators, not novelty

Context: Every dashboard in 2026 has an AI feature. The risk is building AI that gets used once and ignored. A general chat over the data is easy to build and hard to make load-bearing.

Choice: Targeted AI at specific bottlenecks. The Daily Buying Brief surfaces every morning as a 120-word summary of inventory health with three urgent actions. Reorder email drafts are AI-generated on demand because writing supplier emails in English and Arabic was a real daily friction point. Dead stock suggestions are AI-generated because the action (promote/bundle/liquidate) requires judgment the data alone can't provide.

Trade-off: More complex to build and maintain than a general chat. Each AI feature needs a prompt, a data schema, and a quality bar — and all three require iteration.


What Shipped

A multi-department operations dashboard deployed on Vercel, connecting four live data sources with no manual input. The buying team has a live Stock Risk view ranking every at-risk SKU by severity (OOS, Critical, Low) with auto-calculated reorder quantities and one-click supplier email drafts. Dead Stock Triage surfaces every non-moving item with an AI action suggestion. The Daily Buying Brief writes itself every morning.

Operations has a live Stock Sync view comparing Shopify inventory against WMS quantities side by side — with an automated hourly reconciliation cron catching desyncs before customers encounter them. Expiry alerts flag products approaching their sell-by date. Returns are tracked by vendor.

Marketing has Google Search Console data surfaced as SEO opportunities — high-impression, low-CTR queries where better titles could win free traffic. Trending queries, customer search gaps, and weather-driven demand signals are all live. The automated Weekly Digest writes an AI-generated executive narrative of the week's key changes.

Leadership has a 10-second overview: total SKUs at risk, revenue at risk, OOS count. Daily inventory value snapshots are stored for trend analysis. Competitor price monitoring tracks overlapping products.


Result

Pulse replaced the daily Python script + Google Sheet with a live, zero-manual-input platform serving four departments from one source of truth. The buying team moved from reactive (OOS discovered after a customer complaint) to proactive (OOS predicted days in advance with a draft reorder email already in their inbox).

  • Zero — Manual data entry

  • 15 min — Cache refresh across all views

  • Hourly — WMS reconciliation

  • None — Additional Shopify app fees


What I'd Do Differently

I'd invest earlier in a structured prompt library for the AI features. The Daily Buying Brief, Dead Stock suggestions, and Reorder emails each evolved through several iterations before the output quality was consistently useful — and those iterations happened after the features shipped. A pre-ship prompt QA process would have saved rounds of fixing in production.


What's Next

Inventory Forecast (AI-predicted reorder dates), a Purchase Order Generator that auto-creates POs from reorder suggestions, a Margin Calculator for per-product cost and margin tracking, and a Supabase Trend Database for year-over-year analytics storage. A mobile app integration for push stock alerts is also in the roadmap.

What I'd Do Differently

I'd invest earlier in a structured prompt library for the AI features. The Daily Buying Brief, Dead Stock suggestions, and Reorder emails each evolved through several iterations before the output quality was consistently useful — and those iterations happened after the features shipped. A pre-ship prompt QA process would have saved rounds of fixing in production.


What's Next

Inventory Forecast (AI-predicted reorder dates), a Purchase Order Generator that auto-creates POs from reorder suggestions, a Margin Calculator for per-product cost and margin tracking, and a Supabase Trend Database for year-over-year analytics storage. A mobile app integration for push stock alerts is also in the roadmap.

More Projects

Creating Since 2010

I’m currently available for new work. Let me know if you need a digital designer. I’d love to talk about the next big thing!

© Molham.Works 2025