Skip to main content
AB

Aditya Batra | Senior Software Engineer

ADITYABATRA

I build AI systems

Leamington Spa, UK·
Scroll
/ About

Senior Software Engineer

I build AI systems that actually ship, not just impressive demos. Agentic workflows in LangGraph, multi-modal LLM pipelines, and the unglamorous cloud infrastructure that keeps it all running without paging me at 3am. 12 years in, and I'm still weirdly happy about a clean deploy. Based in Leamington Spa and very happy to pack up for London, currently obsessed with fintech and AI, and on the lookout for the next hard problem to level up on.

Skills

  • 01

    AI & agentic systems: LangGraph pipelines with confidence-based retry loops, plus the rulebook for how AI coding agents are allowed to behave in a production codebase

  • 02

    Cloud & infrastructure: AWS end to end (Lambda, ECS, CDK, SST), observability shipped as code, and load testing things until they stop flinching under traffic

  • 03

    Full-stack web: React and TypeScript on the front, Node.js and Hono behind it, with enough Postgres and SQL to be dangerous

  • 04

    Mobile: React Native and Expo, native iOS integrations like App Intents and Keychain, dating back to solo-publishing my first App Store app in 2016

aditya@portfolio ~ %
>

WORK

12 years commercial experience · 2014 – Present

Personal Project · 2026Live in production

AI Receipt Scanner & Bank Statement Analyser

An LLM app that reads your receipts so you never have to type 'Tesco £4.20' into a spreadsheet again. Structured, searchable financial data with an analytics dashboard and zero manual entry.

Problem

Receipts and bank statements show up in every format except a convenient one: photos, scanned PDFs, screenshots, bank exports. Typing them in by hand is slow, and honestly, nobody wants that job.

Approach

A multimodal AI pipeline reads each document regardless of format and extracts structured fields. Every output gets validated against a strict schema, and a scoring harness checks the models are behaving before anything reaches storage. A reconciliation engine then matches receipts against bank statement lines (exact, near, and no-match cases) to flag anything that doesn't add up. Vector embeddings mean you can just ask it things in plain English instead of writing SQL.

Result

Consistent, queryable financial records out of whatever mess you throw at it, with token costs kept lean through context-scoped retrieval. Session auth, per-user budgets, rate limiting, and SHA-256 deduplication stop anyone (including me) from uploading the same receipt forty times. Upload, extraction, storage, analytics: the whole thing runs on Vercel.

How it works

Stack

Next.jsTypeScriptVercel AI SDKHonoClaude APIOpenAI GPT-4oChromaDBVercelPostgreSQLDrizzle ORMDockerGitHub Actions
Personal Project · 2026Private project

AI Budget Tracker & Financial Agent

A mobile app that tracks where your money actually went, using LangGraph to extract receipts with the kind of confidence-based retry logic I wish my own bank statements had.

Problem

Manually matching receipts to bank transactions on your phone is exactly the kind of chore that makes people give up on budgeting by February, and it gets worse the moment you tap Apple Pay somewhere with no signal.

Approach

A LangGraph agent handles receipt extraction with confidence-based retries, feeding the exact reason a receipt failed (low confidence, no total, missing line items) back into the next attempt instead of just trying again blind. A hexagonal architecture keeps that AI logic, the domain rules, and the infrastructure cleanly separated across a shared monorepo. TrueLayer's Open Banking APIs handle account linking and background sync, Better Auth handles sessions across the API and the app, and a custom Apple Shortcut plus App Intent logs Apple Pay purchases the instant they happen, queuing locally if there's no signal at the till and replaying automatically once there is.

Result

Receipts and live bank transactions merge into one categorised feed that learns from every correction you make. Before launch it got a proper security pass: least-privilege database roles, Row Level Security, and bank tokens encrypted at rest with AWS KMS so raw credentials never touch a log. It runs on AWS Lambda behind a plain Function URL rather than API Gateway, after outgrowing a free-tier host that could take up to a minute to wake up and occasionally let a wallet-tap purchase vanish into the void.

How it works

Stack

ExpoReact NativeHonoDrizzle ORMPostgreSQL (Supabase)Better AuthLangGraphTrueLayer APIAWS Lambda (SST)AWS KMS
Full Stack · AI

Senior Web Engineer

Pixel Toys, UK · Aug 2025 – Present

Wrote the rulebook for how AI coding agents (Cursor, Claude Code) are allowed to behave across our codebase, mostly 'ask first, refactor later'. Chased down a throughput bottleneck with Artillery and Playwright until it gave in, then let CloudFront edge caching and some ECS autoscaling tuning keep things calm at peak. Redesigned how the web portal gets released, swapped JWTs for revocable sessions with Better Auth and Valkey before launch, built a rollback button that refuses to be pressed too enthusiastically, and taught the juniors to run the load tests themselves. Also building game server admin tools in Angular and C#, where the validation rules are the only thing standing between a typo and a very bad day.

ReactTypeScriptAngularC#AWSDatadogValkey
Cloud · DevOps

Experienced Programmer

Pixel Toys, UK · Aug 2024 – Aug 2025

Built multi-stage SST infrastructure on AWS CDK so deploying stopped being a ritual involving crossed fingers and a Slack message that just says 'pushing now'. Set up GitHub Actions pipelines that quietly block a merge the moment a vulnerable dependency sneaks in. Also built Pick'Ems end to end, a prediction game with a season-long leaderboard that turned out to be the most competitive thing in the office.

AWS CDKSSTGitHub ActionsTypeScriptReact
Frontend · CMS

Frontend Developer

Pixel Toys, UK · Aug 2022 – Aug 2024

Moved the web portal off its ageing CMS onto Astro and Sanity on AWS, pairing server-side rendering with headless content management. Picked Sanity after a proper bake-off against Payload, based on how the editors actually work rather than whose landing page was prettier. Pages load faster, the editorial team stopped filing tickets about publishing being slow, and every new component got poked at in Storybook before it was allowed near the real site.

AstroSanityStorybookAWSSST
Full Stack · Mobile

Full Stack Developer

Freelance · 2018 – 2021

Helped founders and clients figure out what to build and how, then actually built it. A grocery delivery app with live order tracking, a healthcare patient portal, a travel aggregator that got noticeably snappier, and a news platform whose editors got their afternoons back. Web and React Native, front to back.

React NativeReactNode.jsLaravelMySQL
Mobile

React Native Developer

Tech9logy Creators · 2016 – 2018

Built and published hybrid iOS/Android apps in Ionic and React Native for e-commerce and logistics clients, wiring them into Salesforce, Magento, and Stripe checkouts. Also built a clickable interactive SVG interface, which is a fun sentence until you have to debug it. Learned exactly what App Store review really means the hard way.

React NativeIonicSalesforceStripe
Frontend · Backend

Website Developer

Abacus Desk IT Solutions · 2014 – 2016

Cut my teeth shipping a steady stream of WordPress and Magento sites, Laravel admin portals, and my first hybrid apps in Ionic and Cordova. Started mentoring the newer devs here too, mostly by being the person who'd already broken that thing once. Also became the office's go-to for malware cleanup, a skill nobody puts on a job spec but everybody eventually needs.

PHPLaravelWordPressMagentoIonic

LET'SCONNECT.

Open to new roles and genuinely excited about the next hard problem. If you've got one, my inbox is right here.

© 2026 Aditya Batra