VIBEQX-SAMPLE-2026-001v1.0

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
Readiness score
62/100
Do Not Launch Yet
3
Critical
5
High
17
Medium
24
Low

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.

VQX-001criticalauthretest required

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.

Business impact

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.

Steps to reproduce
  1. 1.Create accounts A and B. Account A creates workspace W1 with a project.
  2. 2.As account B (no membership in W1), capture a normal project request.
  3. 3.Replay the request substituting W1's workspace ID and project ID.
Expected result

API rejects the request with 403 because B is not a member of W1.

Actual result

API returns W1's project data and accepts mutations.

Recommended fix

Enforce workspace membership at the data layer via RLS (membership join) or server middleware. Add a two-account regression test covering read and write.

VQX-002criticalprompt securityretest required

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.

Business impact

A malicious document can trigger privileged actions on behalf of any user, escalating a content field into an admin capability.

Steps to reproduce
  1. 1.Upload a document containing an instruction block addressed to the assistant.
  2. 2.Ask the assistant to summarize the document.
  3. 3.Observe the assistant call the internal admin tool named in the injected text.
Expected result

Retrieved content is treated as untrusted data; privileged tools are unreachable from the user agent.

Actual result

The agent followed the injected instruction and invoked the admin tool.

Recommended fix

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.

VQX-003criticalpaymentretest required

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.

Business impact

Customers are double-charged during exactly the moments (flaky networks) when trust matters most, driving chargebacks and refunds.

Steps to reproduce
  1. 1.Begin checkout and interrupt the network as the charge is created.
  2. 2.Retry the checkout.
  3. 3.In the Stripe dashboard, replay the webhook delivery for the event.
Expected result

One charge and one fulfillment regardless of retries.

Actual result

Two PaymentIntents are created and fulfillment runs twice.

Recommended fix

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.

VQX-004highbrowser
Safari login session fails after refresh
iOS/Safari users are logged out on refresh, breaking the primary mobile audience.
VQX-005highai agent
AI agent enters an infinite tool-call loop
Specific inputs cause runaway token spend and a hung session.
VQX-006highdata privacy
Customer data appears across accounts on an export route
A rarely used export path bypasses tenant filtering.
VQX-007highintegration
Webhook retries a destructive action without idempotency
Provider retries repeat emails and credit grants.
VQX-008highmobile
Mobile checkout button hidden below the viewport
The pay button sits under the keyboard on small phones, silently killing conversion.

Recommended fix order

Sequenced by launch-blocking risk.

  1. 1VQX-001Enforce workspace authorization at the data layer
  2. 2VQX-002Isolate privileged agent tools from user input
  3. 3VQX-003Add payment idempotency + webhook event ledger
  4. 4VQX-006Centralize tenant filtering across all routes
  5. 5VQX-004Fix 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.
Final launch decision

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 product

Illustrative sample · Not a real customer engagement