PRODUCT CHANGELOG

Everything We've Shipped

Every feature, integration, and improvement — documented in full. Ralph has shipped 18 major releases since launch.

18
Releases
340+
Improvements
21
Data Sources
147
Nightly Jobs
v1.8.0
Apr 2026

Email Engine — Full Overhaul & Learning Loop

NEW 12 FIXES

The email system has been rebuilt from the ground up. A/B subject variants, Klaviyo personalisation tokens, VIP segment copy, plain text versions, and a full closed-loop intelligence system that learns from every campaign result and feeds that knowledge back into the next generation cycle.

New in this release
  • +A/B Subject Variants — every email now generates 3 subject line options. V1 is the primary send, V2/V3 shown in the review panel for manual or future auto-split testing.
  • +Klaviyo Personalisation Tokens — emails now include {{ first_name|default:'there' }} and other liquid tags, injected at generation time from real Shopify customer data.
  • +VIP Segment Copy — each email includes a dedicated VIP opener paragraph. The review panel surfaces this separately with an "Early Access" badge.
  • +Plain Text Version — every generated email now includes a clean plain text fallback for inbox deliverability.
  • +Email Learning Loop — 48h post-send, Claude Haiku interprets open rate, click rate, revenue, and bounce rate vs industry benchmarks. Learnings are written to campaign_learnings and injected into every future email generation prompt.
  • +Email Intelligence UI — new email tab in the campaign review panel: timeline selector (Day 1 / Day 3 / Final Day), sidebar with A/B variants, VIP opener, email client preview, and execute to Klaviyo button.
Bug fixes
  • !Klaviyo API flow corrected — was incorrectly POSTing to /campaign-messages/ (creates a new message). Now correctly: POST /campaigns/ → GET messages/ → PATCH the auto-created message.
  • !send_strategy.datetime placement — datetime was at top level of send_strategy. Must be inside options_static. Campaigns were silently failing to schedule.
  • !Segment IDs rejected by Klaviyo — Klaviyo campaigns only accept list IDs in audiences.included[]. Segment IDs were being sent, causing campaign creation failures. Audience mapping rewritten to emit list IDs only.
  • !Metrics cron never ran — status was being set to 'scheduled' on execute but cron queried WHERE status = 'sent'. Status changed to 'sent'.
  • !Wrong DB column names in learning writeslift_percent, channel, insights_json don't exist. Correct columns are lift_pct, channels_used (JSON array), learning_notes.
  • !INNER JOIN dropped campaigns when Klaviyo disconnected — if a client disconnected their Klaviyo account after a campaign was sent, the metrics cron would silently lose those records forever. Changed to LEFT JOIN with explicit handler.
  • !Broken CTA link{% klaviyo_cta_url %} is not a valid Klaviyo Liquid tag. Replaced with brandConfig.storeUrl.
  • !Ralph prompt queried wrong columnchannel='email' and l.insights_json referenced non-existent columns in email learning context block. Fixed to use correct schema.
The full closed loop is now wired: Execute → status='sent' → 48h cron pulls metrics → Claude Haiku interprets → writeLearning with correct columns → next campaign brief receives emailLearningCtx → email generation sees past performance → Ralph's prompt includes latest email insights.
v1.7.0
Apr 2026

BullMQ Queue System + Living Brain UI

INFRASTRUCTURE NEW

Replaced all node-cron with a BullMQ-powered queue architecture. Four parallel queues, four workers, 18 job types, 9 repeatable schedules. A real-time "Living Brain" UI makes all worker activity visible from the dashboard — every job, every step, every result.

Queue architecture
  • 4 BullMQ queuesintelligence, webhooks, notifications, maintenance, each with dedicated worker pools.
  • 18 job types — nightly intelligence, campaign monitor, opportunity scan, Shopify sync, notification dispatch, digest send, dead stock rescue, blog intelligence, and more.
  • Fan-out nightly job — a single scheduler fans out per-client intelligence jobs across the worker pool, preventing overload on large client sets.
  • Bull Board UI — admin dashboard at /admin/queues showing real-time job state, retry counts, failure reasons, and throughput.
