Open to senior QE and AI quality roles

I build tests that can actually fail.

Ten years hardening UI, API, and data pipelines for federal programs. Now doing the same for production AI systems.

Portrait of Ferkat Jawdat
30% to 97%
Regression pass rate on a federal suite
5 days to 1
ETL validation cycle for publication data
200+
Test cases migrated from Selenium to Playwright
10 years
Federal and enterprise quality engineering

Most automated suites pass without proving anything.

The failure nobody reports is the test that goes green without checking anything. An assertion that cannot fail is not a test, it is a receipt. On a recent enterprise Salesforce suite I audited every assertion for falsifiability, deleted the ones that could not go red, and replaced them with DOM-grounded checks. Defect detection went up. The pass rate went down first, which is the correct direction.

Generated tests make this worse, not better. A model writes an assertion that reads plausibly and compiles cleanly, and nobody checks whether it can ever fail. I use AI heavily for authoring, migration, and triage. I do not let it decide what counts as verified. That line is where a lot of teams are about to get hurt, and it is the reason I spend as much time deleting tests as writing them.

AI systems quality

Validating production chatbots across five risk axes

A federal agency is putting assistants in front of the public. Each axis fails differently, so each one needs its own tool. Knowing which tool catches what is most of the job.

Accuracy and fabrication

Does the answer survive a check against its own source?

Faithfulness and hallucination scoring against the retrieved context, answer relevancy, and custom judge criteria for domain correctness the generic metrics miss. Graded per response, tracked per release, gated in CI.

DeepEval faithfulness, hallucination, answer relevancy, G-Eval
MLflow 3 LLM judges
Bias

Who does the answer serve worse?

Bias and toxicity scoring across demographic and topical prompt sets, run as a release gate rather than a one-time audit.

DeepEval bias, toxicity
Security

Can it be talked out of its instructions?

Prompt injection, jailbreak and DAN patterns, encoding attacks, and training-data leakage probes fired at the deployed endpoint.

garak (NVIDIA) vulnerability scanning
Safety

What happens under sustained attack?

Multi-turn adversarial campaigns with converters and scorers, pushing past single-shot probes into real red-team pressure.

PyRIT (Microsoft) automated red teaming
Regression

Did this week's prompt change break last week's answers?

Tracing over prompts, retrievals, and tool calls with versioned evaluation runs, so quality is a trend line instead of an anecdote.

MLflow 3 tracing, prompt registry, scorers

AI in the test framework

Built a validation framework an agent can operate — and drew the line it cannot cross

Testing AI systems is one half. The other is letting AI drive the test framework without letting it decide what counts as verified. A 4,000-line validation package covering 235+ table contracts on a federal medallion platform, reshaped so an agent can run it, triage it, and author against it.

Authoring and migration

What is AI actually good at here?

Translation and volume. Five Lightning automation frameworks in fourteen months, Gherkin and Cypress migrated to Playwright TypeScript, 200+ cases moved off Selenium — coverage up 50% and a 97% pass rate held through cutover. The model drafts; every generated assertion still gets audited for whether it can go red. A test that cannot fail is a receipt, and a model writes those fluently.

Playwright TS migration · Cucumber BDD · AI-augmented authoring with a falsifiability review gate
Portability

Can a check run outside the notebook?

Every check was a Spark DataFrame function, so nothing ran without a live cluster. Compiling each one to parameterised SQL means the same library runs from a laptop, from CI, or from an agent — and the emitted SQL is inspectable, which is what makes a dry run possible and a failure explicable to something that has to reason about it.

SQL-first compiler · Spark, Databricks SQL, and DuckDB backends
Tool surface

What should an agent be allowed to call?

Ten verbs, not a SQL console: lint a contract, compile it, run it, fetch failures, compare two runs, trend a table's health. Read-only by default — writes need server configuration, not a tool argument. Small surfaces get chosen correctly, and every tool description is prompt tokens on every single request.

MCP stateless, stdio and Streamable HTTP · run id as the cross-call handle
The boundary

What must never become a tool?

Whether a warning is acceptable this quarter. Whether three orphaned reference codes are a source-data problem or a transformation bug. Signing off a promotion gate. That reasoning lives in runbooks built from real root-cause write-ups, where it can be read and argued with — not compiled into a tool that returns a verdict with nothing behind it.

Skills and prompts for triage, contract authoring, and promotion review
Governance

Whose text ends up in the model's context?

Failed checks capture real values, and PII is in scope on this pipeline — so sampling is per-column, default deny, with a hash and a count where a value is not allowed out. Those values also originate in ingested source files, which makes validation results an unusually direct carrier for indirect prompt injection. They come back in structured fields, never interpolated into prose, and the tool description says plainly that they are data, not instructions.

Per-column redaction policy · OAuth service principal over long-lived tokens

One data contract, asserted at three layers

UI, API, and data tests usually assert three different versions of the truth, then drift apart quietly. This chain gives all three the same source.

Data contract validation chain A test scenario drives a Databricks query. The result generates a YAML contract, which is asserted against both the service API response and the rendered UI state, and both feed a single Allure report. Test scenario pytest parametrize Databricks SQL over medallion contract.yaml generated, not hand written Service response API assertions Rendered UI playwright assertions Allure report field-level diff

Generated, not hand written

