Senior Integration & QA Automation Engineer
|
I design and test integrations where reliability is non-negotiable—powering critical systems across APIs, platforms, and large-scale environments.
Integrations fail silently and at the worst times. I build the validation infrastructure that catches failures before production — and the automation that keeps them from coming back.
Architecting scalable integration schemas that translate partner requirements into production-grade APIs.
Load & stress testing at scale — millions of requests/hour, realistic traffic patterns, full observability.
Built AI-powered OCR and documentation tools that cut manual integration onboarding effort significantly.
From test strategy to production sign-off — establishing QA from zero at startups and enterprises.
Production systems. Real constraints. Business impact.
Shory needed to bring Motor, Health, and Travel insurance online across two markets fast — but each insurer used a completely different API structure: different authentication (API keys, OAuth, mutual TLS), inconsistent field naming, and error codes with no standard. Government integrations in UAE and KSA added regulatory schema requirements on top. Manual onboarding took weeks per partner, was error-prone, and had no repeatable validation process to catch failures before they reached production users.
Built a structured integration pipeline: translated raw partner specs (REST, SOAP, PDF) into normalised internal schemas, then ran every integration through a validation suite covering auth, payload structure, edge cases, and error handling before any partner went live. No integration reached production without passing the full validation suite.
{ "request_id": "req_xK9mP2qL7nR", "insurer_code": "INS_[REDACTED]", "product": "MOTOR_COMPREHENSIVE", "applicant": { "id_type": "EMIRATES_ID", "dob": "1990-01-01", "nationality": "AE" }, "vehicle": { "make": "Toyota", "model": "Camry", "year": 2021, "chassis_no": "[REDACTED]" } } // Validated: auth header, required fields, date format, enum values // Expected: 200 OK with premium breakdown + quote_id
Every insurance application required verified identity and residency documents — Emirates IDs, labour contracts, visas, and residence permits. Reading these manually to extract fields like name, ID number, expiry date, and employer was a slow, error-prone process that created a bottleneck at every customer onboarding step. A misread field meant application delays or rejected submissions. I built a two-stage automated pipeline to eliminate this: first, an OCR layer to extract raw text from document scans regardless of layout; then a locally-hosted LLM (Ollama) to semantically understand the extracted text and return only the specific structured fields the backend needed — no hallucinations, no ambiguity, deterministic JSON output.
Built a two-stage pipeline in Python. Stage 1 used OCR to extract raw text from scanned documents regardless of layout — handling a variety of document formats, orientations, and print qualities across Emirates IDs, labour contracts, visas, and residence permits. Stage 2 passed that raw text to a locally-hosted LLM running via Ollama, prompted to identify and extract only the specific fields required by the backend (name, ID number, expiry, nationality, employer, etc.) and return them as a deterministic structured JSON object. No external API calls — the LLM ran locally, keeping all document data on-premise.
{ "document_type": "emirates_id", "full_name": "[REDACTED]", "id_number": "784-[REDACTED]", "nationality": "[REDACTED]", "date_of_birth": "[REDACTED]", "expiry_date": "[REDACTED]", "confidence": "high" } // LLM prompted with field schema — returns only required fields // Ollama running locally — zero external data exposure
Skyloov was shipping high-risk releases with no test coverage and no performance data, across a platform handling 120K+ property listings. Bugs were reaching production users regularly. There was no definition of what "good performance" looked like, and no way to catch regressions between releases. I was hired as the only QA engineer in a ~12-person engineering team to change this — from day one.
Built two parallel testing tracks that ran every release cycle. Functional track: Postman collections covering 500+ backend endpoints, executed automatically via Newman in Jenkins CI. Performance track: Gatling simulating 1,000 concurrent users across 200+ APIs with p95 latency, TPS, and error rate metrics exported to Grafana dashboards. For the first time, the team had a performance baseline they could compare against after every deployment.
The team anticipated high-traffic periods, but lacked confidence in how the system would perform under load. Existing performance testing was limited, with no clear targets or sufficient observability into system behavior under stress. Microservices were tightly coupled, increasing the risk of cascading failures. I was brought in to evolve and scale the performance testing program, strengthening coverage, defining benchmarks, and improving visibility ahead of peak periods.
Wrote Gatling scripts in Scala covering hundreds of endpoints across all microservices. Designed three scenario types: ramp-up (gradual user growth), sustained load (steady-state at target TPS), and spike (sudden 3,000 VU burst). Monitored CPU, memory, p95 latency, throughput, and error rates simultaneously using Grafana dashboards and New Relic APM traces. Automated test report generation and publishing to GitHub Pages — so the team had full results immediately after every run without any manual steps.
WeightWatchers ran analytics and reporting across a multi-cloud data stack — Snowflake, BigQuery, and Oracle — feeding business dashboards and user-facing reporting features. ETL pipelines moved data between these environments, but there were no automated checks to verify correctness after each run. Schema drift, duplicate records, and reconciliation mismatches were only discovered reactively — often after bad data had already surfaced in reports. The team was also mid-migration from DSS Reporting to Looker Studio, with no validation framework to confirm the migrated dashboards matched source truth. I was brought in to build the validation infrastructure from scratch.
Wrote Python-based ETL validation scripts that ran automated checks across Snowflake, BigQuery, and Oracle after every pipeline execution: schema drift detection, row count reconciliation between source and destination, duplicate record identification, and field-level data type checks. For the BI migration from DSS Reporting to Looker Studio, validated that every dashboard metric matched its source dataset — ensuring the migration produced no regressions in reported figures.
Designing, validating and automating API integrations at scale — REST, SOAP, and government systems.
Load, stress, and spike testing at scale — real traffic patterns, full observability, bottleneck identification.
Translating complex partner requirements into scalable API schemas, validation suites, and integration documentation.
University of Jordan
Feb 2018 — Jul 2022
Member — 3+ years across Amman, Dubai & Abu Dhabi
Awarded Best Prepared Speaker — 195th Club Session
Open to senior integration, QA automation, and API engineering roles across the UAE and beyond.
Reach out — I respond fast.