Air-Gapped Semantic Search Engine
An ONNX embedding service running ~3× faster on CPU, HNSW vector search returning the top-30 in about 10 ms, and a cross-encoder reranker for top-10 precision. Nothing leaves the machine.
M.Sc. Computer & Systems Engineering at TU Ilmenau. Two years building computer-vision and full-stack systems that run in production. Currently extending time-series foundation models at Fraunhofer IOSB.
M.Sc. Computer & Systems Engineering at TU Ilmenau, currently extending time-series foundation models at Fraunhofer IOSB. Before that: two years shipping computer-vision platforms that run live on real sites, not in a notebook.
I work the whole line — perception model, the service around it, the API, the dashboard someone stands in front of, the container it ships in. Each thread on this map is one of those competences, not a phase I went through.
Analysis and Extension of the LTM Implementation — I analyse and evaluate Amazon's Chronos — a large time-series model — on energy-economic series: load, generation, electricity prices, weather. Functional scope, accuracy, robustness and runtime get measured first; then I design and implement architecture extensions, adapting foundation-model methods to how energy markets actually behave, and train and evaluate against public datasets.
Extending Amazon's Chronos foundation model for energy time-series forecasting — load, generation, prices, weather — and profiling it for accuracy and runtime against public market datasets.
Built the RAG pipeline that killed the repetitive support questions and benchmarked the LLM frameworks behind the team's AI stack — alongside three production web apps on Node/React and the Docker CI/CD I ran myself.
Built EMACS end to end: a multi-camera access-control platform live across several sites, with YOLOv8/ONNX inference running as its own service behind a repeatable Docker release.
Hands-on session on secure, sovereign data infrastructure — data consumption and contract negotiation flows.
English C1 full professional · German B1 · Urdu native
Things that have to keep running when nobody is watching them. Services, inference, pipelines, the parts with a latency budget.
An ONNX embedding service running ~3× faster on CPU, HNSW vector search returning the top-30 in about 10 ms, and a cross-encoder reranker for top-10 precision. Nothing leaves the machine.
At Fraunhofer IOSB I profile Amazon's Chronos model for accuracy, robustness and runtime against public energy-market datasets, then design architecture extensions that adapt foundation-model methods to how energy markets actually behave.
Three production web apps on a Node/React stack, with the Docker CI/CD pipelines built and maintained solo. Also a RAG pipeline wired into the live site over REST, because support was drowning in the same four questions.
Cameras pointed at real rooms, and the models that have to make sense of them while someone is standing there waiting.
A React dashboard, a Node/Express REST API and MongoDB, deployed via Docker across multiple live camera installations. Underneath sits a concurrent backend handling several video feeds at once, tracking whitelist state in real time and timestamping every event. Proof of concept to production.
A real-time React monitoring dashboard with Node REST APIs and MongoDB event logging, all containerised. The pose-estimation and face-recognition pipelines are exposed as services rather than bolted into the app.
Mostly the QCar. Where the code stops being an abstraction and something in the room actually moves — or gets warm, or refuses to.
A self-driving 1/10-scale vehicle on a physical indoor track. Cartographer pure-localization against a saved map, a CasADi/IPOPT model-predictive controller tracking a recorded trajectory at 12.5 Hz on the Jetson, and RPLidar-based detection driving a behaviour state machine that swings out, passes a moving ROSbot 2 and returns to the reference line. Tracking error 1–4 cm over continuous laps.
Modelled a thermoelectric cooling system as PT2 plus dead time, identified the parameters with an open-loop step test, then tuned a PID controller with anti-windup on Arduino. Steady-state error under 0.3 °C.
A modular autonomous-driving architecture with explicitly defined interfaces between perception, control and safety, coordinating multi-agent interaction in Gazebo Sim. Group study, SS2026, still very much open on the workbench.
A real-time tracking pipeline benchmarked on MOTA, ID-switch rate and FPS across simulated UAV flight manoeuvres — the interesting result being how differently the two trackers fail rather than which one wins.
Language models made to do something specific — fine-tuned, quantised, grounded in real documents. Plus one foundation model that forecasts electricity rather than words.
A medical chatbot that runs entirely on your own machine. TinyLlama 1.1B fine-tuned with QLoRA: the base model loads in 4-bit NF4 at around 900 MB instead of 4.4 GB, and LoRA trains 12.6 M parameters — 1.13% of the model — so the whole run fits in a 4 GB RTX 3050. The training set is WebMD SQuAD v2 regrouped by article into 7,664 examples across 3,832 conditions, each one teaching the same four-section answer: possible causes, home management, red flags, and a reminder to see an actual doctor. The adapter is merged back into the base, converted to GGUF q8_0 at 1.17 GB and registered with Ollama. At query time a ChromaDB index of 19,725 WebMD Q&As, embedded with all-MiniLM-L6-v2, returns the top three matches into the prompt — so the answers are grounded in real content rather than whatever a 1B model happens to remember. FastAPI behind a single-file frontend, with a keyword safety filter in front of both.
An agent with dynamic tool use: live web-search grounding, chain-of-thought reasoning, and structured argument / counter-argument output with citation tracking. It is better at debating than I am, which was not the goal.
Analyses your experience against the role and generates a tailored cover letter, exported as a clean PDF. Dual engine: Gemini 2.5 in the cloud, or Llama 3.2 locally via Ollama if you would rather nobody read your CV.
The oldest thread. Still the fastest way to put a thing in front of a person.
Profiles, listings, search, filtering, an admin panel and a responsive UI — then user interviews with TU Ilmenau students to find out which half of it was wrong.
Every rebuild starts because I saw a portfolio that looked like every other portfolio and panicked. This is the version where I stopped pretending my work fits in one column.
The thread with the least code in it and the most influence over everything else. Currently under-documented, which is my fault.
Architecture is the one I keep coming back to: load paths, thresholds, how a building tells you where to walk without a sign. This layout is a floor plan of a brain, and the grid behind it is not decorative — it is the same grid every element sits on.
Measurements first, opinions after. Forecasting, benchmarking, and publishing the error alongside the answer.
A dispatcher marks the crew base and work sites on a map. CertiRoute reads today's street-level heat from FortyGuard, predicts the remaining hours with a trained model of how that area's heat moves through a day, and compares every start time the shift could use — returning one decision, begin at this hour, with the visit order worked out and a calibrated interval attached. Measured across Phoenix, Houston and Miami: reordering stops inside a fixed window changed the recommended sequence in zero of three cases, because site-to-site spread is 0.32–2.32 °C while the swing across a day is 5.2–9.3 °C. When a crew works dominates what order they work in by roughly an order of magnitude. It still computes the heat-aware order, and still reports it. No login, no install — reviewing a finished day runs entirely on measurements committed to the repository, so it costs nothing on a cold deployment.
Federal budget allocation across Balochistan, Sindh, Khyber Pakhtunkhwa and Punjab, cleaned one province at a time and then merged into a single dataset. R for the whole pipeline — reshaping, comparison across provinces, and the plots that make nineteen years of allocation legible on one axis.
Case study 1 from the Google Data Analytics certificate: a bike-share trip dataset taken from raw rider records through cleaning, aggregation and a set of plots. Done in R rather than the spreadsheet route the course suggests, which made the reshaping and the charts one piece of work instead of two.
Three publications out of TU Ilmenau's Institut für Automatisierungs- und Systemtechnik. Written up properly, full text where allowed, 40 reads and counting.
Physical modelling, parameter estimation, experimental system identification, stability analysis, controller design and closed-loop hardware validation — start to finish on one system. The rig: a Laird DA-045-24-02 TEC assembly bolted to an aluminium cold plate inside a 43-litre insulated box. Rise time 34 min, steady-state error under 0.3 °C, PID with anti-windup on Arduino.
A comparative analysis of two real-time multi-object trackers across simulated UAV flight manoeuvres, measured on MOTA, ID-switch rate and FPS. Presented at CCSE2026; the benchmark data is published alongside it, so the numbers can be checked rather than believed.
Seven weights published on Hugging Face — the ones behind the platforms, exported and pinned so a deployment can pull a known-good artefact instead of whatever trained last.
An RF-DETR segmentation ONNX export, used by rfdetr_onnx_lane_node to detect the lane mask and publish a steering target. RF-DETR segmentation medium, float32 NCHW input at [1, 3, 432, 432], classes for background, lane and traffic light, running on ONNX Runtime under CPU or CUDA. Built for the QCar2 ROS 2 simulation and autonomy stack — lane keeping, LiDAR obstacle avoidance, lane switching. Trained and exported for this project's track and camera viewpoint: it is not a production autonomous-driving model and should not be used as a real vehicle safety system.
InsightFace's ArcFace glintr100 — ResNet-100 trained on Glint360K — as a 512-dimensional face-embedding model, 260.7 MB of ONNX. Takes a 112×112 RGB crop in CHW and returns an L2-comparable embedding; identities are compared by cosine similarity. One catch the card is explicit about: this export normalises by dividing by 255, which differs from canonical ArcFace preprocessing and has to match however your enrolled gallery was built. Released for non-commercial research only — the rights remain InsightFace's.
An ONNX export of YOLOv5m, used as the person detector in the PULAO event access-control vision pipeline: person boxes feed a ByteTrack tracker, which feeds ArcFace face recognition. Float32 [N, 3, H, W] input with dynamic spatial dimensions, typically letterboxed to 320×320, returning a [1, num_boxes, 85] detection tensor over the COCO classes. AGPL-3.0, inherited from Ultralytics YOLOv5, so using it means either open-source compliance or a commercial licence.
A lightweight 2.4 MB face detector in ONNX, used to localise faces in the PULAO vision pipeline so that only worthwhile crops ever reach ArcFace. 320×320 letterboxed RGB in, boxes in xywh with confidence scores out. The provenance is the honest part of the card: the exact architecture, training data and licence could not be determined from the file, so it stays private until that is established rather than redistributed on an assumption.
An AI-powered workplace safety system combining PPE compliance detection, ArcFace-based face recognition, worker tracking and GDPR-compliant anonymisation for real-time industrial surveillance. Built for smart factories: YOLOv8 detects the three things that actually matter on a floor — helmet, safety vest, face mask — and the anonymisation is part of the pipeline rather than a setting bolted on afterwards.
The ArcFace recognition weights behind the multi-site access-control platform, published so the whole pipeline — detect, embed, match — can be reproduced from artefacts rather than descriptions.
TinyLlama tuned for medical chat and quantised to Q8 — an exercise in getting useful language behaviour out of a 1B model on hardware with no datacentre attached. The most downloaded thing I have published, which says something about where the demand is.