Pulkit Chawla

A production of one engineer · Eindhoven, Netherlands · 2026

Pulkit Chawla

Builds AI systems that run in production, and the tests that keep them honest.

Six years running cloud data platforms at Oracle and Qubole. An MSc in Data Science and AI at TU Eindhoven. Seven systems of my own built this year and still running; each one is a scene below, including the part that nearly broke it.

Now showing available immediately · no notice period · no work permit needed

  • 6years running cloud data platforms at Oracle and Qubole
  • 200+customer accounts on the cluster backend I co-owned
  • 7systems of my own, built this year and still running
  • 2025MSc in Data Science and AI, TU Eindhoven
REEL 1

Now showing

I'm in Eindhoven, working freelance on agent systems, and looking for a full-time engineering role in the Netherlands.

Availability
Immediate, no notice period
Based in
Eindhoven, Netherlands
Work authorisation
Full access to the Dutch labour market, no work permit needed
Relocation
Open to anywhere in the Netherlands, hybrid preferred
Looking for
AI engineer, ML platform or backend roles where I own the service end to end
Languages
English (fluent), Hindi (native), Dutch (learning)
REEL 2

Scenes

Seven scenes from this year. Each is a system I built and still run. The frame shows it working; the text says what it does and where it nearly broke.

  • Pocket on a phone: the home screen with projects, to-dos and outreach, and a chat where the agent found why a forecast page was slow, fixed it and deployed a preview

    Feature presentation

    Pocket

    My coding agents, run from my phone, with one memory of my work

    private repo

    Pocket runs Claude Code, OpenAI Codex and Gemini on my own Mac and turns each project into an app I open from my phone. A router reads WhatsApp, mail and app notifications, sorts each message into a project, and writes self-contained instructions for the agent that picks it up. Anything that edits, sends or deletes waits for one tap on the phone.

    The twist: running out of usage halfway through a task. When one engine hits its limit, the chat moves to the next one with the recent conversation, so the work does not stop. Nothing listens on the public internet; the phone reaches the Mac over a private network.

    Node.js and SQLite, 15,000 lines, in daily use. A local memory of conversations, dated facts and a short portrait, searched by keywords, local embeddings and a fact graph.

    • Node.js
    • SQLite
    • Claude Code
    • Codex
    • Gemini
    • Tailscale
  • Water, a private AI workspace: a chat that planned a student-budget Saturday in Utrecht, with the Water and Flow modes and the model picker

    Feature presentation

    Water

    A private AI workspace on my Mac: local, rented-GPU or subscription models behind one app

    private repo

    A browser app with two modes: Water, a plain chat, and Flow, a chat with its own folder that builds and runs things. Behind it, separate services load open-weight models on this Mac or on rented GPUs when needed, run Flow's commands inside the chat's folder or in Docker, search the web, and score models and agent harnesses against each other.

    The twist: models are big and slow to load, so the app never owns them. A connector service holds them and unloads them when idle, and restarting the app leaves them loaded. Chats are encrypted at rest.

    Python, eight services kept alive by launchd, with a dashboard for health, logs and a live map of services and their connections.

    • Python
    • Agno
    • llama.cpp
    • Vast.ai
    • Docker
    • Claude
  • A weather app built by the AI team, running: each pipeline piece (parse-place, geocode, forecast, respond) shown with its output and whether it was cached or fetched

    devteam

    AI agents write the software; a separate checker decides if it is good enough

    thispc/devteam

    Each module is defined by a contract: the functions it must expose and what they take and return. An agent writes the code, the code is built in a container with no network, twice, and it is judged by tests the agent never saw. Only then does it ship.

    The twist: once an agent has read the tests it is graded by, those tests stop telling you anything. The hidden ones caught real bugs the visible suite had passed.

    Ran end to end with no human intervention: an AI manager derived the contracts, delegated the work and shipped every module through the checker. A content-addressed cache turns a repeat build into a 45 ms hit instead of a 6.3 s rebuild.

    • Node.js
    • TypeScript
    • Docker
    • Claude Agent SDK
  • Modeldecides the next stepAccessibility treereads the screen, no screenshotsReal cursorhuman-speed inputThe appKeychainplaceholders onlythe model never sees a real password

    HumanHands

    An assistant that operates a Mac the way a person does

    thispc/humanhands

    It reads the screen through the macOS accessibility tree instead of screenshots, so the coordinates are exact and no image of your screen leaves the machine. Then it moves the real cursor along a human path and types at human speed, in any application.

    The twist: keeping passwords away from the model without making it useless. They stay in the Keychain and reach the model only as placeholders, filled in at the last instant after the site has been checked.

    Native Swift across 10 SwiftPM targets. 135 tests, run off-device.

    • Swift
    • SwiftUI
    • Accessibility API
    • CoreGraphics
    • Keychain
    • Claude
  • Mail inReaderno tools at allclean summaryActorhas tools, never raw mailDraftone tap: senda message cannot talk its way into an action

    Personal email agent

    Reads my mail and messages, drafts replies, sends nothing without my tap

    thispc/nanoclaw

    Built on the open-source NanoClaw runtime, small enough to audit in an evening. It answers from my phone over iMessage, keeps what it knows about me in plain files I can read and correct, and runs as three background services on my own hardware.

    The twist: anyone who emails me can try to talk the agent into something. So the part that reads mail has no tools, the part with tools never sees raw mail, and every outgoing message stops at a one-tap approval that sends exactly the draft I saw.

    Three daemons, running 24/7. iMessage channel and plain-file knowledge base added to the upstream runtime.

    • TypeScript
    • Node.js
    • Claude Agent SDK
    • Docker
    • SQLite
  • trader-automata: the Assets and Strategies screen, one strategy per instrument with quantity, limit and an on/off switch

    trader-automata

    One trade decision, mirrored across many brokerage accounts

    thispc/trader-automata

    What the copy-trading desks in India run: one signal fanned out to many accounts at once. It turned out to be a distributed-systems and compliance problem rather than a trading one. What matters is that every order is traceable and the thing stays up.

    The twist: partial failure is normal. One account rejecting an order must never undo another account's fill, so every child order carries an idempotency key and every step is appended to a ledger, never overwritten.

    Paper, connect and live stages. Deployed behind HTTPS on a static IP with a live Angel One account. 33 tests.

    • Python
    • FastAPI
    • SQLAlchemy
    • Next.js
    • TypeScript
    • Docker
  • jobhunt dashboard: countries scanned, days to target and to permit expiry, applications by stage, last scan

    jobhunt

    The system running my own job search

    private repo

    It scans postings from nine applicant-tracking APIs and the job boards, reconciles employers against the 12,900-entry Dutch sponsor register, tailors the CV to each posting, fills the application forms and tracks every reply and follow-up in one dashboard.

    The twist: keeping it honest. Every line a tailored CV makes must trace back to a verified fact in one profile file, so the system cannot invent a number to match a posting.

    Python, FastAPI and SQLite, 250 tests. Playwright drives the forms; a linter blocks generic phrasing before anything is sent.

    • Python
    • FastAPI
    • Playwright
    • SQLite
    • Claude Code
