Starwatch Labs — applied AI, from prototype to production
starwatch Book a call
[ SELECTED WORK ]

AI, shipped into real products.

Three products, three domains — a Shopify virtual try-on app, an automotive AI super-app, and an adtech debugging tool. Different stacks, one pattern: pick the right model for the job, engineer it for accuracy, wrap it in fallback and guardrails, and ship it where users are.

Book a call
[ CASE 01 ] Shopify App · Virtual Try-On

Voilae — a try-on button on every product page.

A one-click Shopify app that lets shoppers see themselves in a garment before they buy — no code, no re-platform, live on any theme in minutes.

Visit voilae.com
+28%
Conversion lift on product pages with try-on*
−40%
Returns in the first month*
1.8s
Average try-on generation time
<2 min
From install to live, zero code

[ TRY IT LIVE ]

Run a try-on. Watch the cache pay off.

Pick a garment and hit generate. The first render is a cold miss — a live inference call that takes a beat and costs a few cents. We cache the result, so every render after is instant and $0.00. A pixel-art stand-in for Voilae's runTryOn() pipeline — rendered live in your browser, no photos, no uploads.

Dressed Base
Pick a garment · hit generate
    · Size ·
runTryOn()
providerfal.ai · fashn-v16Primary
garment
resultidleReady
cost$0.000
cacheempty

A stylized stand-in — the figure and garments are drawn procedurally, and the timings/costs mirror fal.ai's real numbers ($0.075/render). In Voilae the same path runs FASHN v1.6 with fal.ai failover and a real result cache. See how it works ↓

[ THE CHALLENGE ]

Shoppers can't tell how it will look on them.

In fashion e-commerce, the single biggest source of hesitation — and of returns — is uncertainty about fit and look. A flat product photo on a model tells a shopper very little about themselves. Merchants knew try-on could help, but existing options meant AR SDKs, a theme rebuild, or a developer project nobody had time for.

[ THE BUILD ]

Install, enable, done.

Voilae ships as a Shopify theme app extension: merchants drag a "Try it on" button onto any product page from the theme editor — no code, works with any Online Store 2.0 theme. Shoppers upload a photo or pick from 16 diverse avatars; "Complete the Look" composites a full top-and-bottom outfit in a single click. Products sync automatically over webhooks, billing is usage-based, and GDPR data flows are built in.

voilae · try-on
providerfashn-v16Primary
garmentauto-detected · top
resultcache hit · 1.8sCached
cost$0.00 on repeat
fallbackfal.ai · standing byReady

[ HOW WE APPLIED AI ]

Photorealistic garment-on-person synthesis, made reliable enough to sell.

01

Specialized try-on models

Not a generic image model — purpose-built virtual try-on diffusion models (FASHN v1.6, Leffa, CAT-VTON) served through fal.ai and fashn.ai, chosen per job for quality, speed, or cost.

02

Provider abstraction + failover

One runTryOn() interface behind every model. A composite mode tries FASHN first and falls back to fal.ai automatically, so uptime never depends on a single vendor's API.

03

Caching, moderation & async

Results cache on (provider, person, garment) so repeat try-ons are instant and free. NSFW moderation runs in-model; a webhook queue and "Notify me" flow cover slow generations.

RemixShopify PolarisPrisma · PostgresSupabaseUpstash Redisfal.aiFASHNTurborepo

*Conversion and returns figures are Voilae's published product metrics.

[ CASE 02 ] Consumer mobile app · Automotive AI

modr — get the right part. Instantly.

Snap a photo or scan a VIN, and modr identifies the exact part — then finds local suppliers with stock. What began as part identification grew into a full EV-ownership "garage" in your pocket.

Visit modr.tech
VIN + photo
Input a shopper already has on hand
OEM-grade
Part numbers, pinouts & torque specs
35+
Data models behind the garage
~50
Deno edge functions at the edge

[ TRY IT LIVE ]

