Security

Real offensive depth

Testing and defence led by a published security researcher with six CVEs, including a CVSS 9.1 Mirai botnet kill-switch.

All security →
Compliance

Audit-ready, fixed scope

SOC 2, ISO, CPCSC, and the Canadian privacy stack, run end to end with an independent auditor.

All frameworks →
Resources

Learn the space

Original research, free tools, and plain-language guides on security and compliance, from a published security researcher.

Read the blog →
Security

How to Run a Vibe-Coding QA Engagement

A vibe-coding QA engagement is a structured review of AI-generated code that combines automated fuzzing, static analysis, and manual penetration testing to catch the logic gaps and security flaws that ship when code is written faster than it's understood. Most engagements run two to four weeks depending on codebase size and how much of the app was built with AI assistance.

Teams across Toronto, Waterloo, and Vancouver are shipping product faster than ever because tools like Cursor, Copilot, and Claude Code can generate a working feature in an afternoon. The problem isn't speed, it's that "working" and "safe" are different bars. AI models write code that compiles and passes the happy path, but they routinely miss authorization checks, mishandle edge cases in input validation, and copy insecure patterns from training data without knowing they're insecure. If your engineering team can't explain why a piece of generated code is correct, you have a QA gap, not just a code review gap. Here's how to run the engagement properly.

Step 1: Intake and Repo Triage (Days 1-2)

Every engagement starts with mapping the terrain, not testing it. This means:

  • Pulling a full inventory of which parts of the codebase were AI-generated versus human-written, since AI-heavy modules get priority
  • Identifying the trust boundaries: where does user input enter, where does data cross into payment, auth, or PII handling
  • Reviewing the tool stack (which coding assistants, which models, which prompts or agent frameworks were used) because different tools have different failure signatures
  • Confirming compliance scope, since a Canadian SaaS company handling customer data under PIPEDA, or a Quebec-based business under Law 25, needs the QA review to feed directly into its audit evidence trail

This step is short but it determines everything downstream. Skipping triage and jumping straight to a scanner is how engagements waste a week testing low-risk code while a broken authorization check sits untested.

Step 2: Automated Fuzzing and Static Analysis (Days 2-6)

With scope defined, automated tooling runs first because it's cheap and it surfaces the obvious problems fast. This layer includes static application security testing (SAST) against the full repo, dependency scanning for known-vulnerable packages (AI assistants frequently suggest outdated or abandoned libraries), and targeted fuzzing against any API endpoints, parsers, or file upload handlers the AI code touches. Fuzzing matters more here than in traditionally written code. AI-generated input validation often looks complete on inspection, correct types, correct null checks, but breaks under malformed or adversarial input the model never considered because it wasn't trained on your specific threat model. Automated fuzzing catches these fast without burning senior tester hours.

Step 3: Manual Penetration Testing of AI-Generated Logic (Week 2)

This is where the engagement earns its cost. Automated tools find pattern-matched vulnerabilities; they don't find broken business logic. A human tester needs to manually work through:

  • Authorization and access control logic, since AI models are notorious for generating code that checks whether a user is authenticated but not whether they're authorized for that specific resource
  • Session and token handling, especially in AI-scaffolded auth flows built quickly from a prompt like "add login"
  • Any AI-written code that handles money, PII, or health data, tested against real attack chains rather than isolated unit tests
  • Prompt-adjacent risk if the product itself embeds an LLM (injection into system prompts, data leakage between tenants, unsafe tool-calling permissions)

Our full breakdown of what this testing layer covers is on the vibe-coding QA and security review page, including how we scope fuzzing and pentest work specifically for AI-assisted codebases rather than applying a generic pentest checklist that misses AI-specific failure modes.

Step 4: Findings Triage and Remediation Sprint (Week 2-3)

Findings get ranked by exploitability and business impact, not by how they look on a scanner report. A cross-site scripting bug in an internal admin tool used by three people is not the same priority as a broken tenant isolation check in a multi-tenant SaaS product. Each finding should come with a clear reproduction path and a suggested fix, because the point of this stage isn't to hand the engineering team a PDF, it's to get fixes shipped. This is also the stage where founders and CTOs in Ottawa and Calgary tend to ask the same question: should we just have the AI fix the AI's own bug? Sometimes yes, for small, well-scoped fixes. For anything touching auth, data access, or payment logic, a human engineer should review the fix the same way the original code should have been reviewed. Letting the same unsupervised process fix its own security bug is how the same class of bug reappears three sprints later.

Step 5: Retest and Sign-Off (Week 3-4)

Once fixes are deployed, every finding gets retested, not just spot-checked. This closes the loop and produces the evidence artifact your team actually needs: a document showing what was found, what was fixed, and what was verified. For companies pursuing SOC 2 or building toward a broader compliance posture, this retest report becomes part of the audit trail rather than a one-off exercise that gets filed and forgotten.

Realistic Timelines for Canadian Teams

Timelines depend heavily on how much of the codebase is AI-generated and how critical the affected systems are:

  • Small feature or MVP (under 20,000 lines, mostly AI-generated): two weeks, intake through retest
  • Mid-size product with mixed AI and human-written code: three to four weeks
  • Full application handling regulated data (fintech, health tech, or anything under Quebec's Law 25): four to six weeks, with a heavier manual pentest phase

Teams that try to compress this timeline by skipping manual testing usually end up back at square one after a customer's security questionnaire or a vendor risk assessment flags something the scanner missed.

Where a Partner Fits In

Founders and engineering leads don't need to run this alone, and most shouldn't. The value a partner brings isn't just extra hands, it's pattern recognition across dozens of AI-generated codebases: knowing which frameworks' AI output tends to mishandle auth, which prompt-based scaffolding tools skip input sanitization by default, and which fixes hold up under a real pentest versus a fixes that just satisfy the linter. A boutique Canadian firm also understands the compliance context that a generic offshore pentest shop won't: how a QA finding maps to CPCSC requirements, why a Quebec-based client needs the review documented differently under Law 25, and how this work feeds into a broader SOC 2 or ISO 42001 program rather than sitting as a standalone report. If you're building toward AI governance requirements on top of the QA work, see how this connects to our broader engagement pricing structure so the security review and any compliance work that follows aren't quoted and delivered as disconnected projects.

Choosing a QA Partner for AI-Built Code

Not every security firm has adapted its methodology for AI-generated code. Ask a prospective partner how they scope fuzzing differently for AI-written input handlers, whether their testers have reviewed prompt-injection risk in products that embed LLMs, and whether their final report ties findings to your actual compliance obligations rather than a generic OWASP checklist. A firm that treats a vibe-coded app exactly like a hand-written one will miss the failure modes that are unique to AI-assisted development. traztech works with engineering teams in Toronto, Waterloo, Ottawa, Vancouver, Calgary, and Montreal to run these engagements end to end, from intake through retest and sign-off. If your team has shipped AI-generated code that hasn't had a real security review, get in touch and we'll scope a timeline based on your actual codebase, not a generic template.

Not ready for a call? Same.

Get the playbook, not a sales pitch

If this was useful, Jacob sends a few short, practical notes on locking down your startup without a big security team. No fluff, unsubscribe in one click. Just reply if you want to talk; it reaches him directly.

From Jacob Masse, founder of traztech. No spam, unsubscribe in one click.

Need help with any of this?

We help startups build secure, scalable infrastructure. Book a free strategy call and let's talk about your stack.

Book a free consultation