● Live · Open Source · Tier 1 Platform
📦

Smart Restock Bot

Shopify Restock Intelligence — UI + Agent

Pulls live Shopify inventory and 30-day order history, forecasts demand, and surfaces prioritized restock recommendations with revenue-at-risk. React UI for humans, REST + MCP for agents. Open-source, DGX-deployable, ready for your Ollama + LM Studio stack.

What it does

Inventory intelligence for the operator who hates spreadsheets.

Smart Restock Bot is a Node.js service that pulls Shopify inventory + last-30-days orders via the GraphQL Admin API, forecasts demand per SKU, and emits prioritized restock recommendations with revenue-at-risk. Slack and Discord alert dispatch with dedup — operators get the right alert once, not five times.

Two interfaces ship in the box: a Vite + React 19 + Tailwind v4 dashboard for human operators, and a MCP stdio server with 5 tools for AI agents. Both share the same analysisService.js core — the agent and the human see the same numbers.

Feature-complete v1, all seven modernization phases shipped, 16/16 tests passing. Public repo, open source, ready to run. Designed to drop on a DGX/GX10 box with local Ollama or LM Studio handling the agent side.

📊
Demand forecasting

30-day order velocity per SKU, demand projection, revenue-at-risk if a stockout hits. Critical-threshold tunable per store.

🔔
Alert dispatch

Slack + Discord webhook delivery with dedup — duplicate alerts suppressed automatically. No alert fatigue.

🖥️
React UI

Vite 6 + React 19 + TS + Tailwind v4 SPA served by Express. Recommendations dashboard, analysis history drawer, per-store settings.

🔌
MCP server

stdio MCP server with 5 tools so any agent (Claude, GPT, local) can drive the analysis, fetch history, and adjust thresholds.

🌐
REST + OpenAPI

REST API with OpenAPI 3.1 spec. Same analysis endpoints the UI and MCP use — programmable from anywhere.

🏪
Per-store settings

Multi-store deployment. Each store has its own critical threshold, analysis cadence, and alert routing. All tunable per-store.

Stack & deployment

The architecture, plain.

Service
Node.js 22 + Express 5

Modernized stack — Node 22, Express 5, pino structured logging, zod validation. Clean separation between transport and analysis.

Node 22Express 5pinozod
Storage
SQLite (WAL mode)

Embedded SQLite with WAL for concurrent reads. Stores analysis history, store settings, encrypted Shopify tokens.

SQLiteWAL
Shopify integration
@shopify/shopify-api 13

GraphQL-only Admin API. Custom-app token auth. Full inventory + orders sync.

Shopify GraphQLCustom App
UI
React 19 + Vite 6 + TS

Vite 6 build, React 19, TypeScript, Tailwind v4. Single-page app served by Express, drawer-based analysis history + settings panels.

React 19Vite 6Tailwind v4
Agent surface
MCP stdio server (5 tools)

Model Context Protocol server with 5 tools sharing the same analysisService. Drop into Claude Desktop, your local agent, or any MCP-aware client.

MCP5 tools
Deployment
Docker / DGX / Bare-metal

Multi-stage Dockerfile, docker-compose, deploy/install-dgx.sh systemd unit. Run anywhere from a laptop to a GX10.

DockerComposeSystemd
Built for

Who this fits.

🛒
Shopify operators with stockout pain

If a SKU going to zero costs you real revenue, the revenue-at-risk surfacing makes the priority obvious. Critical-threshold tunable per store so the noise floor matches your reality.

🤖
Operators running an AI agent in the loop

The MCP server lets your Claude, GPT, or local Ollama agent drive the analysis — schedule re-checks, fetch history, adjust thresholds — all from the agent.

🏢
Multi-store operators

Per-store settings means every brand or store gets its own configuration without forking the install. The 3-brand launch plan (TechShieldCo, Salt & Cedar Co., Vellura) runs on this same stack.

🔓
Operators who want to own their stack

Open-source, MIT-shaped license, public repo. Run it on your hardware. Read the code. Modify what you need. No SaaS lock-in.

📦

Want it running on your store?

Smart Restock Bot is open source — read the code on GitHub, or book a call and we'll install, configure, and wire it to your Slack/Discord with revenue-at-risk dialed to your operation.