Point the camera. Get answers, not guesses.

Two sides of modr's multimodal vision. Decode a diagram — feed an exploded view and modr labels every component, writes a step-by-step repair procedure, and flags the cautions. Or identify a part from a single photo — a clean shot resolves to an exact OEM number and high confidence, while a blurry one lands under the 60% floor, where modr returns Unknown instead of inventing a number. Pixel-art stand-ins for modr's real diagram vision and analyze-part() calls — rendered live in your browser, no photos, no uploads.

Hit analyze to decode
Scanned on Aurora-1 Orbital Lander · Flight Unit 2
Confidence
Awaiting scan
analyze-part()
modelgemini-3-pro · visionStrict JSON
category
part #Ready
confidence
alternates
sourcing

A stylized stand-in — the part is drawn procedurally and the analysis is scripted. In modr the same path sends the photo to Gemini 3 Pro vision and returns this exact strict-JSON shape (name, partNumber, category, oem, confidence, alternates); anything under the confidence floor is routed to a clarify step rather than guessed. See how it works ↓

Decoded diagram Mechanical exploded view · Aurora-1 Orbital Lander
analyzeDiagram()
modelgemini-3-pro · visionStrict JSON
diagram
components
steps
cautions

    A stylized stand-in — the diagram and its analysis are scripted. In modr the diagram API sends the image to Gemini 3 Pro vision (flash fallback) and returns strict JSON: components with bounding boxes, step-to-part mappings, a parts glossary, and an executive summary with cautions. See how it works ↓

    [ THE CHALLENGE ]

    The right part is buried in part numbers.

    Ordering a replacement part means decoding OEM numbers, checking compatibility against an exact trim, and sourcing something in stock — a process that defeats most owners and eats a mechanic's time. And for EV owners, everything else about the vehicle lives in a dozen disconnected apps.

    [ THE BUILD ]

    One garage for the whole vehicle.

    A mobile-first app built around a "garage" dashboard. Point the camera at a part and modr returns the exact identity and sourcing; feed it a wiring or exploded diagram and it decodes the components and repair steps; scan a VIN or plate to set vehicle context. It expanded into tire tread analysis, battery state-of-health, a charging finder with peer ChargeShare, EV incentives, vehicle comparison, and service records — all on Supabase edge functions.

    modr · analyze-part
    "name":        "Front bumper cover",
    "partNumber":  "1044422-00-E",
    "oem":         "Tesla",
    "confidence":  0.94,
    "alternates":  2 found
    modelgemini-3-pro · visionStrict JSON

    [ HOW WE APPLIED AI ]

    Multimodal vision, engineered to never guess.

    01

    Photo & VIN → structured facts

    A part image plus vehicle context goes to Gemini 3 Pro vision and comes back as strict JSON — OEM number, category, confidence, alternates. VIN and plate reading is OCR from the same camera.

    02

    Anti-hallucination by design

    The Diagnostic Decoder reads wiring and parts diagrams into pinouts, wire colors, and torque values under hard "output only what's shown" rules. Comparisons run at temperature 0 for data-grounded answers.

    03

    Fast & cheap at the edge

    Vision analyses are cached by image hash (up to 90 days) and run as Deno edge functions close to the user — through both the Google Gemini API and the Lovable AI gateway, with retry and backoff.

    React · ViteSupabase · DenoGoogle Gemini 3 ProLovable AI GatewayStripeSmartcar · Tesla FleetNHTSA · NREL
    [ CASE 03 ] Chrome Extension · Adtech DevTool

    AdFlow — debug adtech requests in minutes, not hours.

    A Manifest V3 extension that turns a chaotic ad-request waterfall into a clear, contextual narrative — vendor recognition, payload decoding, and AI explanations, all in the browser.

    View on the Chrome Web Store
    200+
    Ad vendors recognized by domain
    5
    Purpose-built AI analysis modes
    OpenRTB
    Bid requests & responses decoded
    Haiku 4.5
    Streamed Claude explanations

    [ TRY IT LIVE ]

    Load a news page. Watch the ad chain unfold.

    Hit capture and the article's 300×250 slot runs a live header-bidding auction — four SSPs bid, a winner renders. Alongside, AdFlow captures every request, names the vendor and stage of each, and flags its signature bug: a viewability beacon firing before the impression it measures. Capture stays local until you click Explain with AI — then a Claude session summary streams in. A stand-in for AdFlow's real inspector — rendered live in your browser, no network, no HAR file.

    thedailyledger.example/markets
    AdFlow · Network Inspector 0 requests · 0 vendors

    runInspector()
    capturedIdle
    winning bid
    creative
    issue

    A stylized stand-in — the page and creative are drawn procedurally and the auction is scripted (CPMs and the beacon timing mirror a real programmatic call). In AdFlow the same path intercepts live traffic, recognizes 200+ vendors, decodes OpenRTB, and streams the summary from Claude (Haiku 4.5) — the capture never leaves your machine until you ask. See how it works ↓

    [ THE CHALLENGE ]

    50–200 requests, 20–50 vendors, one page load.

    Debugging a live ad campaign means hand-parsing HAR files, cross-referencing obscure domains, decoding base64 and OpenRTB payloads by hand, and guessing at ordering bugs — like a viewability beacon firing before the impression it's supposed to measure. It routinely costs engineers hours.

    [ THE BUILD ]

    Read the ad chain, don't touch it.

    AdFlow intercepts ad traffic without ever blocking or modifying it. It recognizes 200+ vendors across SSP, DSP, identity, and verification; decodes URL, base64, JSON, and OpenRTB payloads; clusters requests into ad flows; analyzes header-bidding latency; and flags five issue types. Findings export to JSON or PDF for non-technical stakeholders.

    adflow · session
    captured148 reqs · 32 vendors
    winning bid$2.41 CPM · DSP
    issueviewability before impressionOut of order
    ai summarystreaming…Explained

    [ HOW WE APPLIED AI ]

    Five domain-tuned analysts, one privacy-first architecture.

    01

    Five purpose-built analysts

    Request Explainer, Session Summary, Ordering-Issue Analyzer, Discrepancy Predictor, and a Chat assistant — each a separate Claude (Haiku 4.5) prompt encoding SSP/DSP/OpenRTB/header-bidding domain knowledge.

    02

    Context engineering

    Builders compress captured traffic — top vendors, recent requests, payloads truncated to fit — into each model's token budget, then stream the answer back live as SSE for a responsive feel.

    03

    Privacy-first, opt-in

    Capture stays local until you click an AI action. Users bring their own Anthropic key, or route through a stateless Cloudflare Worker proxy that injects the key and logs nothing.

    WXT · Manifest V3React · ZustandTailwindCSSAnthropic ClaudeCloudflare WorkersOpenRTB

    [ THE THROUGH-LINE ]

    Across a Shopify app, a consumer mobile app, and a devtool, the same discipline: the right model, engineered for accuracy, wrapped in fallback and guardrails, and shipped where users are.

    A demo proves an AI feature can work once. These shipped because the pipeline around the model — caching, failover, structured outputs, moderation, privacy — was treated as the real product.

    [ WHAT CARRIES ACROSS ]

    [ MODELS ]

    Right-fit

    Chosen per job

    Diffusion for try-on, multimodal vision for parts, a compact fast model for adtech — matched to the task, not the hype.

    [ RELIABILITY ]

    Fallback

    Never one vendor deep

    Provider abstraction, automatic failover, retries, and caching so a single API outage never becomes a product outage.

    [ TRUST ]

    Guardrails

    Accuracy & privacy first

    Strict structured outputs, anti-hallucination prompts, moderation, and opt-in, log-nothing data handling.

    Have an AI idea that needs to survive production? Let's talk.

    Book a call