batu.

journalist → engineer

Before the code: 2015–2023 — news production and investigative support for Yomiuri Shimbun, the Financial Times, the Guardian, and European outlets including NOS and Trouw; four years of Amnesty International trial observation.

Started coding in late 2021 and by 2023 was shipping data-engineering for entrepreneurs, human-rights organisations, and research institutions. Now: backend systems, LLM agents, journalism tooling.

Remote · EU / UK / US timezones · /hire · /for-journalism

[01] batu@batu0:~/the-arc

Two careers that met in late 2023. Journalism and human-rights work (top), engineering (bottom), bridged by a personal judicial-data project (BitzeOOP) that EuroMed Rights later picked up as a contract.

  • Yomiuri Shimbun 2015/11–2018/12
  • P24 Investigative Research Scholarship 2019/06–2021/02
  • freelance press 2015/11–2019/10
  • Amnesty Trial Observation 2019/10–2023/09
  • Boğaziçi Uni — sociology 2012/09–2019/06
  • EuroMed Rights 2023/11–2024/05
  • scraping 2021/12–2023/12
  • data engineering 2022/09–2024/06
  • backend + LLM 2023/12–2026/04

[02] batu@batu0:~/work — backend, LLM, data pipelines

Browser port of the tui-breath terminal app. Static Astro site, plain TypeScript islands, hand-written canvas 2D renderer mirroring the Rust engine and animator layer. Pixel-art channel glyphs (nose / mouth) drawn from in-code bitmaps, no font/image deps. Auto-pause on tab hide, session persistence in localStorage, env-gated AdSense + MailerLite, GDPR consent middleware as a Cloudflare Pages Function. AdSense-funded, no signup, no tracking beyond aggregate analytics.

Astro · TypeScript · Canvas 2D · Cloudflare Pages · Vitest

Apr 2026 – ongoing (personal)

Terminal breathing guide (v0.2.0). Five-state machine (Menu→Setup→Session→Results→History), pure BreathingEngine (Copy struct), hand-written animation layer (Lerp / Typewriter / Pulse structs — no external dep). 30 FPS async loop, JSON session history. Interactive breath-hold mode with attempt count tracking. Published to crates.io.

Rust · ratatui · crossterm · tokio

Apr 2026 (personal)

Personal Forest-app clone built entirely solo. 4 FastAPI microservices (auth, session, tag, stats) behind Nginx, async PostgreSQL, JWT with auto-refresh and request queueing. React Native/Expo mobile app: offline-first SQLite sync, deterministic timer FSM corrected on foreground resume, forensic session logging (ms-precision), 6-stage SVG tree animation with tag-colour tinting, adaptive push notifications. ~87 commits.

React Native · FastAPI · PostgreSQL · Docker · Expo

May 2024 – present (personal)

End-to-end automated YouTube channel factory running 3 live channels across distinct niches. Telegram clusters, RSS feeds, and a pgvector RAG corpus feed a LangChain research + script pipeline (5 editorial voices); TTS synthesis drives FFmpeg/MoviePy video assembly; a Go upload service handles scheduling and publish. 15+ containerised microservices (Django DRF backend, React SPA). ~600 hours solo.

Python · Django · LangChain · FFmpeg · MoviePy · pgvector · Go · React · Docker

Config-driven, resumable Python pipeline ingesting from Hugging Face, Kaggle, GitHub, direct image URLs, and scraped PDFs into a single HuggingFace Arrow dataset. Deterministic sampler allocates toward a 10M-sample target; state machine, single-instance locks, AWS EC2/S3 execution. ~295 commits.

Python · HuggingFace datasets · Scrapy · pdf2image · AWS

Backend for an AI-powered LinkedIn Chrome extension using Gemini Live. Deterministic state machine, approval-first trust model, immutable action contracts, idempotent execution. ~177 commits.

Python · FastAPI · Gemini Live · Pydantic

My Crypto Canvas — Bitcoin analytics platform
Dec 2024 – Dec 2025 (delivered)

Sole backend engineer, first commit to production. 15+ microservices on Google Cloud Run — scraping layer, API connectors, data pipelines, caching, WebSocket streaming, and AI analytics. 80+ live data sources, multi-layer caching (Redis → MongoDB), LangGraph reflection workflows, 5-provider LLM router with retries and backoff.

Python · Node.js · Cloud Run · Redis · MongoDB · LangGraph

AI Newsroom Automation Crypto Nichesight — fully autonomous pipeline
Oct – Dec 2025 (delivered)

Autonomous crypto newsroom — discovers stories, writes articles in 5 distinct editorial voices, and ships them with cover art and audio digests, all without a human in the loop. 3-service pipeline: dual-discovery news fetch (Gemini Grounded + Perplexity Sonar), SHA256 + embedding dedup, 5-persona LangGraph generator gated by a Pydantic contract, Vertex AI imagery + Google TTS studio. Scheduled via Cloud Scheduler.

