Software Engineer

Ryan Khan

I'm a software engineer. I've built backend services, APIs, and frontend features in production, and recently I've been focused on applying AI to developer tooling and workflow automation.

About

Software engineer.

I've built and shipped backend services, APIs, and frontend features across production environments.

More recently, I've been focused on using AI to improve developer workflows and automate parts of the development process.

I'm interested in building tools that make complex or messy behavior easier to understand and work with.

Experience

Where I've worked

Software Developer

Fusion92

Sep 2025 – Present
  • Built an AI-powered E2E test failure analyzer for a 140+ test Playwright suite — combining GPT-4o vision for screenshot analysis with a LangChain tool-calling agent to automate root cause investigation.
  • Reduced manual debugging time from ~2 hours to under 5 minutes per run via structured, categorized failure attribution reports (test vs. application fault).
  • Shipped a multi-tenant Chatbase AI chatbot integration within CoreCMS with tenant-safe isolation, secure secret storage, and HMAC-based session validation.
  • Implemented an admin provisioning utility and agent-guided onboarding tour (Shepherd.js) with CMS-managed tooltips and restart/skip controls.

Full Stack Developer Intern

Fusion92

Jun 2025 – Sep 2025
  • Led redesign of the Platform Management page in CoreCMS using Vue 3 components, improving usability and UI structure.
  • Collaborated cross-functionally with product and client teams in an Agile/Jira environment to scope and ship features.
  • Validated APIs via Swagger and supported QA and release processes through Azure DevOps pipelines.

Recent Project

FailChain

End-to-end test failure analysis tool. Parses a test run, groups failures by error signature, and generates a structured report with root cause, fault classification, and recommendations.

Playwright E2E run, test failure with no root cause context

Before

Playwright E2E run, test failure with no root cause context

1 / 5
ManualAutomated

Failure attribution

Ad-hocStructured

Debug output

Black boxTraceable

Agent reasoning

CumulativePer-run

Flaky test detection

Architecture

01
Parse & Discover
Extract failures from test report, locate screenshots per failure
02
Group & Analyse
Cluster by error signature, run vision model analysis per group
03
Static Pre-Analysis
Deterministic checks — bad selectors, missing classes, tight timeouts
04
Agent Analysis
LLM reasoning with tool access — reads files, searches source, optionally reruns tests
05
Structured Report
Root cause · fault category · recommendations — Markdown + JSON output

Key details

  • Framework-agnostic — designed to work across E2E testing frameworks without coupling to any one tool
  • Vision model analysis per failure group + LangChain tool-calling agent for root cause investigation
  • Static pre-analysis pass runs before the LLM — catches obvious issues deterministically and cheaply
  • Classifies failures as test fault, application regression, or flaky — per run
  • Failure history tracked across runs to surface recurring flakiness patterns
  • Full step-by-step audit log for every reasoning chain

Stack

PythonLangChainVision AIE2E TestingAutomationCLI
View on GitHub ↗

Skills

Technical foundation

Languages

PythonTypeScriptJavaScriptC#SQLBash

Frameworks

Next.jsReactVueNuxtFastAPI.NETNode.jsExpress

AI / Systems

LangChainLangGraphOpenAI APIAnthropic APIRAG

Infrastructure

DockerPostgreSQLMySQLRedisGitHub ActionsVercelREST APIs

A bit about me

Outside the code

Outside of work I'm usually hooping, out on a trail, or deep in a game. Always building something on the side too.