$ whoami

Hataf Atif

I wire things up.

Mostly systems that have to keep working when a teacher in a village opens WhatsApp at 7am. FastAPI, Postgres, WhatsApp Cloud API, agent tooling, and the unglamorous plumbing between them.

// How it works underneath, and what that choice cost. Press m to switch sides.

$ cat work/*.md

Dars

درسprivate repo2026 — now

Orenda Project · Taleemabad

A FastAPI + Supabase service that exposes lesson-plan generation as an API, with @dars/client and @dars/react so regional teams integrate against a key instead of forking a codebase. The chapter planner is buffer-budgeted and re-plannable: holidays and exam periods change the plan rather than invalidating it. Lesson plans generate per slot, on demand.

  • Chapter Planning Engine — LLM planner grounded in explicit planning principles
  • Buffer-budgeted, re-plannable class paths; holidays and exam periods as first-class inputs
  • Per-slot lesson plans and formative assessments generated on demand
  • Multi-tenant org API keys — including the cross-tenant key-leak fix on signup
  • Playwright e2e harness, Bruno request collections, ADRs for the decisions that stuck
57 PRs merged in one month2 npm packages
FastAPISupabaseTypeScriptReactRailwayPlaywright

NIETE-Rumi

private repo2026 — now

Orenda Project × National Institute of Education

WhatsApp Cloud API bot: interactive list menus, Flows for multi-select quiz questions, and session state that survives a force-close in the Android wrapper. Training rules — levels, attempt ceilings, pass marks, cooldowns — resolve from one source of truth instead of three. Certificates are PDFs minted on demand; R2 media is presigned inline so training videos play in the thread.

  • Training levels with exams, MSQ quizzes over WhatsApp Flows, and varied questions per attempt
  • Certificate PDFs minted on demand and delivered in-thread
  • Reflective coaching conversations, with slash commands that reliably end them
  • Portal sessions that survive a hard refresh and an Android force-close
  • Play releases, versionCode discipline, named release artifacts
102 commits38 PRs merged
Node.jsWhatsApp Cloud APICloudflare R2AndroidPostgres

Agent skill packs

private repo2026

Orenda Project · Taleemabad

A skill pack that gives every team's coding agent working Slack and Notion access — per-team tokens, ten-minute setup. Rewrote slack-search to route point lookups directly rather than iterating: roughly 20% fewer tool hops at equal correctness. Also a worldmap skill that de-collides labels and picks label contrast per region automatically.

  • Per-team token model — no shared credentials, no central bottleneck
  • slack-search point-lookup routing: ~20% fewer hops at equal correctness
  • worldmap skill: automatic label de-collision and per-region contrast
~20% fewer tool hops in Slack search
Claude Agent SDKMCPSlack APINotion APIPython

An MCP server that decodes mixfont ghost-font videos. The message is hidden in a field of random dots — every individual frame is pure noise, and the text only exists in the difference between frames. It recovers the signal across time, then serves the answer as a tool an agent can call.

  • Temporal integration across frames to recover a signal absent from every still
  • Ships as an MCP server — your agent calls it, you don't run anything by hand
  • Self-installing: point an agent at SETUP.md and it registers itself
PythonMCPOpenCV

Orchestration harness

private repo2026

A Slack + Notion + GitHub harness that runs my personal projects. It provisions its own Notion database schema on setup, then reconciles issues, agent runs and status back to a single board.

  • Provisions the full Notion database schema during setup
  • Slack as the control surface, GitHub as the source of truth
ShellNotion APISlack APIGitHub API

EasyDost data platform

private repo2023

EFT

A DynamoDB → RDS ETL pipeline, a serverless function extracting parts-of-speech and named entities from customer messages, an analysis layer on top of the result, and a websocket endpoint feeding realtime WhatsApp into a CSR inbox.

  • easydost_etl — DynamoDB to RDS, scheduled and idempotent
  • eft_pos_ner — serverless POS + named-entity extraction over message text
  • EasyAnalyst — the analysis layer the extraction fed
  • whatsapp-chat-backend — serverless websocket endpoint for the CSR inbox
PythonDynamoDBRDSspaCyWebSocketsJupyter

$ git log --format=timeline

  1. 2026 — now

    Orenda Project · Taleemabad

    Lesson-plan infrastructure (Dars) and a teacher-training bot running inside WhatsApp for the National Institute of Education. Agent tooling for the teams around me: skill packs, harnesses, MCP servers.

    FastAPI · Supabase · WhatsApp Cloud API · Claude Agent SDK · MCP

  2. 2025

    Orenda Project · Taleemabad

    Content authoring tooling, and the groundwork that Dars was later built on top of.

    TypeScript · React · Python

  3. 2024

    Product work, mostly Kotlin

    Kotlin backends with TypeScript frontends — OmenBoost, Carender. Dockerised Django on EC2 when something needed to just be up. Rebuilt my Neovim config from scratch in Lua, which is its own kind of engineering.

    Kotlin · TypeScript · Django · Docker · Lua

  4. 2023

    EFT · EasyDost

    The data side: DynamoDB→RDS pipelines, serverless POS and named-entity extraction over customer messages, an analysis layer on top, and realtime WhatsApp feeding a support inbox. Studied DSA and data engineering properly in parallel.

    Python · DynamoDB · RDS · NLP · WebSockets

  5. 2021 — 2022

    Teaching myself, in public

    Statistical learning ported from R to Python, SQL analysis projects, matplotlib and seaborn until the plots stopped being ugly, then The Odin Project and MDN for the web half. All of it committed, badly, in public.

    Jupyter · SQL · JavaScript · scikit-learn

$ cat now.md

LAST UPDATED AUGUST 2026

  • *Shipping training levels, exams and on-demand certificates in NIETE-Rumi — the WhatsApp side of national teacher training.
  • *Extending Dars: the chapter planner, formative assessments, and getting book import from taleemabad-core to behave.
  • *Retiring an old school app gracefully, which is a surprisingly delicate thing to do to software people depend on.
  • *Writing agent skills that measurably reduce tool calls rather than just adding capability.
  • *Running Odysseus on my own hardware and local models through Ollama.
  • *Taking Android APKs apart with Morphe patches and a decompiler, for no commercial reason whatsoever.

$ ls writing/

// nothing published yet. /writing is wired up and waiting.

$ ls ~/workshop

// Software I self-host, live in, or take apart. Other people's projects — listed because what you run says as much as what you write.

  • Odysseusself-hosted

    Self-hosted AI workspace — chat, agents, deep research, docs, mail, calendar. My daily driver, running on my own hardware.

  • Morphetinkering

    Android patching framework. I keep a patch workspace, a decompiler and a stack of APKs around for it.

  • Ollamalocal models

    Local models, mostly for the things I'd rather not send to an API.

  • Neovimeditor

    My config, in Lua, permanently half-finished by design.

$ ls archive/

  • minesweeperOOP and DSA revision, in TypeScript
  • custom-git-cloneRight-click-menu git clone, as a desktop-app experiment
  • linkedin-posterPosting, automated
  • omenboostKotlin backend, TypeScript frontend (2024)
  • carenderKotlin app and demo frontend (2024)
  • authoring-appContent authoring tool (2025)

$ cat contact

Open to interesting problems. Fastest way to reach me is email.

hataf.dev · Pakistan · press m to switch sides, 14 to jump