AI Evaluation · Quality Engineering

A passing test
suite is a claim,
not a fact

Lana Rafaella — AI Evaluation Engineer / Senior QA Engineer

I build the evaluation harnesses, golden baselines and release gates that decide whether an AI system actually works. Most of my time goes to the systems that report green while being wrong. Eight years of quality engineering, nearly all of it on products where a wrong answer costs somebody money.

Sunnyvale, CA On-site · hybrid · remote U.S. Citizen EN / RU

01 — Six systems that reported green

Every one of these passed
Every one of them was wrong

Real findings from my own work, not hypotheticals. Regressions announce themselves. Silent errors do not — they arrive dressed as a green build. Open a card to see what was actually true.

02 — Selected work

What I built, and what each one had to prove

Weights Registry W‑1.0 & golden drift suite

TypeScript · Playwright · governance protocol

A live matching algorithm had no oracle. Every constant — axis weights, specificity multipliers, boosts, gates, surfacing thresholds — had been chosen by human judgment, and the system was already in front of users. There was no correct score to assert against, which makes the obvious test not merely unavailable but unfalsifiable.

Every number in the matching formula is a versioned hypothesis, not a truth.

So I registered each constant with its value, the rationale it was chosen on, and the observable evidence that would falsify it — including five named falsification criteria, written before any data existed so they could not be tuned afterwards to flatter the result. The golden suite pins exact scores for fixture pairs, each pair isolating one slice of the configuration. Changing a value means a new version row with its evidence basis and a re-pinned golden test in the same commit; an unannounced change goes back to the dev team before anything is re-pinned. Never re-pin silently.

The registry also states in writing that these weights are an expert prior — not statistically optimal, not proven, not validated — and must not be described that way to investors, partners or users until the evidence exists. That sentence was the hardest part to write and is the part I would defend first.

AI Content Engine — specs, agents, and the tests that judge them

TypeScript · Node.js · Vitest · Promptfoo · ONNX MiniLM

A content platform I built by directing AI coding agents against written specifications, and the verification layer that decides whether they complied. Nothing is implemented until there is a design spec; nothing is built until that spec has an implementation plan. Only then do the agents touch the repository. The test suite is not there to prove the code runs — it is there to prove the agent built the thing the spec asked for.

896tests, all passing 76suites 236commits, all mine 224TypeScript files 10/9specs / plans

Its evaluation harness grades generated content against recorded human accept and reject verdicts using embedding similarity plus deterministic checks. I deliberately did not use LLM-as-judge for subjective quality, and wrote down why rather than burying the decision in configuration. The standing rule here: an agent never writes the acceptance test for its own work, because the code and the test come out of the same misunderstanding and you get a green suite that proves nothing.

Adversarial LLM evaluation & grader calibration

Promptfoo · YAML · llm-rubric graders · red-teaming

Red-team and benign control suites against LLM assistants, built on one principle: the attack has to defeat the grading mechanism, not only the model. Pattern bypass where checks are regex; intent-based attacks where grading is rubric-only. Three of the six silent errors above came out of this work — the under-detecting regex, the meaningless carried-over threshold, and the default grader nobody selected.

The output is not a score. It is a suite whose failures are legible: what was attempted, which mechanism let it through, and what the threshold is now calibrated against.

Release gate for a pre-launch consumer platform

Playwright · TypeScript · Page Object Model · CI

Sole quality owner through pre-launch, building the entire automation framework against an application written by other engineers, and authoring the conventions it is maintained by: locators by role, label and stable test ID with CSS and XPath banned; no fixed waits, only auto-retrying assertions; a single source of environment configuration; and a deployed-versus-local split so authenticated and captcha-dependent suites run where they can actually pass.

128UI & API tests 19modules 8CI-sliced suites 35defects to closure

The eight suites slice the gate by risk: API, guest UI, authenticated UI, scoring engine, accessibility, asset-weight budgets, published legal documents, and a mobile device profile. Under it runs a known-defect protocol I designed — every open defect carries a test asserting the correct behaviour, flagged so the gate stays green until the fix lands and the test reports an unexpected pass. That is how a suite tracks 35 open defects without going red, and how a red build keeps meaning something.

Money integrity on a live marketplace

Playwright · Stripe · SQL · exploratory testing

Sole QA for a platform handling real money. I wrote the test strategy across 16 priority areas — browse, cart, Stripe checkout and refunds, booking workflows, authorization, commission accounting — built the automation for it, and did the exploratory work that automation cannot do.

148automated tests 29modules 16priority areas 1Critical bypass

Reconciliation was owned at the data layer, not the interface: every completed sale had to split into seller net plus platform commission at the documented rate, driven through a live payment end to end. Two further payment-integrity concerns went to code review rather than the defect tracker — a client-supplied amount not cross-checked against the order, and lenient handling of a bogus payment intent. Not everything worth raising is a bug report.

03 — Experience

Eight years, mostly where being wrong is expensive

Jun 2026 – Sep 2026Remote

QA Engineer · HOnly

Sole quality owner for a consumer matching platform through pre-launch. Built the Playwright framework and the eight-suite release gate, the weights registry and golden drift suite over the matching engine, automated WCAG 2.1 A/AA scanning with mobile touch-target checks, and authored the product's privacy, terms, community, cookie, age-safety and grievance documents from actual product behaviour — named in them as the grievance contact.

Jan 2026 – Jun 2026CA, remote

QA Engineer · Spiritual California

Sole QA for a marketplace handling live money. Test strategy across 16 priority areas, 148 automated tests on a Page Object Model, transaction reconciliation at the data layer, and the exploratory work that surfaced a Critical authenticated payment bypass and a High-severity access-control gap. Also tested the platform's AI chatbot alongside the deterministic product.