Living Brain widget
  • +SSE streamworkerBus EventEmitter broadcasts job lifecycle events to an SSE endpoint. Dashboard subscribes and updates in real time without polling.
  • +Brain drawer — expandable panel on the home page showing active jobs with per-step progress bars, queue attribution (colour-coded by queue), and elapsed time.
  • +Action endpoints — manual trigger buttons for any job type from the dashboard. Useful for forcing an intelligence scan or re-running a failed digest.
v1.6.0
Apr 2026

Production Infrastructure Layer

INFRASTRUCTURE PERF

A full production hardening pass: Redis caching, AES-256-GCM encryption for all third-party credentials, circuit breakers on external APIs, structured logging with pino, 25+ database indexes, SSE connection limits, Anthropic retry logic with exponential backoff, and abandoned cart webhook handling.

What was added
  • Redis cache layer — hot data (product clusters, store health, opportunity scores) served from Redis with configurable TTLs. Intelligence queries dropped from 800ms avg to under 30ms.
  • AES-256-GCM encryption — all API keys stored encrypted at rest. Shopify tokens, Klaviyo keys, Google OAuth tokens — nothing stored in plaintext.
  • Circuit breakers — wraps Shopify, Klaviyo, Meta, and Google API calls. Trips after 5 consecutive failures, half-opens after 30s. Prevents cascading failures during external outages.
  • Pino structured logging — replaced all console.log with structured JSON logs (request ID, client ID, duration, status). Production logs are machine-parseable.
  • 25+ DB indexes — profiled the most common query patterns and added composite indexes. Campaign fetch, learning lookup, and product intelligence queries all significantly faster.
  • Abandoned cart webhook — Shopify abandoned_checkout/create webhook now fires opportunity scoring and can trigger a Klaviyo flow.
  • Graceful shutdown — SIGTERM handler drains active SSE connections, flushes queue jobs, and closes DB connections cleanly before process exit.
30ms
Cached query time
25+
DB indexes added
256-bit
Encryption (GCM)
v1.5.0
Apr 2026

Production Readiness Audit — 316 Endpoints Verified

FIXES AUDIT

Full production audit covering every endpoint, the learning loop, voice system architecture, and all autonomous actions. Six critical bugs found and fixed. Every button and action in the dashboard confirmed to do exactly what it claims.

Audit scope
  • 316 endpoints verified — every API route tested for correct auth, error handling, and response shape.
  • !What-if URL bug — scenario modeller was constructing the URL incorrectly, causing 404s on navigation. Fixed.
  • !COGS query columns — cost_of_goods column referenced before migration ran on some installs. Added column existence guard.
  • !Return rate / repeat rate multiply bug — rates were being multiplied together instead of used individually. Corrected calculation producing bad LTV scores.
  • Learning loop confirmed — end-to-end trace of the campaign intelligence feedback loop verified working: action → result → learning → next prompt injection.
  • Voice system architecture — ElevenLabs TTS pipeline confirmed: segment text → API call → audio blob → seek bar UI. Per-segment voices working.
v1.4.0
Apr 2026

Contextual Sales Intelligence

NEW

Ralph now understands the context your store operates in — not just your data. School terms, UK bank holidays, weather patterns, store type and audience detection, and a behavioural sensitivity map. All of this context is injected into every Ralph prompt, every morning briefing, and every campaign generation cycle.

Context signals added
  • +School term awareness — Ralph knows whether it's term time, half-term, or school holidays. Adjusts campaign urgency, audience focus, and product recommendations accordingly.
  • +Bank holiday × audience behaviour map — different store types respond differently to bank holidays. An outdoor gear store sees different patterns to a children's clothing store. Ralph detects your store type and applies the correct behavioural model.
  • +Weather windows — 5-day forecast integrated. If a heatwave is coming, outdoor and seasonal products are automatically scored higher. Cold snaps trigger different patterns.
  • +Store type + audience detection — Ralph analyses your product catalogue, order history, and customer demographics to classify your store type and primary audience. This classification is used to tune every recommendation.
  • +Sensitivity map — a 2D map of which product categories are sensitive to which external signals (weather, school calendar, bank holidays, payday cycles). Prevents bad recommendations (e.g. pushing heavy coats during a May bank holiday weekend).