REEL 3

Credits

  1. Jan 2026 to now

    Independent AI and software engineer

    Freelance and personal projects, Eindhoven

    • Designed and shipped seven systems of my own, each a scene above, alongside client work.
    • Built a WhatsApp AI assistant for an Eindhoven student food-catering business (Twilio, Gemini and Gemma, FastAPI on DigitalOcean). It handles orders, meal selection, leave days and billing questions.
    • Built an Instagram reel fact-checker: a FastAPI and RAG backend on a Meta business account. A user forwards a reel and checks its claims in the same thread.
  2. Jan 2025 to Nov 2025

    Graduate AI Researcher (MSc thesis), MLOps and Computer Vision

    Eindhoven University of Technology, IMAGEN Programme

    • Built the MLOps platform behind IMAGEN, a Dutch government-funded animal-welfare research programme run by TU/e, Wageningen University and Hendrix Genetics.
    • Combined ClearML experiment tracking, SLURM scheduling and PiCaS task distribution into one workflow, with reproducible runs in Singularity containers.
    • Wrote a FAIR data pipeline that converts heterogeneous farm video into HDF5 with embedded metadata. Training throughput nearly doubled, from 112.3 to 217.4 images per second with eight data-loading workers, because the GPU stopped waiting for data.
    • Exposed the pipeline through a web UI and REST API so researchers could fine-tune detection models without logging into the HPC cluster. Per-animal bounding boxes fed behavioural analysis such as feeding-order dominance.
  3. Dec 2023 to Dec 2024

    Software Developer (part-time), Digital Twin Team

    Eindhoven AI Systems Institute (EAISI), TU/e

    • Built the FastAPI backend and Nuxt.js frontend of a digital twin of the TU/e campus, streaming live sensor data (temperature, humidity, occupancy) into a Unity 3D replica.
    • Modelled the campus as a graph database (building, room, sensor, readings) for room-level analytics and scenarios such as virtual fire-evacuation drills.
  4. Jan 2021 to Aug 2023

    Member of Technical Staff, Big Data Service

    Oracle Cloud Infrastructure, Bangalore

    • Sole owner of the customer-facing console of OCI Big Data Service in a team of about 30 engineers. Built, tested, released and operated the Node.js UI used to manage Hadoop clusters, and trained other engineers to take it over before leaving.
    • Owned the Hive and HBase distributions: forked upstream, set up TeamCity pipelines that built and deployed every PR to staging, and back-ported upstream CVE fixes. Enterprise customers leaving Cloudera required patched builds.
    • Built control-plane features in Java Spring that exposed a per-cluster Ambari UI to customers over secure networking, replacing Cloudera Manager for migrating customers.
    • Served in the production on-call rotation, resolving P0 and P1 incidents with the US-based support and architecture teams.
  5. Jan 2018 to Dec 2020

    Software Engineer, then Software Engineer II, Cluster Orchestration

    Qubole (acquired by Idera), Bangalore

    • One of three engineers owning the cluster-orchestration backend of Qubole's big-data platform: Hadoop, Spark, Presto and Hive clusters inside customer accounts on AWS, Azure and OCI.
    • Built secure tunnels between Qubole's control plane and clusters in customers' own cloud accounts, so customers could operate their clusters directly from the UI.
    • Added Datadog monitoring for cluster metrics and Jenkins QA pipelines that gated every release on client-specific integration tests across staging and production.
    • After the Idera acquisition, built StarPortal single-handedly (Moleculer.js, TypeScript, Node.js): an internal support portal with Splunk log ingestion and time-scoped Elasticsearch links. Support and sales could diagnose customer issues without waiting for a backend engineer.
