Zapcopy QA Reports
2026-04-23 · upcoming plan

After v2 — landing page migration & model-switcher

Two workstreams queued after the v2 OCR rollout lands: (1) migrate the marketing site from flashcopy.app to zapcopy.app using a design-brief prompt pipeline, and (2) introduce a model/Lambda switcher + per-scan provenance so we can A/B providers and audit after any upstream model change. Both are captured here as the brief — formal specs follow via the brainstorming → writing-plans loop.

E · flashcopy.app → zapcopy.app landing page

brief

The Flash Copy landing page at /Users/oscar/Desktop/dev/flash-copy-landing predates the ZapCopy rename and is stylistically conservative. We want to replace it with a Zapcopy-branded site that leverages cutting-edge interactive design while keeping the core narrative (what the app does, social proof, pricing, CTA).

E1 — Asset + content inventory (first step)

E2 — Design-brief prompt pipeline

E3 — Pick a direction, implement, deploy

E4 — Decision points to raise during brainstorming

F · Model/Lambda switcher + per-scan provenance

brief

Today, if Gemini changes behavior overnight (silent model nudge, safety-tuning shift), we find out because users report bad scans — we have no fast path to swap providers or compare the new output to the old one. The v2 rollout proved that a per-run lambdaVariant field is the seed we need; F builds out the full infrastructure to make switching routine.

F1 — Provenance fields on every scan

Add the following to the existing OCR result envelope (photo + collection + video):

modelProvider: "google" | "anthropic" | "openai"
modelId: "gemini-2.5-flash" | "claude-haiku-4-5" | "gpt-4o-mini" | ...
modelVersion: "20260301" (provider-reported)
lambdaId: "qr-beam-moderation-ocr-v2-json"
lambdaVersion: git SHA of handler at deploy time
promptId: "photo-ocr-v2-strict-1" (hash or semver)
mode: "normal" | "strict" | ...
latencyMs, inputTokens, outputTokens, totalUSDEstimate

Persist on Photo / Collection / Video and forward to the dashboard ingest. Back-fill nulls for pre-F1 scans (label as provenance: "pre-F1" so charts can exclude them).

F2 — Lambda/model swap without a deploy

F3 — A/B harness in zapcopy-qa

F4 — Provider adapters

F5 — Alerting on provider drift

Sequencing & dependencies

  1. F1 (provenance fields) lands first — cheap, unlocks F3/F5 and gives the landing-page page pricing data one source of truth.
  2. F2 (remote config) + F3 (A/B harness) can run in parallel; F3 needs F1 complete.
  3. E (landing page) is independent and can run in parallel with any F item.
  4. F4 (provider adapters) needs F2 complete so we have somewhere to toggle them to.
  5. F5 (drift alerts) last — needs the 30-day baseline from F1 to exist.

Each workstream gets its own brainstorming → spec → implementation-plan cycle before any code lands. This page is the pre-brainstorm brief only.