v1.3.0
Apr 2026

Unified Cross-Channel Intelligence Matrix

NEW

All channel data — Shopify, Meta Ads, Google Shopping, Klaviyo email, GSC — is now unified into a single intelligence layer. Products are cross-referenced across channels. Attribution is reconciled. A store health score is computed from 40+ signals and injected into every Ralph interaction.

Intelligence Matrix features
  • +Product cross-channel graph — each product's performance is tracked across Shopify sales, Meta ad performance, Google Shopping, and email click-through. Gaps between channels are surfaced as opportunities.
  • +Channel attribution reconciliation — when a sale is attributed to multiple channels (last-click vs data-driven), Ralph surfaces the discrepancy and flags where you may be over- or under-investing.
  • +Customer intelligence layer — LTV, CAC, and repeat rate by acquisition channel. Know whether your Meta customers are worth more over 12 months than your Google customers.
  • +Store health score — a single 0–100 score computed from 40+ signals: revenue trend, campaign ROAS, stock health, email deliverability, feed quality, GSC ranking trends. Shown on the home page and injected into Ralph's prompt.
  • +Detector #16 — new opportunity detector: cross-channel attribution gap. Fires when a product has strong organic/email performance but zero paid media presence.
  • +Intelligence Matrix page — dedicated page showing the full cross-channel breakdown with filterable product graph, channel comparison table, and attribution waterfall.
// DB TABLES ADDED 4 new tables
  • unified_product_graph — cross-channel product performance records
  • channel_attribution — per-order attribution by channel with source confidence
  • customer_intel — LTV, CAC, repeat rate, cohort, segment flags per customer
  • store_health_scores — daily health score snapshots with signal breakdown
v1.2.0
Mar 2026

Meta Ads Intelligence Integration

NEW

Facebook and Instagram ads are now a first-class intelligence source in Ralph. A 7-tab Meta hub page, two new opportunity detectors, nightly performance sync, and full Ralph context injection — your Meta data is as visible as your Shopify data.

Meta hub features (7 tabs)
  • +Overview — total spend, revenue, ROAS, CPM, CTR, and conversion rate across all campaigns.
  • +Campaigns — sortable table with per-campaign ROAS, spend pacing, and Ralph health flags (overspending, underperforming, fatigued).
  • +Ad Sets — audience performance breakdown. Which audiences are efficient, which are saturated.
  • +Creative Intelligence — top and bottom performing creatives ranked by ROAS. Fatigue scoring.
  • +Audience Insights — demographic breakdown of your converting customers on Meta vs your store's customer base.
  • +Budget Optimiser — Ralph's recommendation for how to reallocate spend across campaigns to maximise ROAS.
  • +Attribution — last-click vs Meta's reported attribution with reconciliation against Shopify order data.
New opportunity detectors
  • +Detector #14 — Creative Fatigue — fires when a Meta ad's CTR has declined 30%+ over 7 days while CPC is rising. Recommends new creative brief.
  • +Detector #15 — Meta + Shopify ROAS Gap — fires when Meta-reported ROAS diverges significantly from Shopify revenue attribution. Usually indicates attribution window or UTM tracking issues.
v1.1.0
Mar 2026

Google Shopping Integration + Unified Intelligence Calendar

NEW

Google Merchant Center is now connected. Ralph monitors feed health, price competitiveness, and Shopping campaign performance. Alongside this, a full Unified Intelligence Calendar was shipped — campaigns, blog posts, retail dates, and AI-scored opportunities, all in one view.