The scenario drives the Databricks query and the result becomes the contract. The expectation comes from the data, not from someone's memory of what the data should look like.

Asserted twice

The same contract validates the service response and the rendered screen. When the API and the UI disagree, the run tells you which one moved.

Readable when it breaks

Failures point at the contract field that broke rather than at a stack trace, so a business reviewer can read the result without opening the framework.

What I work in

Test automation

Playwright / Selenium / Cucumber BDD / Pytest / REST Assured / TestNG / Java / Python / TypeScript

Data and ETL validation

PySpark / Databricks / AWS EMR / S3 / Aurora PostgreSQL / advanced SQL / YAML data contracts / medallion architecture

AI systems quality

DeepEval / MLflow 3 / garak / PyRIT / LLM-as-judge design / red teaming / RAG evaluation

Delivery and gates

Jenkins / GitLab CI / GitHub Actions / Docker / Maven / Allure / Jira / TestRail / Section 508 and WCAG

Ten years, mostly on systems that cannot quietly break

Client names are withheld under engagement agreements. Metrics are real.

2025 to present

Lead Test Automation Engineer & Quality Architect

Federal enterprise programs, three concurrent contracts
  • Built AI validation program for public-facing assistants, covering accuracy, hallucination, safety, security, and bias with DeepEval, MLflow 3, garak, and PyRIT.
  • Architected YAML data contract framework: Databricks source-of-truth auto-propagates across service APIs and UI tests with single Allure report.
  • Built medallion validation framework from zero requirements: 235+ tables across Bronze/Silver/Gold layers, 40+ validation types per table, all YAML-driven. Gating CI/CD for 90%+ coverage.
  • Delivered 5 Lightning automation frameworks in 14 months with AI-augmented test migration (Gherkin/Cypress → Playwright TS). Grew coverage 50% (70→100 cases), maintained 97% pass rate through cutover, trained 3 teams who still expand independently.
  • Modernized legacy Selenium + TestNG to Playwright with Cucumber BDD in Java 17: 23 feature files, 54 scenarios, 354 step definitions across 10 applications.
  • Cut ETL validation cycle from 5 days to 6 hours by automating 90%+ of scenarios on PySpark + EMR, 16M+ rows validated daily.
2024 to 2025

Senior SDET

Federal government, enterprise program
  • Rebuilt Selenium and Cucumber framework, taking pass rate from 30% to 97% and cutting runtime by over 80%.
  • Expanded automated coverage by 125% while building GitLab CI pipelines with Docker and Allure reporting.
  • Led JMeter performance testing, resolving critical API latency and timeout failures.
  • Ran Section 508 accessibility testing and remediation support.
2016 to 2024

QA Manager, Automation Lead, Senior Automation Engineer

Federal government, enterprise programs
  • Designed full-stack automation for UI, API, and database validation across regulatory workflows, mentored engineering teams.
  • Served as performance architect during surge periods, modeling load and stress for traffic spikes above 250%.
  • Led independent verification and validation for reporting systems on Jenkins pipelines.
  • Built ETL validation with FitNesse, DbFit, and PostgreSQL.
2016

Senior Test Automation Engineer

Enterprise systems integrator
  • Built a hybrid Selenium framework for cross-browser and cross-platform execution with FitNesse and Xebium on Jenkins, plus TestNG, Maven, and JMeter folded into regression.

Built outside work

Platform, in progress

ForgeQA

Full-stack AI-native test automation platform: React dashboard with role-based views (viewer, qa-engineer, a11y-tester, admin), framework migration wizard (Gherkin/Cypress/Playwright TS), AI debug agent, Playwright MCP for interactive debugging, Salesforce Lightning helpers (SmartLocator, SfPage), typed test data factories, Allure reporting, Jenkins integration, encrypted token management. Built for federal compliance (Section 508, WCAG 2.1 AA, PII-safe).

TypeScript / Playwright / React 18 / Express / Allure / MCP · Framework Reference
Consultancy

Vision Vault Systems

Case studies covering federal QA automation, Databricks medallion validation, AI-augmented Salesforce migration, and big data ETL validation. Six deployments with real metrics and anonymized clients. The site's QA maturity assessment is a production Claude agent I built end to end: an adaptive five-phase interview that scores a team and returns a costed report — grounded in one versioned knowledge file so it cannot invent capabilities, a strict JSON output contract, a hard turn cap, and a scripted fallback so the page still completes with the model switched off.

Claude / Netlify Functions / grounded knowledge base · case studies · try the assessment
In production

Prime Custom OS

Designed and built the whole product — a build, not a testing project. The business operating system a Northern Virginia remodeling company runs on daily: leads, CRM, projects, estimates and change orders, scheduling, invoicing, customer portal, analytics. 315 API endpoints over 19k lines of Python, a 22k-line React front end, 108 database migrations, nine CI workflows for staged deploys, backups, and uptime. Solo, from schema to deploy, in production with a team using it every day.

FastAPI / PostgreSQL / React / JWT / QuickBooks API / GitHub Actions · board.primecustom.com
Shipped product

EnChaptered

An AI storybook generator for children aged two to eight. Built and shipped solo, from design through API to deploy.

Next.js / Gemini API / Resend / Vercel

Need someone to own quality on a data or AI platform?

Based in Chantilly, Virginia. Open to senior SDET, quality architect, and AI quality roles, remote or hybrid.