May 2025 – Dec 2025Fremont, CA

QA Data Analyst · Apni Mandi

Tested an AI-driven pricing system across a catalogue of 100K+ SKUs — Python validation scripts and SQL comparing system-generated prices against documented business rules at scale. Built PostgreSQL and Power Query pipelines to reconcile the data behind the interface, and reported quality and discrepancy trends in Tableau for non-technical stakeholders.

Aug 2022 – Feb 2025Menlo Park, CA

Senior Software QA Engineer · Meta (via HCLTech)

QA lead for B2B Billing and the Payments Platform across Instagram, Facebook and Meta Business Suite. Two and a half years owning advertiser billing, ad-account payment methods and transaction processing at platform scale. Drove quality strategy for a large payment-engine migration, including live credit-card refunds across multiple processors, and validated billing data with SQL and Python rather than trusting the interface.

Jan 2022 – Aug 2022San Luis Obispo, CA

Senior Software QA Engineer · Hathaway

Ran UAT directly with customer stakeholders and drove their findings to resolution ahead of production cutovers. Testing across web, native mobile and Android TV; Charles Proxy for API traffic, mParticle and Google Analytics for event data, TestFlight for build distribution, Grafana for service health during release windows.

Jun 2021 – Jan 2022CA

Senior Software QA Engineer · BeachBody

Automated API tests in Postman for the In-App Purchase feature — authorization, purchase and refund flows. Tested serverless, event-driven AWS architecture: Lambda behaviour, API Gateway endpoints and DynamoDB data, diagnosing failures from Lambda error output. Release deployments through Jenkins.

Jun 2019 – Jun 2021San Bruno, CA

Senior Software QA Engineer · Google (via Virtusa)

Single point of contact for the iOS platform of the YouTube Main App team for two years. Authored manual test plans from requirements and executed them every release cycle across a large physical device and OS-version matrix, covering accessibility with VoiceOver, internationalization, long-run stability, and GDPR compliance behaviour on child-directed "made for kids" content.

2017 – 2019CA

Software QA Engineer · FnB Tech (now Craftable)

Back-office financial operations software for restaurants — invoicing, inventory, costing — and its Revel point-of-sale integration. Identified repetitive manual regression as the release bottleneck and built the team's first automated UI regression framework in Selenium WebDriver and Python to replace it, then maintained it as the application changed.

04 — Stack

What I actually use

AI & LLM evaluation

Promptfoo — llm-rubric graders, embedding cosine-similarity scoring, deterministic assertions, weighted thresholds and threshold calibration. Adversarial and red-team suite design. Hallucination and factual-grounding checks, response consistency across paraphrased prompts, refusal and over-refusal behaviour, guardrail enforcement. Golden baselines and versioned registries for detecting unannounced scoring changes.

Automation frameworks, code-first

Playwright in TypeScript, Selenium WebDriver in Python, pytest, Vitest, Postman and Newman, Appium. Page Object Model, extended fixtures, API request contexts, auth-state reuse, parameterized test data, tag-based suite slicing, environment-split configuration, device-profile projects, auto-retrying assertions, flake control, trace artifacts.

Languages & data

Python (primary), SQL, TypeScript, JavaScript, Node.js, YAML. PostgreSQL, MySQL, Oracle — joins across related tables, aggregation and reconciliation queries, tracing a transaction through its records. Python validation scripts, Power Query pipelines, Tableau reporting for non-technical stakeholders.

Delivery & process

Git and GitHub pull-request workflows, CI/CD in GitHub Actions and Jenkins as blocking release gates. AWS Lambda, API Gateway and DynamoDB. Jira, Confluence, Zephyr, TestRail, SharePoint. Defect severity and priority definitions, traceability conventions, test plans, runbooks, and the known-defect protocol that keeps a gate honest.

Accessibility

Automated axe-core scanning against WCAG 2.1 A/AA with mobile touch-target checks on current work, structured so known violations are asserted individually and the sweep stays a regression detector. Manual WCAG walkthroughs with axe DevTools and Lighthouse, and VoiceOver review, across earlier roles.

Payments & transaction integrity

Authorization and capture, checkout, order and transaction state transitions, refunds and reversals across multiple processors, subscription and in-app purchase billing, commission splits, ledger and earnings records, payout eligibility, and end-to-end reconciliation against a documented money model. Point-of-sale transaction integration.

05 — How I work

Four rules I will argue about

RULE 01 The team shipping a thing does not set its own pass bar

The fastest way to make a drift suite useless is to let whoever changed the constant also update the baseline. An unannounced change means the system moved without anyone saying so — that goes back to the team before anything is re-pinned.

RULE 02 An agent never writes the acceptance test for its own work

It will write a test that passes. The code and the test come out of the same misunderstanding, and you get a green suite that proves nothing. The check comes from the spec, before the code, never from the diff.

RULE 03 Claim the artifact, not the year count

A lot of what I ship is AI-assisted, and I say which parts. What is mine is the specification, the test design, the conventions, and every review that rejected a plausible-looking diff. I would rather look smaller on paper and be exactly right.

RULE 04 A result nobody can read is not a result

Eval output has to be legible to engineers, product and customers — what was attempted, what let it through, what the threshold is calibrated against. Most of the job is the part after the number, and it is the part people underrate.

06 — Contact

Open to AI evaluation and senior QE roles

Bay Area — on-site, hybrid or fully remote. If you want to check anything on this page, ask. Every number here comes from a repository I can open with you.

U.S. Citizen EN / RU Sunnyvale, CA
B.Econ, Tomsk Polytechnic University · Selenium Python Automation Bootcamp, DataCamp · AI-Powered Data Analyst Program, CICD · Data Science, FUHSD Repository figures measured 28 Aug 2026.