projects·project·active

Amboras

Thesis

"The Shopify of the AI era" — brand brief in plain English, live Shopify storefront out in under 5 minutes. Zero design work, zero dev work. The AI generates brand identity, copy, products, testimonials, FAQ; Shopify handles real commerce (inventory, payments, checkout). Amboras is the thin AI layer over a real commerce backend.

Status

active. Live at amboras.okzaid.com. Created 2026-04-08 — very recent.

Stack

  • Frontend: Next.js (browser renders landing, storefronts, dashboards client-side).
  • API: Next.js API routes on Vercel serverless.
  • AI: OpenRouter → GPT-4o-mini with structured tool output — forces a typed StoreConfig instead of free-form JSON.
  • Commerce: Shopify Admin REST API (2025-01) — creates real products and variants in a connected store. Cart is a permalink built from variant IDs at checkout; no cart DB.
  • Streaming: SSE (Server-Sent Events) for both initial generation and the AI editor that patches an existing StoreConfig.
  • Persistence: file-based (.stores/[id].json) locally, Upstash Redis in production. Same getStore / saveStore / deleteStore interface behind both; lib/store-cache.ts routes based on env.

Key design decisions

  • SSE over WebSockets: works with Vercel's streaming response model; no persistent connection needed.
  • Structured tool output over free-form JSON: tool_choice forces a valid typed StoreConfig. No text parsing, no partial-failure modes.
  • Shopify as the commerce layer: Amboras doesn't reinvent inventory or checkout. The AI layer is what's novel; commerce is a solved problem.
  • File storage locally, Redis in prod, same interface: zero-infrastructure dev loop, same API in both environments.
  • Client-side cart state: no cart DB needed because Shopify checkout is built from variant IDs at the moment of checkout.

Data model

GeneratedStore wraps a BrandBrief (product, audience, vibe, competitors), a StoreConfig (brand / hero / products / stats / testimonials / about / faq / seo), edit history, and Shopify product mappings (variantId is load-bearing — it's what the cart permalink uses).

Learnings

  • Typed tool-call output eliminates an entire category of LLM failure. If your pipeline has multiple downstream consumers of the AI output, the upfront schema work pays off every request thereafter.
  • The same schema can drive both initial generation and iterative editing if you treat the editor as "AI patches StoreConfig in place" — no separate patch format.

Outcomes

  • Live product at amboras.okzaid.com.
  • Real orders and revenue flow through the Shopify Analytics surface.

Open questions

  • What's the conversion from brief → published store → first order?
  • How well does GPT-4o-mini handle edge briefs (niche B2B, regulated industries)? Is there a fallback tier?

Links