Ramy MekhzerGet in touch
Plate I
Profile
Degree
MEng CS & SE, Birmingham
Role
Financial Analyst, Amazon Leo
Location
United Kingdom
Updated

Computer Science and Software Engineering student at Birmingham,currently on placement at Amazon.

FIG. 1Amazon Leo

June 2026 – June 2027 / Industrial placement / London

I am a Financial Analyst on a twelve month industrial placement at Amazon, inside Amazon Leo (formerly Project Kuiper), Amazon's low earth orbit satellite broadband business, building a constellation of more than three thousand satellites.

  • 01

    Took ownership of an AWS hosted internal deal approval platform used by 100+ employees across four functions. Introduced source control and a documented production baseline.

  • 02

    Rebuilt its deal intake and approval flow to production standard, aligning legal, business, tax and finance on a single view of every deal.

  • 03

    Build internal tools supporting finance workflows and financial modelling.

  • 04

    Write SQL and Python to pull and transform data, and present the findings to stakeholders. Produce P&Ls and forecasts for deals.

  • 05

    Run internal sessions helping other employees use AI tooling more effectively.

Diagram of Amazon Leo's three orbital shells: 590 km at 33.0 degrees with 784 satellites, 610 km at 42.0 degrees with 1,296, and 630 km at 51.9 degrees with 1,156.

Amazon Leo's constellation: 3,236 satellites across three shells at 590, 610 and 630 km, in 98 orbital planes.

Diagram: legal, business, tax and finance converge on a single view of every deal.

The deal approval platform, drawn as what it does.

FIG. 2Can I Afford This Trip?

2025 – 2026 / Solo / 56 commits / Public

Enter a trip and a budget, and it tells you whether you can afford it, how many days the budget covers, and which changes would bring the cost down.

The estimate comes from a pure TypeScript engine with no framework imports and no I/O, reading a dataset of 8,271 cities baked into the app as JSON, so no request waits on an outside API or a database. Accommodation, food and local transport come from the destination city's cost-of-living data, falling back to the country median and then a global default, and each step down lowers the confidence tag on that line. Budget, balanced and comfort tiers change every category, and the trip month applies a seasonal multiplier that flips for the southern hemisphere.

The engine then reruns itself one change at a time (a cheaper tier, fewer nights, a cheaper month, a nearby city, one fewer traveller) and ranks the changes that save money. The verdict is comfortable, within budget, tight or over.

Version 1 was a Spring Boot 3 API on Java 21, a Python ETL worker and Postgres, with live fares from Amadeus. Amadeus closed its self-service API, the free database paused when idle and the JVM was slow to wake, so version 2 is a single Next.js app. The v1 code stays in the repo, and its Resilience4j circuit breaker is ported to TypeScript for any optional price source added later.

  1. 1 Next.js 16 and React 19, one app
  2. 2 Route handlers with a per-IP rate limit and zod validation
  3. 3 Pure TypeScript engine, unit tested with vitest
  4. 4 Baked JSON dataset, 8,271 cities
  5. 5 v1 kept for reference: Spring Boot 3, Java 21, Python ETL, Postgres
Architecture diagram: the browser calls Next.js route handlers (rate limit, zod validation), which call a TypeScript engine (fallback chain, tiers, seasonality, levers) reading a baked JSON dataset of 8,271 cities; the engine returns the verdict to the browser.

FIG. 3StudyBuddy

2026 / Solo / Public

Exam revision that quotes your own notes back at you. It ingests slides, notes and lecture transcripts, turns them into quiz questions, and when you get one wrong it shows the passage that answers it.

Every question stores a short evidence quote that must appear word for word in one of the ingested chunks, and a question whose quote is not found is dropped before it reaches the quiz. The explanation for a wrong answer is built on the server from real chunks: the one holding the quote, plus up to two more from a pgvector similarity search. Spaced repetition puts untested and weak concepts first.

