I make slow Python fast with Rust, build data pipelines that don't fall over on messy input,
and ship the result as packages people can pip install or cargo add.
A Rust decision engine: give it options, rules and a request, and it picks an action the same way every time, with a record you can replay later.
- Integer-only kernel, about 115 ns per decision in CI benchmarks (CodSpeed, Linux x86_64)
- Budgets that can't be overspent by two requests arriving at once
- Rust crate with
#![forbid(unsafe_code)], Python package via PyO3, and a WebAssembly build that runs in the browser: calybris.tech
Data validation for Pandas, Polars, PyArrow, CSV and Parquet, with a Rust core. It checks rules like "no missing names" or "ids are unique" without turning your data into Python objects, and stays inside a memory budget by spilling to disk.
pip install proofframeExact near-duplicate detection and record linkage for names: Rust core, Python API, CLI. A partition filter from the similarity-join literature (PASS-JOIN) plus bit-parallel edit distance, returning exactly the pairs an exhaustive comparison would. On 100,000 real UK company names: 136x faster than RapidFuzz, same 21,513 pairs; a persistent index answers single lookups against 800,000 names in 0.05 ms. Apache-2.0.
Languages : Rust, Python, SQL
Rust : Tokio, Axum, PyO3, maturin, rayon, WebAssembly
Data : Polars, Pandas, Apache Arrow, DuckDB, Parquet
ML : scikit-learn, LightGBM, XGBoost, SHAP, causal ML (uplift)
Testing : pytest, proptest, fuzzing, Loom, Miri, GitHub Actions on Linux/macOS/Windows
Full-time roles and contract work, remote worldwide or on-site in Türkiye:
- Speeding up Python with Rust extensions (PyO3)
- Data pipelines and cleanup: Polars, DuckDB, Arrow, scraping, reports
- Rust backend services (Tokio, Axum)



