Onur Çağırıcı

Full-Stack Software Engineer · C#/.NET · TypeScript/React

Onur Çağırıcı

Builds side projects with live demos

Onur Çağırıcı

PhD in Computer Science · algorithms & geometry

About Me

Onur Çağırıcı

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.

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
    Remote, Czech Republic · Nov 2024 – Jul 2026

    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
    Brno, Czech Republic · May 2023 – Nov 2024

    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
    Toronto Metropolitan University · Masaryk University · Izmir University of Economics

    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.

Featured
Construction Version Control: component tree, 3D floor plan, and change history Live demo
2026 · React · ASP.NET Core · PostgreSQL · Three.js

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.
ReactTypeScriptASP.NET CorePostgreSQLThree.js
AI & LLM engineering
Agent Evaluation Harness
2026 · TypeScript

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%.

TypeScriptClaude APISQLiteEvals
Industrial Document RAG
2026 · Python

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.

PythonFastAPIpgvectorStreamlitDocker
Conversational Shopping Demo
2026 · TypeScript

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.

Next.jsTypeScriptTailwindTool useShopify
Backend & full-stack
Racemake Telemetry
2026 · TypeScript

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.

BunHonoTypeScriptSignal processing
Shopirend
2026 · Kotlin

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.

KotlinJetpack ComposeSpring BootPostgreSQLFirebase
Czech Flash Cards
Live · JavaScript · PHP

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.

Vanilla JSPHPUTF-8
Research code & simulations
Bouncing Robot Simulator
2022 · JavaScript · Python

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.

JavaScriptSVGPythonMotion planning
Periodic Vehicle Routing
2016 · Python · C++

Heuristic solver for the Periodic VRP and its variants.

Built for a TÜBİTAK-funded logistics project with an industry partner. Evaluated on 42 benchmark instances; prototyped in Python, then reimplemented in C++ for speed.

PythonC++Optimization
3D Sensor Localization
2016 · Python

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.

PythonComputational geometry

Academic Work

Twelve years in algorithms and computational geometry, 2011 – 2023.

Research areas
  • 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
Teaching & service
  • 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
Positions
  • Postdoctoral Researcher — Toronto Metropolitan University
    Toronto, Canada · Oct 2021 – Mar 2023
    • 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
    Brno, Czech Republic · Sep 2016 – Oct 2021
    • 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
    Izmir, Turkey · Nov 2011 – Apr 2016
    • 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

2022
  • On embeddability of unit disk graphs onto straight lines

    O. Çağırıcı

    Theory of Computing Systems, 2022
  • Bouncing Robots in Rectilinear Polygons

    O. Çağırıcı, Y. Bahoo, S. M. LaValle

    MMAR 2022
2021
  • Clique-Width of Point Configurations

    O. Çağırıcı, P. Hliněný, F. Pokrývka, A. Sankaran

    Journal of Combinatorial Theory, Series B, 2021
  • Unit disk visibility graphs

    D. Ağaoğlu, O. Çağırıcı

    EUROCOMB 2021
2020
  • Clique-Width of Point Configurations

    O. Çağırıcı, P. Hliněný, F. Pokrývka, A. Sankaran

    WG 2020
  • On embeddability of unit disk graphs onto straight lines

    O. Çağırıcı

    CSR 2020
2019
  • On conflict-free chromatic guarding of simple polygons

    O. Çağırıcı, S. K. Ghosh, P. Hliněný, B. Roy

    COCOA 2019
2017
  • On Colourability of Polygon Visibility Graphs

    O. Çağırıcı, P. Hliněný, B. Roy

    FSTTCS 2017
  • On upward straight-line embeddings of oriented paths

    O. Çağırıcı, L. Casuso, C. Medina, T. Patiño, M. Raggi, E. Roldán-Pensado, G. Salazar, J. Urrutia

    ECG 2017
Research visits & internships
  • 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
Education
  • 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