FastAPI · MongoDB Atlas · LangGraph · Vertex AI

Blockchain Auditor Tool
Ongoing, personal

Semi-autonomous smart-contract vulnerability auditor — Solidity, Rust, and C++. Python orchestrating Foundry + Halmos formal verification + Solodit and BlockThreat intel on EVM, with Rust and C++ contract coverage as well. Mermaid diagram output and structured reports.

Python · Foundry · Halmos · Solodit (EVM) · Rust + C++ contract analysis

WikiDoctus — Wikipedia API published on RapidAPI
Sep 2025

Two-service Wikipedia API product published on the RapidAPI marketplace. Contract-first OpenAPI design (openapi-generator skeleton + custom impl layer), infobox XPath parser (lxml), async concurrent multi-article fetch via asyncio.gather(). Backend on Google Cloud Run; load-tested with Locust on launch day.

Python · FastAPI · lxml · httpx · Docker · Cloud Run · Locust

TBMM Observation Engine — Turkish parliament daily-record pipeline
Jan – Apr 2025

Turkish Grand National Assembly observation pipeline reading the daily parliamentary record (tutanak). Scrapy with Puppeteer middleware; ~68 commits. Successor to the Dec 2021 MPs performance-stats scraper — same target, larger scope.

Python · Scrapy · Puppeteer

60K+ Turkish judicial appointments across 13 years, sourced from publicly available HSK government gazettes. Normalized from messy PDF/CSV sources into person-level career histories. Neo4j graph for people/posts/appointments/locations, transition and anomaly analyses. Commissioned by EuroMed Rights for 2 research programmes on judicial independence — the bridge piece between journalism and engineering.

Python · Neo4j · Pandas · PDF parsing

Event-ticket daily scrapers — Ticketmaster, Vividseats, Ticketweb
2022 (Upwork)

Daily-run Scrapy spiders for three commercial event-ticket platforms. Vividseats build includes a venue-level progress tracker, dual-stream CSV output (events + tickets), and a post-run Google Sheets push via gspread service account. Delivered as paid Upwork contracts.

Python · Scrapy · gspread · pandas

Parliamentary Data Analytics Platform — Turkish parliament MP performance metrics
Dec 2021

The first coding project after the journalism pivot. Scraper extracting question proposals, research proposals, parliamentary questions, and MP resumes from the Turkish parliament website, plus an analytics layer calculating performance metrics for MPs and political parties. Later commercialized.

Python · Scrapy

The beauty is not only in the end result of the net, but also in the crazy dance of spider, in netting potentially, crawling and dancing.
— b.a., on effort and meaning

[03] batu@batu0:~/earlier — journalism, OSINT, civil society

Before the engineering work, and alongside it. Investigative reporting, human-rights observation, and civil-society organising through the 2010s and early 2020s.

Subject Matter Expert — EuroMed Rights (Contract)
Nov 2023 – May 2024

Contract that grew out of my personal BitzeOOP judicial-appointments project. After roughly 700 hours of solo work on the pipeline, EuroMed Rights picked it up and commissioned deliverables for two research programmes on judicial independence. The bridge between journalism and engineering is the personal project itself — this contract was the first external pickup of it.

Trial Observation Programme Officer — Amnesty International Turkey
Oct 2019 – Sep 2023

Four years attending and reporting on court hearings involving free speech, press freedom, and impunity. Detailed reports, lawyer liaison, published explanatory articles, and internal-magazine pieces on court architecture and the principle of publicity.

Investigative Research Scholarship — P24 Independent Journalism Foundation
Jun 2019 – Feb 2021

1 of 4 scholarship winners. Investigated Istanbul’s taxi industry through 50+ FOI requests to 8 state institutions. Findings published in T24 (May 2021) and featured in a YouTube documentary.

Freelance News Producer (Fixer) — The Guardian · Financial Times · Daily Telegraph · Trouw · NRC · NOS · Tagesspiegel · RTL · Middle East Eye · Il Manifesto
Nov 2015 – Oct 2019

News projects for English, German, Dutch, and Italian outlets across Turkey and the Middle East. Contributor to De autoritaire verleiding (Casper Thomas, 2018) — research on authoritarian regimes in Turkey, Russia, Hungary, India, and Trumpian USA.

Turkey & Middle East Consultant / News Producer — The Yomiuri Shimbun
Nov 2015 – Dec 2018

Reports to Cairo HQ on political, economic, social, and cultural developments. Arranged interviews through coup, post-terror, and state-of-emergency conditions — including detainment experiences. Served the Cairo, Jerusalem, Tehran, and Rome offices; scheduled meetings for a biographical project on the Turkish president.

[04] batu@batu0:~/formative — education + languages

Education

  • Bogazici University, Istanbul — B.A. Sociology (2012 – 2019). Entered ranked 77th of ~2M nationwide; Top 100s’ Scholarship + TÜBİTAK 2205.

Languages

  • English — fluent · consecutive + simultaneous translation
  • Turkish — native