Avik Mukherjee

I build systems that have to survive reality. I like the problems where the easy implementation works at 10 users and falls apart at 10,000.

Currently building AI and security infrastructure at SuperAlign, in Hyderabad: ingestion for large endpoint fleets, the pipelines behind it, and the data layer underneath.

On my own time I ship things I wanted to exist: mindstate pgxray markdown-to-video. And I rebuild systems to understand them: job queues, a Kubernetes control plane, erasure coding. Then I write down what broke.

Focus

Distributed systems
Queues, workers, transactional boundaries, idempotency, partitioning, backpressure, failure recovery.
AI infrastructure
Asset discovery and inventory, risk assessment, telemetry pipelines, and processing large volumes of endpoint data.
Security
Cross-platform scanners, browser extension management, MDM rollout, and risk analysis across macOS, Linux and Windows.
Data systems
PostgreSQL, ClickHouse, DuckDB, streaming and object storage. The interesting part is deciding where data lives and how much work happens synchronously.
SuperAlign AI (current)2025 — now
Software Engineer, Backend

Backend services, endpoint scanners and ingestion for discovering and governing AI assets across enterprise fleets. Most of the work is taking expensive, failure-prone computation off the critical path: idempotent ingestion, partition-aware workers, Postgres locking semantics, and a DuckDB pipeline that chews ~70GB of logs in ~4 minutes.

DataFoundry AI2024 — 2025
Trainee Engineer

Azure Data Factory pipelines with parameterised queries and Blob Storage, CSV-to-RDF conversion, and the frontend half of role-based access control.

Dank2023 — 2024
Mobile Developer Intern

Built most of a React Native app on Expo and cut page load times by 40% through API integration work.

Frontend Developer Intern

Redux state management and Cypress automation, which took manual testing down by half.

Projects

Writing

All 29 posts →

Approach

Generating code got cheap. Deciding whether it is correct did not. So I spend my attention on the parts a model cannot hand me.

  1. Start with constraints. Latency, throughput, consistency, durability, cost, and what happens when it breaks. A model will build the wrong thing very quickly if nobody has said what right means.

  2. Prefer the simplest architecture that survives them. Complexity is not sophistication. If Postgres is enough, use Postgres. If a queue is necessary, be able to say why out loud.

  3. Measure before optimizing. A benchmark beats an opinion, and it beats a confident paragraph from a model.

  4. Design for failure. Networks fail, workers die, requests retry, payloads duplicate, deploys go wrong. Generated code almost always assumes the happy path.

  5. Understand the abstraction. I use high-level tools constantly, but I want to know enough of what sits underneath to debug it when it leaks. That is the skill that survives the tooling changing.

Connect

If you're working on hard problems in infrastructure, AI systems, security or developer tooling, I'd like to hear about it.

Find me on GitHub, X, LinkedIn or Peerlist, or just email me.