About Me
I am a full-stack engineer with three years of production C#/ASP.NET Core and TypeScript/React experience on a large-scale SaaS platform (Procore) and on regulated medical-device software (Novanta). I own features end to end: public REST API design, an LLM-based data-import pipeline, new column types for a large virtualized editable data grid, and hardware-facing device UI.
Before industry I spent twelve years in academic research on algorithms, computational geometry, and graph theory, finishing with a PhD and a postdoc. I enjoy owning a feature from the API contract to the shipped UI, and I keep a few side projects going to try out new stacks.
- Brno area, Czech Republic
- onur.cagirici@gmail.com
- linkedin.com/in/cagirici
- github.com/ocagirici
Skills
What I work with day to day
Backend
C#, .NET / ASP.NET Core, REST API design (contracts, versioning, validation), Entity Framework Core, SQL Server, LINQ, service architecture, LLM integration in production features.
Frontend
React (hooks), TypeScript, MobX state management, large editable data grids (virtualization, custom column types, inline editing), component composition in an existing codebase.
Testing & Quality
Playwright, Jest, NUnit unit and integration testing, IEC 62304 medical-device process.
DevOps & Cloud
Git, Kubernetes, Docker, CI/CD (CircleCI, Azure DevOps), AWS S3. Agile/Scrum, cross-functional hardware/software teams, remote-first collaboration.
Languages
C#, TypeScript, JavaScript, C++ · also Python, Java, Kotlin in personal projects.
Experience
Industry roles. Research positions are on the Academia tab.
-
Procore Technologies — Full Stack Developer, Estimating
TypeScript, React, MobX, C#, ASP.NET Core, EF Core, SQL Server, REST, Kubernetes, Docker, AWS S3, Playwright, Jest
- Designed and built ~20 endpoints of the Esticom Public API v2.0 (estimate summary resources) from scratch in 5–6 weeks: API contract, PUT/PATCH semantics, validation, controllers, and data access. Now used by external customer integrations.
- Built an LLM-based import pipeline for CSV/XLS estimates with semantic column mapping and a human-in-the-loop fallback for low-confidence matches, eliminating manual column mapping on import.
- Delivered a customer-requested redesign of the estimate summary table: flattened the nested group › assembly › part data from the MobX store and extended the React table with per-level visibility toggles and configurable VAT/overhead totals.
- Added new column types to the estimating grid (a large virtualized data grid with inline-editable cells), including S3-backed file-attachment columns with presigned-URL upload/download, with the corresponding API and React UI.
- Set up the Kubernetes-based test environments used by the team's Playwright and integration suites; containerized services for both standalone and integrated configurations.
- Piloted AI-assisted development on a full epic; wrote the report the team adopted as its workflow reference.
-
Novanta — Software Design Engineer
C#, .NET, WinForms, NUnit, embedded C++, Linux, Azure DevOps, IEC 62304
- Authored the product's state-machine specification (device signals, application states, UI interactions) for a regulated medical pump device; used as the software contract in design reviews and test planning under an IEC 62304 process.
- Implemented the layer translating hardware signals into deterministic LED and UI states (ready / normal / high-pressure), including the application–driver interface.
- Built a reusable C# tab-navigation component library adopted across all tabbed device screens, replacing per-screen duplicate implementations.
- Served as Agile Team Coach for the 11-person team: ran retrospectives and coordinated across hardware, software, and QA. Maintained the NUnit test pipeline in Azure DevOps.
-
Research positions — 2011 – 2023
Postdoctoral researcher, doctoral researcher, and research assistant in algorithms and computational geometry, with teaching and nine peer-reviewed publications. Details on the Academia tab.
Education
Ph.D. in Computer Science
Masaryk University, Brno, Czech Republic (2016–2021)
M.Sc. in Intelligent Engineering Systems
Izmir University of Economics, Turkey (2012–2015)
B.Sc. in Software Engineering
Izmir University of Economics, Turkey (2007–2011)
Personal Projects
Things I built outside work to learn a stack or ship an idea. Source is on GitHub, and the ones marked live run right here on cagirici.net.
Construction Version Control
Git-style change tracking for building models, at the component level.
A construction project is more than its drawings: it is the running account of what was decided, why, what it cost, and what it touched. CVC keeps that account. Every edit is a change record naming the components it affects, the reasoning behind it, and the money it moves.
- Change lifecycle (draft › proposed › approved › incorporated) with cost impact rolled up per project, floor, and room.
- Interactive 3D plan view per level that highlights exactly which walls, windows, and openings a change touches.
- Component tree and change log as two views of the same data; import/export; English, Turkish, and Czech UI; light and dark themes.
Agent Evaluation Harness
A tight loop for measuring an LLM agent, not just demoing it.
A minimal data-analyst agent answers natural-language questions about a SQLite database through Claude's tool-use API. An evaluation harness runs it against a fixed set of 27 questions (15 core, 12 adversarial traps), scores by exact/keyword/negative checks, categorizes failures, and reports accuracy, cost, and latency after every change. Prompt iteration took accuracy from 96.3% to 100% and cut latency by 18%.
Industrial Document RAG
Grounded answers from equipment manuals, with file and page citations.
Upload PDFs (manuals, datasheets, maintenance guides), ask in natural language, and get answers that cite their sources. Ingestion chunks and embeds documents into Postgres with pgvector (HNSW); the retrieve › prompt › generate loop is plain, readable Python behind a FastAPI backend with a Streamlit chat client. Includes an eval harness for retrieval hit-rate and answer quality, and a one-command docker-compose setup.
Conversational Shopping Demo
A recommendation agent that never invents a product.
A small Next.js storefront with a chat assistant built on the Anthropic Messages API. The agent is given a
single search_products tool over Shopify's mock Storefront API and is required to search before
recommending, so every suggestion is a real catalog item returned by the tool during that turn.
Racemake Telemetry
Raw racing telemetry in, a race engineer's analysis out.
A Bun + Hono service that ingests a telemetry stint and produces lap segmentation, corner detection,
time-loss attribution against the best lap, and a grounded radio call for the driver. The core is a
pipeline of pure, unit-tested functions (37 tests, strict TypeScript, no any); every threshold
is derived from the data and documented in a decisions log. The HTTP layer is a thin read-only view.
Shopirend
Mobile-first social shopping: tell friends you are at the store, take their requests.
An MVP with two modules. The Android app (Jetpack Compose, Material 3, Hilt, Ktor) starts a store trip, notifies chosen friends, and tracks item requests as bought or not found. The Spring Boot backend handles JWT auth, friendships and privacy checks, private lists, shared wishlists, and push notifications, on PostgreSQL with Flyway migrations.
Czech Flash Cards
The vocabulary trainer I use for my own Czech.
Three study modes (EN→CZ, CZ→EN, random), keyboard navigation, CSV import and export, and diacritics-insensitive search so kotka finds kočka. Profiles are PIN-gated and stored server-side as CSV, so a deck follows you across devices. Plain HTML, CSS, and JavaScript with a small PHP backend.
Bouncing Robot Simulator
A minimal-sensing robot bouncing around a rectilinear polygon.
Interactive SVG simulation of the model from my MMAR '22 paper with Yeganeh Bahoo and Steven LaValle: a robot with no localization moves in straight lines and changes direction only when it hits a wall. Step through bounces, adjust speed, and watch the trajectory. Python analysis code is on GitHub.
3D Sensor Localization
Recovering node positions in a 3D sensor network from distances alone.
Trilateration and quadrilateration over inter-node distance measurements, with custom geometry primitives and a 3D visualization of the recovered network.
Academic Work
Twelve years in algorithms and computational geometry, 2011 – 2023.
- Geometric graph recognition and complexity: unit disk graphs, unit disk visibility graphs, and their embeddability
- Polygon visibility graphs, colourability, and conflict-free chromatic guarding
- Clique-width of point configurations and geometric structures
- Motion planning for minimal-sensing (bouncing) robots
- Earlier: vehicle routing heuristics and 3D sensor-network localization
- Independently taught Algorithms (CPS616), a 120-student undergraduate course, at Toronto Metropolitan University; mentored students
- Mentor for the Graph Theory course at Masaryk University over several semesters
- Assisted Data Structures, Algorithms, Database Systems, and Discrete Mathematics at Izmir University of Economics over four years
- Co-organized CCCG 2022, the Canadian Conference on Computational Geometry
-
Postdoctoral Researcher — Toronto Metropolitan University
- Designed and implemented motion-planning algorithms for minimal-sensing robots in Steven LaValle's group; two peer-reviewed publications.
- Built a polygon decomposition and "smart bouncing" strategy for sensor-limited robots, validated against reflective and random strategies across 500 simulations.
- Lectured Algorithms (CPS616), a 120-student undergraduate course, for a semester; mentored students; helped organize CCCG 2022.
-
Doctoral Researcher — Masaryk University
- PhD on geometric graph recognition and complexity; seven peer-reviewed publications in graph algorithms and computational geometry.
- Formal complexity analysis and proofs for graph-theoretic algorithms in combinatorial optimization problems.
- Mentor for the Graph Theory course over several semesters.
- Research visits to ENS de Lyon, Jagiellonian University, UNAM, Cinvestav, and UASLP.
-
Research Assistant — Izmir University of Economics
- Designed and implemented a multi-stage 3D localization algorithm for wireless sensor networks in Java, combining plane-level self-localization with inter-plane alignment using linear algebra.
- Developed and benchmarked vehicle routing heuristics for a TÜBİTAK-funded logistics project, comparing custom algorithms against optimal solutions and randomized baselines in Python and C++.
- Assisted courses in Data Structures, Algorithms, Database Systems, and Discrete Mathematics over four years.
Publications
Peer-reviewed journal and conference papers
-
On embeddability of unit disk graphs onto straight lines
Theory of Computing Systems, 2022 -
Bouncing Robots in Rectilinear Polygons
MMAR 2022
-
Clique-Width of Point Configurations
Journal of Combinatorial Theory, Series B, 2021 -
Unit disk visibility graphs
EUROCOMB 2021
-
Clique-Width of Point Configurations
WG 2020 -
On embeddability of unit disk graphs onto straight lines
CSR 2020
-
On conflict-free chromatic guarding of simple polygons
COCOA 2019
-
On Colourability of Polygon Visibility Graphs
FSTTCS 2017 -
On upward straight-line embeddings of oriented paths
ECG 2017
- 2022Jagiellonian University · Kraków, Poland
- 2019ENS de Lyon · Lyon, France
- 2017Universidad Autónoma de San Luis Potosí · Mexico
- UNAM and Cinvestav · Mexico City, Mexico
- Jagiellonian University · Kraków, Poland
- 2010Internship, University of Cantabria · Santander, Spain
- 2008Internship, Coretech · Istanbul, Turkey
- 2016–21Ph.D. in Computer Science · Masaryk University, Brno
- 2012–15M.Sc. in Intelligent Engineering Systems · Izmir University of Economics
- 2007–11B.Sc. in Software Engineering · Izmir University of Economics
© Onur Çağırıcı