Projects / demos

Projects

Personal projects I build to try out ideas end to end, from data to a small working interface. All the code is on GitHub.

01 / Similarity search · geospatial

HikesAlike

Pick a hike you enjoyed and HikesAlike lists other hikes in Europe that feel similar: comparable length, climb, highest point, landscape and typical weather. You can also describe a hike instead of naming one, and limit results to a driving time from a starting town.

  • Builds a catalogue of roughly 250,000 day hikes and day stages from OpenStreetMap, enriched with elevation, land cover and climate data.
  • Each hike becomes a feature vector; similarity weights are adjustable in the interface.
  • Optional drive-time filter through a self-hosted Valhalla routing engine.
  • Served as a small read-only export on Google Cloud Run.

Technologies

  • Python
  • OpenStreetMap
  • SQLite
  • Valhalla
  • Leaflet
  • Cloud Run

The server sleeps when idle, so the first load can take around 20 seconds.

HikesAlike page for the Aljažev dom to Triglav hike, showing the route on a map, its elevation profile and summary chips for distance and climb.
fig. 1.1 · HikesAlike
Table of ten hikes similar to the climb to Triglav, each with a similarity score and coloured cells for how alike it is on length and climbing.
fig. 1.2 · HikesAlike
02 / Simulation · inventory policy · RL

Supply chain simulator

A small multi-echelon retail supply chain simulator. Factories, warehouses, shops and customers form a directed graph that shares one stochastic world with seasonality and disruptions. Each node runs its own replenishment policy, so ordering rules can be compared on identical random worlds.

  • Textbook inventory policies — (s,S), (s,Q), (R,S) and (R,s,S) — extended to route orders across several suppliers.
  • A PPO reinforcement learning policy trained against the textbook baseline with common random numbers, plus an Optuna tuner.
  • Optional LLM world generator and replay of real demand from the M5 (Walmart) dataset.
  • Work in progress on JEPA-style world-model policies on experimental branches.
  • A limited Streamlit demo compares four policies on one shop and includes a 30-world check of whether a gap is luck.

Technologies

  • Python
  • PyTorch
  • PPO
  • Optuna
  • Streamlit
  • Cloud Run

A limited slice of the simulator. It may take a few seconds to wake up.

Streamlit supply-chain policy lab showing a scorecard that compares four inventory policies on net profit, fill rate and days out of stock.
fig. 2.1 · Supply chain simulator
Bar charts comparing a reinforcement learning policy with an order-up-to baseline across 32 paired seeds on service level, stockout rate, turnover, price and revenue.
fig. 2.2 · Supply chain simulator
03 / Computational geometry

KrovLab

KrovLab takes a building footprint and a roof pitch and returns the geometry of a hipped roof: faces, hips, ridges, valleys and the quantities a roofer needs. When a plan cannot be roofed it returns a named failure rather than a wrong answer.

  • Weighted straight-skeleton core with no third-party dependencies.
  • Supports gables, knee walls, gambrels, courtyards, overhangs, several cells per project and dormers.
  • A Flask web demo draws the roof plan and a 3D view, accepts DXF footprints and exports OBJ and GLB meshes.
  • Its limitations are documented up front.

Technologies

  • Python
  • Computational geometry
  • Plotly
  • Flask
  • DXF

The server sleeps when idle, so the first load can take a few seconds.

Roof plan of an L-shaped building at 45 degrees, with hips in orange, ridges in red, a valley in blue and heights at each vertex.
fig. 3.1 · KrovLab
Three-dimensional view of the same L-shaped hipped roof with its ridge and hip lines.
fig. 3.2 · KrovLab
04 / Optimisation · energy · LangGraph

AeroGrid

A research demo of a home energy planner. A streaming agent shifts deferrable household loads (EV charger, hot-water heater, dishwasher, washing machine) and dispatches a home battery into cheap price slots, using real SMARD wholesale prices for Germany and Luxembourg.

  • Receding-horizon optimiser: a linear programme, or a small mixed-integer programme when an appliance cycle is waiting for a decision, solved with HiGHS through CVXPY.
  • LangGraph loop that replans on new appliance starts, price surprises, EV deadline slips and a 15-minute resync, with a human approval step before a plan is committed.
  • A 1 Hz digital twin runs a no-optimisation baseline and optimiser variants with and without the battery on the same prices.
  • Known gaps are listed in the README: rectangular appliance cycles, a naive price forecast and no solar or grid export.

Technologies

  • Python
  • LangGraph
  • CVXPY
  • HiGHS
  • SMARD
  • Jupyter

The demo is a replay of recorded simulation runs. The planner itself runs locally from the command line and notebooks.

Diagram of the AeroGrid LangGraph nodes: forecast price, optimise, propose reschedule, human approval gate and commit plan.
fig. 4.1 · AeroGrid
Charts of one optimiser scenario with an 8 kW house power cap, where the EV charger and the water heater share the cheapest slots to meet the EV deadline.
fig. 4.2 · AeroGrid
05 / LLM agents · LangGraph

CV writer

An agentic workflow that drafts a CV and cover letter for a specific job. It reads your existing documents, extracts the job requirements, researches the company, retrieves relevant past projects and iterates on drafts with a critique step, pausing for your input at each decision.

  • LangGraph state machine with separate agents for reading, research, retrieval, routing, writing and critique.
  • Two-stage retrieval: vector similarity followed by an LLM relevance check.
  • Drafts are scored and refined until they pass a quality threshold; every version is kept.
  • PDFs are produced through LLM-written LaTeX, with compiler errors fed back for repair.

Technologies

  • Python
  • LangGraph
  • LangChain
  • RAG
  • Tavily
  • LaTeX

Runs locally from the command line; there is no hosted demo.

LangGraph workflow diagram: load documents, analyse the job description, research the company and retrieve experience, then a router that loops through drafting, critique and PDF generation for the CV and the cover letter.
fig. 5.1 · CV writer