A forty-year-old business now reaches its customers directly, through a storefront, app and assistant a five-person team built as one system.
01
Commerce x Shopify
The storefront
The storefront is a custom Shopify theme with a TypeScript backend on Cloudflare Workers over Shopify's GraphQL APIs. The collection taxonomy, filtering and localised URLs were rebuilt from scratch.
What each visitor sees is chosen for them. A weighted signal score reads order history, session behaviour and live stock. Category quotas stop one collection taking over the page, and popularity and seasonal fallbacks cover anyone arriving without history.
02
Retrieval-augmented answers
The assistant
Assistant answers are grounded in the store's catalogue, policies and articles, so responses stay factual instead of hallucinated. Retrieval runs on LangChain over pgvector embeddings and streams replies through server-sent events.
Keeping it inside its remit mattered more than making it clever. It answers questions and refuses anything that touches money or an order, holds up against prompt injection, and keeps personal data out of the logs. A golden set catches regressions before a customer meets one, and provider failover keeps the conversation alive when a model goes down.
03
One backend, two channels
The mobile channel
The same backend extends to a native app in Expo and React Native, so a customer signs in once and shops from either. GitHub Actions and EAS handle delivery.
04
Media on a schedule
Creative systems
Seasonal campaign media comes out of a Python and FastAPI service behind one provider-neutral interface, working across Gemini, OpenAI gpt-image-2 and PhotoRoom, alongside a Next.js video-generation app. Creative arrives on schedule instead of being commissioned per campaign.
05
Operations x AI agents
Platform and agents
A per-seat CRM was replaced with a self-hosted Twenty deployment on company-owned AWS, Docker and PostgreSQL behind least-privilege IAM with secrets in AWS Secrets Manager. The Shopify sync is idempotent, so rerunning it cannot duplicate orders.
Google Merchant Center, Search Console and Drive are open to AI agents through a read-only Model Context Protocol server in Python and FastMCP. Its seventeen tools block writes at the tool level, so an agent can investigate a listing or SEO problem without reaching production data. PostHog instruments the whole channel, so changes are judged on customer behaviour rather than opinion.
Result
The business reaches its customers directly, on a channel it owns.
- 10,000+
- people a month
- 500+
- products live
- 8
- brands