{
  "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
  "basics": {
    "name": "Batuhan Durmus",
    "label": "Backend + LLM Systems Engineer · Journalism Technologist",
    "email": "batu@batu0.com",
    "url": "https://batu0.com",
    "summary": "Backend developer and systems builder with 3+ years of production experience delivering complete systems from scratch — architecture, scraping infrastructure, data pipelines, REST APIs, AI agent workflows, and cloud deployment in Python and Node.js. Scopes, builds, and hands off production-ready multi-service backends on GCP and AWS. Background includes 8+ years of investigative journalism (2015-2023) with OSINT research and data-driven reporting expertise. 5.0/5.0 rating on Upwork.",
    "location": {
      "region": "EU/UK/US timezones (remote)"
    },
    "profiles": [
      {
        "network": "GitHub",
        "username": "avakado0",
        "url": "https://github.com/avakado0"
      },
      {
        "network": "LinkedIn",
        "username": "batu0",
        "url": "https://linkedin.com/in/batu0"
      },
      {
        "network": "Upwork",
        "username": "batuhandurmus",
        "url": "https://www.upwork.com/freelancers/batuhandurmus"
      }
    ]
  },
  "work": [
    {
      "name": "Freelance — Upwork & private clients",
      "position": "Backend Developer & Systems Builder",
      "url": "https://www.upwork.com/freelancers/batuhandurmus",
      "startDate": "2023-12",
      "summary": "5.0/5.0 Upwork rating with $40K+ earned across freelance backend and scraping engagements. Builds complete multi-service backends from architecture through hand-off.",
      "highlights": [
        "VLM training-data pipeline for VNGRS (Dec 2025 – Jan 2026, ~295 commits): config-driven Python ingestion across HuggingFace, Kaggle, GitHub, scraped PDFs; resumable state machine on AWS EC2/S3.",
        "Bitcoin Analytics Platform — My Crypto Canvas (Dec 2024 – Dec 2025, delivered): 15+ microservices on Google Cloud Run; 80+ live data sources; LangGraph reflection workflows; 5-LLM-provider router with retries and backoff.",
        "AI Newsroom Automation (Oct – Dec 2025, delivered): 3-microservice cloud-native pipeline with dual discovery (Gemini Grounded Search + Perplexity Sonar), two-layer dedup, 5-persona LangGraph state machine, Vertex AI image and TTS.",
        "Icebreaker / Dolph backend (Jan – Feb 2026, delivered, ~177 commits): FastAPI + Gemini Live, deterministic state machine, approval-first trust model, frozen action contracts.",
        "Auth Token Extraction (Jul 2024): solved a California SOS portal authentication challenge that had stumped the client."
      ]
    },
    {
      "name": "Freelance — Upwork",
      "position": "Web-Scraping, Data Extraction & Automation Developer",
      "startDate": "2022-01",
      "endDate": "2023-12",
      "summary": "Entry into paid engineering work — scraping, crawling, and browser-automation projects for commercial, academic, and investigative clients. Established the 5.0/5.0 Upwork rating that the backend engagements continue to earn against.",
      "highlights": [
        "Production scrapers across real-estate, academic, crypto, government, and social-media targets using Scrapy, Selenium, lxml, BeautifulSoup, and Puppeteer.",
        "Twitter API parsers and bots with light NLP (NLTK, SpaCy).",
        "Rule-based crawlers, request-priority queues, rotating proxies, and randomized delays for anti-bot bypass.",
        "Notable builds: Ticketweb/Ticketmaster/Vividseats daily Scrapy runs; TAV airport flight archive; News archive scraper; Court Files Parser; HSBC bank statement PDF parser."
      ]
    },
    {
      "name": "EuroMed Rights",
      "position": "Subject Matter Expert (Contract)",
      "startDate": "2023-11",
      "endDate": "2024-05",
      "summary": "Contract that grew out of my personal BitzeOOP judicial-appointments project. After roughly 700 hours of solo data-engineering on the pipeline, EuroMed Rights picked it up and commissioned deliverables for their research programmes on judicial independence and human-rights conditions in the Euro-Mediterranean region. The bridge between journalism and backend-engineering is the BitzeOOP project itself; this contract was the first external pickup of it.",
      "highlights": [
        "Personal BitzeOOP project (60K+ judicial appointments over 13 years, Neo4j-backed graph) extended under contract into deliverables consumed by EuroMed research output.",
        "Statistical analyses informed 2 published investigative reports."
      ]
    },
    {
      "name": "Investigative Journalism (composite)",
      "position": "Investigative Journalist · OSINT Researcher · Trial Observer",
      "startDate": "2015-06",
      "endDate": "2023-09",
      "summary": "Eight years of fieldwork before the code. Fixer, news producer, freelance reporter, and trial observer for international outlets and human-rights organisations.",
      "highlights": [
        "Trial Observation Programme Officer — Amnesty International Turkey (Oct 2019 – Sep 2023): four years observing court hearings on free speech, press freedom, and impunity.",
        "Investigative Research Scholarship — P24 Independent Journalism Foundation (Jun 2019 – Feb 2021): 1 of 4 scholarship winners. Istanbul taxi industry investigation via 50+ FOI requests to 8 state institutions; published in T24.",
        "Freelance News Producer (Fixer) for The Guardian, The Financial Times, The Daily Telegraph, Trouw, NRC Handelsblad, NOS Radio, Der Tagesspiegel, RTL News, Middle East Eye, Il Manifesto.",
        "Turkey & Middle East Consultant / News Producer — The Yomiuri Shimbun (Jun 2015 – Dec 2018): reports under coup, post-terror, and state-of-emergency conditions; collaboration with Cairo, Jerusalem, Tehran, and Rome offices.",
        "Contributor to \"De autoritaire verleiding\" by Casper Thomas (2018), on authoritarian regimes."
      ]
    }
  ],
  "education": [
    {
      "institution": "Bogazici University",
      "url": "https://www.boun.edu.tr/",
      "area": "Sociology",
      "studyType": "B.A.",
      "endDate": "2019",
      "summary": "Entered ranked 77th of ~2M on the national university entrance exam. Financed via Top 100s' Scholarship and TÜBİTAK 2205 License Scholarship Programme."
    },
    {
      "institution": "Nilufer Science High School, Bursa",
      "area": "Science track (full scholarship, rank 2,300 of 1.2M on 2007 OKS)",
      "studyType": "High School",
      "summary": "First programming exposure (C)."
    },
    {
      "institution": "P24 Independent Journalism Foundation",
      "area": "Investigative Journalism Scholarship",
      "studyType": "Scholarship",
      "endDate": "2019"
    },
    {
      "institution": "Udemy & Coursera (140+ courses)",
      "area": "Python, Data Engineering, NLP, Deep Learning Specialization, LangGraph / LLM Agents, Web Scraping, API Development, Software Architecture, Intelligence Analysis, Knowledge Graphs",
      "studyType": "Continuing Education"
    }
  ],
  "skills": [
    {
      "name": "Backend & APIs",
      "keywords": [
        "Python",
        "Node.js",
        "TypeScript",
        "FastAPI",
        "Django REST Framework",
        "Flask",
        "Express.js",
        "REST",
        "WebSocket",
        "OpenAPI",
        "OAuth"
      ]
    },
    {
      "name": "AI / LLM Systems",
      "keywords": [
        "LangChain",
        "LangGraph",
        "OpenAI API",
        "Gemini API",
        "Claude API",
        "Model Context Protocol",
        "Vertex AI",
        "Retrieval-Augmented Generation",
        "FAISS",
        "Sentence Transformers",
        "multi-agent orchestration",
        "PyTorch",
        "TensorFlow"
      ]
    },
    {
      "name": "Architecture",
      "keywords": [
        "Microservices",
        "event-driven systems",
        "caching strategies",
        "multi-layer storage",
        "idempotent execution",
        "deterministic state machines"
      ]
    },
    {
      "name": "Web Scraping & Automation",
      "keywords": [
        "Scrapy",
        "BeautifulSoup",
        "lxml",
        "Selenium",
        "Puppeteer",
        "XPath",
        "CSS selectors",
        "anti-bot bypass",
        "proxy management"
      ]
    },
    {
      "name": "Databases",
      "keywords": [
        "PostgreSQL",
        "MySQL",
        "MongoDB",
        "Redis",
        "Neo4j",
        "SQLite"
      ]
    },
    {
      "name": "Cloud & Ops",
      "keywords": [
        "Docker",
        "Docker Compose",
        "Google Cloud Run",
        "GCP API Gateway",
        "GCP Secret Manager",
        "Cloud Scheduler",
        "Firebase Admin SDK",
        "AWS EC2",
        "AWS S3",
        "AWS Lambda",
        "Stripe"
      ]
    },
    {
      "name": "Blockchain & Smart-Contract Auditing",
      "keywords": [
        "Solidity",
        "Hardhat",
        "Foundry",
        "OpenZeppelin",
        "Halmos formal verification",
        "Solodit"
      ]
    }
  ],
  "languages": [
    {
      "language": "English",
      "fluency": "Professional Working Proficiency"
    },
    {
      "language": "Turkish",
      "fluency": "Native"
    },
    {
      "language": "Latin",
      "fluency": "A1"
    },
    {
      "language": "Ottoman Turkish",
      "fluency": "Low-level reading"
    }
  ],
  "projects": [
    {
      "name": "VNGRS — VLM Training-Data Pipeline",
      "startDate": "2025-12",
      "endDate": "2026-01",
      "description": "Config-driven Python pipeline for vision-language-model training-data ingestion across HuggingFace, Kaggle, GitHub, and scraped PDFs. Resumable state machine on AWS EC2/S3. ~295 commits.",
      "keywords": [
        "Python",
        "AWS",
        "state machine",
        "data pipelines"
      ],
      "url": "https://batu0.com/case-studies/vngrs"
    },
    {
      "name": "Icebreaker / Dolph — Browser-Automation Agent Backend",
      "startDate": "2026-01",
      "endDate": "2026-02",
      "description": "FastAPI + Gemini Live backend for an AI-powered Chrome extension. Deterministic state machine with approval-first trust model, immutable action contracts, idempotent execution. ~177 commits.",
      "keywords": [
        "FastAPI",
        "Gemini Live",
        "state machine",
        "Chrome extension"
      ],
      "url": "https://batu0.com/case-studies/dolph"
    },
    {
      "name": "My Crypto Canvas — Bitcoin Analytics Platform",
      "startDate": "2024-12",
      "endDate": "2025-12",
      "description": "15+ microservices on Google Cloud Run, 80+ live data sources, LangGraph reflection workflows, a 5-provider LLM router with retries and backoff. WebSocket streaming, Redis caching, GCP API Gateway authentication.",
      "keywords": [
        "Microservices",
        "Google Cloud Run",
        "LangGraph",
        "WebSocket",
        "Redis"
      ]
    },
    {
      "name": "TBMM Observation Engine",
      "startDate": "2025-01",
      "endDate": "2025-04",
      "description": "Turkish Grand National Assembly observation pipeline reading the daily parliamentary record (tutanak). Scrapy with Puppeteer middleware. ~68 commits. Successor to the earlier MPs performance-stats scraper.",
      "keywords": [
        "Python",
        "Scrapy",
        "Puppeteer",
        "OSINT",
        "civic data",
        "TBMM"
      ]
    },
    {
      "name": "Turkish Parliament MPs performance-stats scraper / Parliamentary Data Analytics Platform",
      "startDate": "2021-12",
      "description": "The first coding project after the journalism pivot. Scraper extracting question proposals, research proposals, parliamentary questions, and MP resumes from the Turkish parliament website (item pipelines aggregating parallel pages), plus an analytics layer calculating performance metrics for MPs and political parties. Later commercialized.",
      "keywords": [
        "Python",
        "Scrapy",
        "OSINT",
        "civic data",
        "TBMM"
      ]
    }
  ],
  "meta": {
    "canonical": "https://batu0.com/me.json",
    "version": "1",
    "lastModified": "2026-04-30"
  }
}