Google Shopping
  • +Feed health monitoring — Ralph checks your Merchant Center feed daily. Disapproved products, missing attributes, price mismatches, and GTIN errors are flagged with fix actions.
  • +Price competitiveness — GMC benchmark data used to flag products where you're priced above the market median. Opportunity for price-led campaign detected automatically.
  • +Best sellers in Shopping — products with high impressions but low CTR identified. Ralph suggests title or image optimisations.
  • +Auto-fix — one-click fix for common feed errors: missing descriptions, incorrect categories, GTIN format issues.
  • +Shopping campaign integration — Shopping performance data injected into campaign pipeline (Step 17). Ralph knows which products already have Shopping traction before recommending a campaign.
Unified Intelligence Calendar
  • +Month and Week views — switchable calendar views with campaign markers, blog publish dates, and retail opportunity days.
  • +Retail sales day overlay — UK retail calendar events (Black Friday, Valentine's, Easter, Back to School, etc.) automatically annotated with historical performance benchmarks from your store.
  • +AI opportunity scoring — each upcoming date gets an AI opportunity score (0–100) based on your store's historical data, product mix, and contextual signals (weather, school terms).
  • +Day detail panel — click any day to see all campaigns active, blog posts published, and opportunities detected, with one-click campaign launch.
── v1.0.0 LAUNCH ──
v1.0.0
Mar 2026

Production Hardening — Ralph Goes Live

LAUNCH INFRA

v1.0 marks Ralph's production launch. A full hardening pass before launch: error boundaries everywhere, JWT secret rotation, cron overlap guards, DB retry logic, anonymous rate limiting, bounded caches, SSE connection limits, and graceful shutdown handling.

Hardening checklist
  • Error boundaries — React error boundaries on every major page section. A single component crash no longer brings down the whole dashboard.
  • JWT secret rotation — auth tokens rotated, previous sessions invalidated cleanly. Rate of token refresh reduced with sliding window sessions.
  • Cron overlap guards — nightly intelligence job checks if a previous run is still active before starting. Prevents double-processing on slow nights.
  • DB retry logic — SQLite write retries with exponential backoff on SQLITE_BUSY. WAL mode enabled for concurrent read/write.
  • Anonymous rate limiting — unauthenticated endpoints rate-limited to prevent scraping and abuse.
  • Bounded LRU caches — all in-memory caches now have hard size limits. Memory footprint bounded regardless of store size.
  • SSE connection limits — max SSE connections per client capped. Stale connections auto-closed with heartbeat timeout.
v0.9.0
Feb 2026

UX v2 — Memory Browser, Voice Briefing & Code Splitting

NEW −29% BUNDLE

Major UX improvements across the dashboard, plus a significant performance optimisation. Bundle size reduced from 845KB to 600KB gzip through code splitting. Morning briefing upgraded with per-segment TTS, clickable tabs, and a seek bar. A full conversation memory browser was added.

UX improvements
  • +Morning briefing seek bar — click any segment tab while audio is playing and playback jumps to that segment. Works while ElevenLabs TTS is active.
  • +Per-segment TTS — each briefing segment (Revenue, Campaigns, Stock, Opportunities, Focus) has its own audio clip, generated separately. Switching tabs immediately plays the correct segment.
  • +Memory browser — Ralph's conversation memory is now browsable from the dashboard. See every remembered fact, its confidence score, decay status, and when it was last referenced. Delete or pin individual memories.
  • +Cluster expand — product cluster cards now expand to show every product in the cluster with revenue contribution, lifecycle stage, and a one-click campaign launch.
  • Cluster revenue display — revenue figures now show trailing 30-day actual revenue (not estimates) pulled directly from Shopify orders.
Code splitting & performance
  • Home.jsx split — 8,290-line monolithic component broken into 7 lazy-loaded chunks. First contentful paint improved significantly.
  • Vendor chunk strategy — React, charts, and heavy dependencies moved into stable vendor chunks. Repeat visitors hit CDN cache instead of downloading on every deploy.
  • −29% gzip size — total bundle from 845KB to 600KB gzip. Achieved through chunk splitting, tree-shaking improvements, and removing unused icon imports.
600KB
Bundle (gzip)
−29%
Size reduction
7
Lazy chunks
v0.8.0
Feb 2026

UX v1 — Morning Briefing Video, Conversation Memory & Voice Commands

NEW

The first big UX push: ElevenLabs-powered morning briefing with video, persistent conversation memory across Ralph sessions, smart notifications with digest delivery, and expanded voice command support.

Features added
  • +Morning briefing video — animated video card in the home page header. Plays Ralph's morning briefing with a talking head (ElevenLabs TTS + avatar). Auto-plays on load, muted by default.
  • +Conversation memory — Ralph now remembers facts across sessions. Stored as typed memories (user profile, product preferences, past campaign outcomes, explicit requests). Memory decay scoring ensures old facts fade gracefully.
  • +Smart notifications — alert system for stock warnings, campaign performance drops, new opportunities, and required approvals. Grouped by urgency. Delivered in-app and via email digest.
  • +Expanded voice commands — Ralph now understands 40+ voice commands including: "what's selling today", "pause the current campaign", "show me dead stock", "what should I campaign next", "how's Meta performing".
  • +Visual product clusters — product intelligence page redesigned around the cluster model. Cards show cluster name, revenue, trend, priority label, and top products in a visual mosaic.
v0.7.0
Feb 2026

Blog Intelligence Engine — Content-Commerce Correlation

NEW

Ralph now understands your blog as a revenue channel, not just a content calendar. Articles are synced and scored against GSC traffic, Shopify order attribution, topic-revenue correlation, and content gap detection.

Blog Intelligence features
  • +Article sync — Shopify blog articles synced automatically. Each article's traffic (from GSC) is cross-referenced against Shopify orders where the landing page URL matches.
  • +GSC traffic attribution — clicks from Google Search Console attributed to specific articles. Revenue from orders with a blog landing page stored against the article.
  • +Topic-revenue mapping — topics and product categories mentioned in articles are mapped to revenue generated via that article. Reveals which content drives sales vs which drives traffic that doesn't convert.
  • +Content gap detection — GSC query data compared against your product catalogue. High-volume search terms where you have matching products but no ranking content are surfaced as content opportunities.
  • +Article scoring — each article scored on: traffic volume, revenue attribution, keyword ranking momentum, backlink count, and content freshness. Identifies articles worth updating vs retiring.
  • +Campaign → blog integration — campaigns can now include a blog post as part of the 16-step pipeline. The blog post is written to support the campaign's SEO intent alongside the promotional push.
v0.6.0
Jan 2026

12-Dimension Product Intelligence Engine

NEW

Products are now scored across 12 intelligence dimensions every night. Not just "best sellers" — elasticity, lifecycle stage, cannibalization risk, LTV contribution, return risk, geographic demand, and more. Every product recommendation Ralph makes is grounded in this scoring.

12 intelligence dimensions
  • +Lifecycle stage — Introduction / Growth / Maturity / Decline scored from velocity trends. Determines whether to grow, harvest, or rescue a product.
  • +Price elasticity — estimated price elasticity from A/B price test history and cross-price analysis. Used to predict revenue impact of discount depth before recommending a campaign.
  • +Cannibalization risk — detects when promoting one product suppresses sales of a similar product in the same category. Prevents self-defeating campaigns.
  • +Entry / upsell path — identifies which products serve as entry points for new customers and which are natural upsell destinations. Used in campaign sequencing.
  • +Search efficiency (RPI/RPC) — Revenue Per Impression and Revenue Per Click from GSC and Shopping data. Identifies products with organic traction that aren't being exploited with paid campaigns.
  • +Return risk — return rate by product, variant, and customer segment. High return-risk products flagged before being promoted at scale.
  • +Repeat purchase / LTV — LTV contribution by product. Products with high repeat rates scored higher for acquisition campaigns even at lower initial margin.
  • +Profit scoring — COGS-adjusted margin calculated. Revenue without margin context is filtered out of all scoring models.
  • +Stock risk — days of stock remaining at current velocity. Products within 7 days of stockout auto-promoted (or auto-suppressed, depending on replenishment status).
  • +Geographic demand — order data segmented by shipping postcode. Regional demand patterns surfaced. Useful for localised campaigns and inventory positioning.
  • +Temporal patterns — seasonality scoring by week of year and day of week. Products that historically spike in specific periods are pre-scored for campaign readiness.
  • +Affinity clustering — products that are frequently purchased together are clustered. Used to build bundle recommendations and multi-product campaign groupings.
v0.5.0
Jan 2026

Autonomous Campaign System — Autopilot

NEW

Ralph can now run campaigns autonomously from detection through execution and auto-revert. Mid-flight optimisation, dynamic pricing curves, and auto-publishing — all gated behind an explicit per-feature autopilot toggle. Nothing autonomous happens without you enabling it.

Autonomous capabilities
  • +Mid-flight optimisation — while a campaign is running, Ralph monitors conversion rate, ROAS, and revenue per visitor every 4 hours. If it's underperforming, it adjusts discount depth or suppresses low-performing variants.
  • +Dynamic pricing curves — instead of a flat discount, Ralph can run a time-decaying price curve. Start at 15% off, drop to 25% off on day 3 if velocity is below target. Maximises revenue while protecting margin.
  • +Auto-publishing to Shopify — approved (or autopilot-enabled) campaigns publish prices, create collections, and update metafields directly to Shopify via the Admin API.
  • +Proactive campaign suggestions — Ralph surfaces campaign recommendations in the morning briefing with a full brief pre-built. One tap to approve.
  • +Autopilot safeguard — every autonomous action is logged with full reasoning. A "kill switch" is always visible. No autonomous action can spend money without explicit budget approval.
  • +Campaign templates — Ralph learns which campaign structures work for your store and builds templates. Future campaigns for the same category are pre-populated from the best-performing template.
v0.4.0
Dec 2025

Proactive Opportunity Scanner — 16 Detectors

NEW

Ralph stops waiting to be asked. The Opportunity Scanner runs every night and surfaces revenue opportunities you'd never have spotted manually. 16 detectors, each specialised for a different pattern in your store data.

Opportunity detectors (16 total)
  • +Attribute clustering — groups products by shared attributes (colour, material, use case) and identifies under-promoted clusters with combined revenue potential.
  • +Momentum detector — finds products with velocity acceleration over the last 7 days that haven't been promoted. Catches organic trends before they peak.
  • +Affinity bundles — identifies product pairs frequently bought together that have never been bundled in a campaign. Revenue from a bundle campaign estimated from co-purchase data.
  • +Velocity rescue — finds slow-moving stock with a specific liquidation plan (discount depth needed, expected sell-through time, margin impact) rather than a vague "try a sale".
  • +Search gaps — GSC queries where your site appears on page 2-3 with products that match. A targeted campaign or content push could capture high-intent traffic you're nearly ranking for.
  • +Weather windows — upcoming weather events (heatwave, cold snap, wet weekend) cross-referenced with your seasonal product categories.
  • +Dead stock rescue — products with zero orders in 30+ days and stock levels above a threshold. Specific campaign type recommended based on margin, category, and seasonality.
  • +Proven replays — identifies campaigns from the last 12 months that exceeded benchmarks and detects when similar conditions exist again. Suggests a replay campaign with the same structure.
v0.3.0
Dec 2025

Campaign Pipeline V2 — 16 Steps, SSE, Auto-Revert

NEW IMPROVED

The campaign builder was rebuilt from scratch. A 16-step streaming pipeline with real-time progress via Server-Sent Events, automatic rollback on underperformance, one-click launch to Shopify, and a live performance card that updates throughout the campaign lifecycle.

Pipeline steps (16)
  • +Store context pull → Product intelligence → Elasticity scoring → Pricing strategy → Image generation (Gemini Imagen 3) → Campaign brief → Email sequence (Claude Sonnet) → Subject line variants → Blog post → SEO metadata → Collection creation → Shopify publish → Schedule → Auto-revert setup → Klaviyo sync → Intelligence seed
Key improvements
  • +SSE streaming — every pipeline step streams status back to the browser in real time. No polling. You watch Ralph work.
  • +Auto-revert — when a campaign is published, a revert job is scheduled. If conversion rate or ROAS falls below your thresholds within 72h, prices are automatically restored and you're notified.
  • +Health checks — before publishing, Ralph runs a checklist: stock levels sufficient, prices valid, no conflicting promotions, Shopify API responsive. Fails loudly before going live.
  • +Live performance card — after launch, the campaign card in the dashboard updates in near-real-time with orders, revenue, and ROAS as they come in via Shopify webhooks.
  • +Campaign chaining — one campaign can trigger the next. Run "Spring Sale" and auto-schedule a follow-up "Last Chance" email campaign for day 6.
v0.2.0
Nov 2025

Stability Layer — LRU Caches, Async DB, SSE Cleanup

INFRA FIXES

After initial deployment, a set of stability improvements were prioritised. LRU caches for hot data, async database saves to prevent blocking the event loop, SSE connection cleanup on disconnect, an API request queue to prevent concurrent Shopify API flooding, and cron job parallelization.

Stability improvements
  • LRU caches — hot data (product catalogue, customer segments, store config) cached in LRU with configurable TTLs. Reduced Shopify API calls by ~70% on dashboard load.
  • Async DB saves — all non-critical writes made async. Dashboard interactions no longer block on SQLite writes.
  • !SSE connection leak — SSE connections were not being closed when clients disconnected. Under load, this caused connection count to grow unboundedly. Fixed with disconnect event cleanup.
  • API request queue — Shopify Admin API requests now queued with a concurrency limit of 2 and 500ms inter-request delay. Prevents rate limit errors on stores with large catalogues.
  • Cron parallelization — nightly intelligence jobs now run in parallel across clients instead of sequentially. Nightly scan time for 10 clients dropped from 40 minutes to 8 minutes.
  • Error boundaries — React error boundaries added to all major dashboard sections. Component crashes caught and displayed gracefully without a full page reload.
v0.1.0
Oct 2025

Foundation — Core Architecture

INITIAL RELEASE

Ralph's initial architecture: React 18 + Vite frontend, Node/Express backend, SQLite with WAL mode, Shopify OAuth integration, modular AI agent system, and queue-based job processing. The foundation that everything else is built on.

Core architecture
  • +React 18 + Vite frontend — dashboard with React 18 concurrent features, Vite for fast builds and HMR.
  • +Node/Express backend — REST API with JWT authentication, session management, and Shopify webhook handling.
  • +Shopify OAuth integration — full OAuth 2.0 flow with Shopify Partners. Connects to Admin API for products, orders, customers, inventory, and metafields.
  • +Modular AI agent system — Ralph's intelligence broken into specialised agents: Campaign Agent, Product Agent, Pricing Agent, Copy Agent, SEO Agent. Each agent has its own prompt context and tool access.
  • +Morning briefing (v1) — daily analysis run at 6am. Surfaces revenue summary, stock alerts, campaign status, and a single recommended action. Text-only in v0.1.
  • +Campaign builder (v1) — single-step campaign creation. Select products, set discount, Ralph writes copy and schedules Shopify price changes.
  • +Google Analytics 4 + GSC integration — traffic and search query data connected. Used for content gap detection and landing page performance.
  • +Klaviyo integration (v1) — basic Klaviyo connection. Email campaigns created and scheduled via API. No intelligence layer yet.

Ralph is Still Getting Smarter

Every campaign Ralph runs is a data point. Every result feeds back into the next cycle. The longer you use Ralph, the better it gets at your specific store.