REEL 4

Cast and crew

Languages

  • Python
  • TypeScript / JavaScript
  • Java
  • Swift
  • SQL
  • Bash

AI and ML

  • LLM agents (Claude Agent SDK)
  • RAG and vector search (FAISS)
  • LangChain
  • PyTorch
  • Computer vision (detection, tracking)
  • Fine-tuning
  • Model serving and inference services
  • ClearML
  • Prompt-injection defences

Big data and cloud

  • Hadoop
  • Spark
  • Presto
  • Hive
  • HBase
  • AWS
  • Azure
  • OCI
  • Docker
  • Kubernetes

Backend and tooling

  • FastAPI
  • Spring
  • Node.js
  • Next.js / Nuxt.js
  • REST APIs
  • SQLAlchemy
  • Jenkins
  • TeamCity
  • GitHub Actions
  • CI/CD
  • SLURM
  • Singularity
  • Datadog
  • Splunk
  • Elasticsearch
  • Playwright
REEL 5

Education

  • MSc Data Science and Artificial Intelligence

    Eindhoven University of Technology, 2023 to 2025

    Thesis: an MLOps and computer-vision pipeline for precision livestock farming in the IMAGEN programme.

    Summer research 2024: retrieval-augmented question answering over academic documents with LangChain, the OpenAI API and FAISS, benchmarked against BM25 and TF-IDF baselines.

  • BE Information Technology

    Birla Institute of Technology, Mesra, 2014 to 2018

    CGPA 8.37, First Class with Distinction

    Summer 2017: real-time pedestrian detection at Illinois Institute of Technology, Chicago. Fine-tuned a Single Shot MultiBox Detector (VGG-16 backbone) on the Caltech Pedestrian dataset.

REEL 6

Post-credits scene

Stay for this bit. Email is the fastest way to reach me: pulkitchawl@gmail.com