I'm an AI product engineer based in İzmir. I build software products end to end: I shape what a product should do, lead the team that builds it and write the code, with AI in every step. I'm finishing my Software Engineering degree at Fırat University. Portfolio · LinkedIn
Products I built end to end. Each one runs in the browser with synthetic data and ships with tests.
| Project | What it does | Stack | Links |
|---|---|---|---|
| Folio | Double-entry bookkeeping in the browser: journal, ledger, statements, invoices, VAT, currency revaluation and year-end close, in the international or Turkish chart of accounts | Next.js | Demo · Code |
| Quarry | Ask a database in English or Turkish and get readable SQL, charts and checks: its own text-to-SQL engine with SQLite in the browser | Next.js | Demo · Code |
| Tally | Reads invoices, receipts and bank statements in the browser: OCR, VAT and balance checks, payment matching, Excel export | TypeScript | Demo · Code |
| Relay | AI support assistant that answers from help articles with sources and hands off to a person when unsure | Next.js | Demo · Code |
| Atlas Portal | Admin dashboard and client file portal with roles, quotas, share links and an activity log | Next.js | Demo · Code |
| Cadence | Salon booking page with real-time availability and a drag-to-reschedule staff calendar | Next.js | Demo · Code |
| Fieldline | Field-service app for technicians with checklists, signatures, van stock and offline sync | Flutter | Demo · Code |
| PDF to Excel | Turns tables in PDF reports into clean, formatted Excel workbooks | TypeScript | Demo · Code |
| Lead Scraper | Daily crawler that turns a business directory into a clean Excel lead list | Python | Demo · Code |
With team Innosoft I took 1st place in Elazığ at the 2022 NASA International Space Apps Challenge, with Wink to the Future, a Flutter app built in 48 hours. Repository · Demo
I also fix bugs in the tools developers use every day. These cards rebuild themselves from the GitHub API every few hours.
Highlights
| Project | Contribution |
|---|---|
| Grafana | Kept trace resources apart when exporting a trace as OTLP JSON |
| Nuxt | Fixed the scroll offset for anchors whose IDs start with a number |
| Gitea | Commit-to-user matching with empty emails; inline math parsing |
| uutils coreutils | GNU-compatibility fixes in Rust across sort, od, ls, cut, join, split and more |
| oxc | ESLint rule fixes in the Rust linter |
| OpenTelemetry JS | Recorded every GC entry in the Node runtime instrumentation |
| devenv | Process startup, file watcher and PATH fixes; detach from the TUI with q |
| Harper | New grammar rules for the Rust grammar checker |
| ts-proto | Features and fixes in the protobuf-to-TypeScript generator |
| repowise | Code analysis: type inference for C#, Kotlin and Swift, dead-code roots |

