VibeQX Production Readiness Report
Demo AI SaaS · 2026-06-30
- Scope
- Auth, payments, data boundaries, AI agent, browser & mobile flows
- Stack
- Lovable + Supabase + Stripe + OpenAI Agents
Demo AI SaaS presents well and the core happy path works, but three launch-blocking defects expose customer data and revenue to real risk. Two involve authorization boundaries that are enforced only in the UI, and one allows duplicate charges under payment retries. We recommend fixing all critical findings, then a targeted retest of auth, payment, and data-boundary flows before launch.
Critical findings
Launch-blocking. Must be fixed and retested.
Authorization bypass on shared workspace
Workspace membership is validated in the frontend route guard but not enforced by the API or RLS. A user who is not a member of a workspace can read and modify its projects by calling the API with a swapped workspace ID.
Any customer can access another customer's workspace data. This is a data breach on day one and a likely deal-breaker for any B2B buyer or security review.
- 1.Create accounts A and B. Account A creates workspace W1 with a project.
- 2.As account B (no membership in W1), capture a normal project request.
- 3.Replay the request substituting W1's workspace ID and project ID.
API rejects the request with 403 because B is not a member of W1.
API returns W1's project data and accepts mutations.
Enforce workspace membership at the data layer via RLS (membership join) or server middleware. Add a two-account regression test covering read and write.
Prompt injection exposed an internal admin action
The assistant that answers user questions shares a tool registry with privileged admin tools. Adversarial instructions embedded in an uploaded document caused the agent to invoke an internal tool that is meant for staff only.
A malicious document can trigger privileged actions on behalf of any user, escalating a content field into an admin capability.
- 1.Upload a document containing an instruction block addressed to the assistant.
- 2.Ask the assistant to summarize the document.
- 3.Observe the assistant call the internal admin tool named in the injected text.
Retrieved content is treated as untrusted data; privileged tools are unreachable from the user agent.
The agent followed the injected instruction and invoked the admin tool.
Separate privileged tools into a distinct agent with an allow-listed input surface. Treat all retrieved/user content as untrusted and never expose staff tools to the user-facing agent.
Stripe retry flow can create a duplicate charge
Checkout creates a charge without an idempotency key, and the webhook handler performs fulfillment side effects on every delivery. Under a network timeout the customer can be charged twice and receive duplicate fulfillment.
Customers are double-charged during exactly the moments (flaky networks) when trust matters most, driving chargebacks and refunds.
- 1.Begin checkout and interrupt the network as the charge is created.
- 2.Retry the checkout.
- 3.In the Stripe dashboard, replay the webhook delivery for the event.
One charge and one fulfillment regardless of retries.
Two PaymentIntents are created and fulfillment runs twice.
Send an idempotency key on charge creation and record processed webhook event IDs before any side effect.
High-priority findings
Serious risks to fix before or immediately after launch.
Recommended fix order
Sequenced by launch-blocking risk.
- 1VQX-001 — Enforce workspace authorization at the data layer
- 2VQX-002 — Isolate privileged agent tools from user input
- 3VQX-003 — Add payment idempotency + webhook event ledger
- 4VQX-006 — Centralize tenant filtering across all routes
- 5VQX-004 — Fix Safari session persistence
Retest plan
What we re-verify before signing off a launch decision.
- Re-run the two-account authorization matrix (read + write) across all workspace routes.
- Replay payment and webhook events to confirm single-charge, single-fulfillment behavior.
- Repeat the prompt-injection corpus against the user-facing agent.
- Confirm Safari (desktop + iOS) session survives refresh and backgrounding.
Do not launch until VQX-001, VQX-002, and VQX-003 are fixed and retested. Once the critical authorization, prompt-security, and payment defects pass retest, Demo AI SaaS is expected to reach a launch-ready readiness score.
Run this check on your productIllustrative sample · Not a real customer engagement