Every user request runs as a separate database role with Postgres row-level security forced on, so a query only returns that user's rows. That role cannot write scores or read the answer key; the server grades each attempt. 52 tests run in CI against Postgres with pgvector, covering the row-level security, grading and answer-key access.

  1. 1 Slides, notes and lecture transcripts
  2. 2 Ingest: clean, chunk, embed
  3. 3 Postgres with pgvector, row-level security on the app role
  4. 4 Question generation, evidence quote checked word for word
  5. 5 Quiz with spaced repetition, confidence decaying over about 14 days
  6. 6 "Why" panel built on the server from real chunks
  7. 7 Hono API, Node 20 and TypeScript, JWT auth, static frontend
Pipeline diagram: notes and slides are ingested and chunked into Postgres with pgvector, protected by row-level security on an app role; question generation runs a verbatim evidence check; the quiz uses spaced repetition; and a why panel quotes the source chunk taken from the database.

FIG. 4Banking Multi-Agent System

2026 / Public / Built on Google ADK

A customer relationship assistant for a fictional retail bank, built on Google's ADK with Gemini 2.5 Flash. A root agent talks to the customer and hands the conversation to a complaints agent or a branch-finder agent through ADK's agent transfer, rather than hand written branching.

Lookups go through a separate read-only agent over BigQuery, which the root, complaints and navigator agents all call as a tool, so answers come from records instead of being improvised. Writes, such as a phone number change or a new complaint, go through plain Python tools with parameterised queries. Each agent's prompt lives in its own file, and an ADK evalset checks a lookup against the expected tool calls.

A pytest suite with BigQuery mocked covers the SQL each tool builds, the not-found and multiple-match paths and the agent wiring. CI runs it on every push.

  1. 1 Root agent, handing off by agent transfer
  2. 2 Complaints sub-agent
  3. 3 Navigator sub-agent, Google Maps MCP
  4. 4 BigQuery, read through a read-only bq_agent
Diagram: a root agent handing off to complaints and navigator sub-agents, with BigQuery beneath them supplying records to all three.

FIG. 5Robotics SLAM & Simulation

Sept – Dec 2025 / Group of three / Public

A group project for the Intelligent Robotics module. A simulated robot maps a building it has never seen and chooses where to explore next, using a particle filter SLAM system written from scratch in Python and run in Webots.

I wrote the SLAM core: the FastSLAM particle filter, the differential-drive motion model, the measurement model that scores each particle against the map, and the inverse sensor model that writes each LiDAR scan into a log-odds occupancy grid. My two teammates built frontier exploration and evaluation, and robot control with A* path planning.

It is a simplified FastSLAM: every particle shares one global map instead of carrying its own.

  1. 1 LiDAR and wheel odometry in Webots
  2. 2 Differential-drive motion model
  3. 3 100-particle FastSLAM filter
  4. 4 Occupancy grid, 400 x 400 at 0.05 m
  5. 5 Frontier planner returning waypoints
Pipeline diagram: LiDAR and odometry into a motion model, a 100-particle filter, a 400 by 400 occupancy grid at 0.05 m, and a frontier planner feeding waypoints back.

FIG. 6Tools I run daily

Personal / Built for my own use

  • Job Scout

    Reads my inbox each morning, scores roles against a preferences file, and builds a tailored LaTeX CV for anything scoring above the threshold. Python, SQLite, launchd.

  • LocalFlow

    Push to talk dictation running entirely offline. Parakeet MLX for transcription, a local model for cleanup.

  • London Commute Map

    Door-to-desk public transport time to Liverpool Street from across London, sampled from the TfL Journey Planner over a hex grid, with a view for rides with no changes.

  • Local Hub

    A dashboard on localhost that starts at login and launches the rest of them.

PLATE IIRecord

Education, languages, other

Degree
MEng Computer Science & Software Engineering, University of Birmingham. September 2023 to June 2028, including the twelve month industrial placement.
Award
First place, Siemens Birmingham Project, June 2024. Led a team of seven against more than ten competing teams, and delivered the final presentation to 200+ attendees.
Society
Treasurer, University of Birmingham Chess Society, June 2024 to present. Budgeting, reimbursements and reporting for 60+ members. Member of AFNOM, the cybersecurity society.
Languages
Arabic, native. French, fluent. English, fluent.

PLATE IIIGet in touch

Open to summer 2027 internships