AstroBaaS

Search & discovery

Product Recommendations Engine

Paid pluginsize Lplanned, not built

Indicative price, not an offer: €49/mo; collaborative filtering, content-based recs, A/B testing

Generated from docs/plan/paid/product-recommendations-engine/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.

Product Recommendations Engine is a paid plugin that uses collaborative filtering and content-based algorithms to suggest products on product pages and checkout. It increases average order value by 15–30% through personalized and popular-item recommendations.

The problem

Related products in sidebar; recommendations increase AOV 15-30%. My customers don’t discover complementary products at checkout.

What it does

  • Compute product similarity matrix using collaborative filtering (user behavior) and content-based (category, tags, price)
  • Serve ‘You might also like’ on product page, ‘Frequently bought together’ on cart, ‘Customers also viewed’
  • A/B test recommendation algorithms (control vs variant) and track conversion impact
  • Configurable recommendation count (3, 5, 10) and algorithm selector (collaborative, content-based, hybrid)
  • Cache invalidation on product/order updates
  • Admin dashboard with algorithm selector, A/B test results, recommendation metrics

What it deliberately does NOT do

Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.

  • Does NOT provide real-time collaborative filtering updates (reason: batch-processed model, not streaming)
  • Does NOT integrate with third-party recommendation platforms (reason: self-contained algorithm)
  • Does NOT offer ML model training dashboard (reason: support complexity, model is pre-trained)
  • Does NOT require merchant inventory data beyond public product catalog (reason: recommendations work on what’s published)
  • Does NOT provide cross-store recommendations (reason: single-shop per install)

Data model

New table: product_similarities (product_a_id, product_b_id, similarity_score, algorithm, computed_at). New table: recommendation_impressions (id, product_id, recommended_id, position, clicked, ordered, session_id). New table: ab_test_variants (id, name, algorithm, active, created_at). Plugin settings: algorithm, recommendation_count, cache_ttl, ab_test_enabled.

API

  • GET /api/products/:id/recommendations?algorithm=hybrid&count=5
  • GET /api/recommendations/stats?from=date&to=date
  • POST /api/recommendations/ab-test {variant, product_id}
  • GET /api/recommendations/ab-test-results

Every route added here must also appear in src/pages/openapi.json.ts — a test fails the build if it does not.

Admin

Product recommendations page with algorithm selector and count slider; A/B test dashboard showing control vs variant conversion rates and statistical significance; performance metrics (impressions, CTR, conversion lift); cache invalidation button; algorithm tuning panel.

The seam — why this is paid

Core owns: product catalog, order/cart API, user session tracking. Paid plugin owns: recommendation algorithm, collaborative filtering, A/B testing, performance analytics.

Support commitment: recommendation algorithm accuracy, model retraining, A/B testing SLA

Dependencies

  • Assumes product catalog API exists
  • Assumes order/cart system exists
  • Assumes user session tracking exists (for collaborative filtering)
  • Assumes product update webhooks exist (for cache invalidation)

Acceptance checks

Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.

  • GET /api/products/:id/recommendations returns 5 products sorted by similarity score (descending)
  • Similarity scores are between 0 and 1
  • ‘Frequently bought together’ shows products ordered in same transaction
  • A/B test variant A shows control, variant B shows test algorithm
  • Recommendation impression logged when product page loads
  • Conversion rate lift calculated: (test_conversions / test_impressions) - (control_conversions / control_impressions)
  • Cache invalidated when product price or category changes
  • Admin dashboard shows statistical significance (p-value < 0.05)
  • Merchant can disable recommendations or change count without code
  • Recommendations work with all three storage drivers

Risks

Cold-start problem: new products have no recommendations until they accumulate history. Bias in collaborative filtering: popular products over-recommended, niche products invisible. Schema migration: adding product_similarities table may be slow if 10k+ products exist. A/B test statistical noise with low traffic may show false lift or loss.

Commercial context

Suggested price€49/mo; collaborative filtering, content-based recs, A/B testing
Rival anchorAlgopix: €30/mo; Nosto: €100-500/mo; custom ML: €5000+

The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.


Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full catalogue and ../../AI-GUIDE.md for how to work on this repository.