AI Product & Platform Engineer

Dinesh Swain

I build AI products and the platform they run on.

TypeScriptAgentic AI (Mastra, LangChain, AI SDK)GoAWSTerraformPostgreSQLKafkaRust
01

About

Software engineer who ships production AI products end-to-end — LLM agents, RAG, agentic workflows — and owns the AWS platform, databases, and billing beneath them. Currently at a YC startup whose AI presentation software is used by leading global consulting firms and Fortune 500 enterprises.

I'm particularly interested in AI systems, distributed architecture, information retrieval, and tools that help people think and create more effectively.

02

Experience

Founding Software Engineer

Slidely AI (YC 2022)

May 2024 – Present

AI presentation software used by leading global consulting firms and Fortune 500 enterprises. I work across the LLM-agent generation pipeline, the PowerPoint add-in, and the full AWS platform, database, and billing underneath.

  • Built LLM-agent workflows for natural-language slide editing and enhancement — quality checks and visual/content generation via tool-calling and agent orchestration.
  • Wrote a reusable TypeScript streaming chunk-accumulator that parses live-streamed model output into text, images, and slide artifacts for real-time rendering.
  • Single-handedly migrated the platform to a Terraform-provisioned AWS stack (ECS/ECR, private VPC, S3 via Mountpoint, ASG auto-scaling) with GitHub Actions CI/CD and blue-green, zero-downtime deploys — ending the prior setup's load crashes.
  • Own the Supabase (Postgres) database end-to-end — schema, migrations, multi-tenant auth, and row-level security; ran a zero-downtime cutover during the migration.
  • Built the Stripe billing system — B2C and B2B plans, invoicing, and a custom prepaid credit system (cron-driven monthly grants) with AWS SQS webhook processing.
  • Designed ephemeral, isolated AWS sandboxes that AI agents run inside, provisioned on demand from pre-built images so a fresh environment is ready in seconds.
  • Instrumented OpenTelemetry across every client and service for distributed tracing and structured logging, with PostHog as the observability backend.
  • Built PowerPoint add-ins and desktop integrations that talk to backend AI services from inside Office, maintaining reliability across PowerPoint versions.
TypeScriptNode.jsC#VB.NETPythonAWSTerraformPostgreSQLSupabaseKafkaRedisStripeOpenAI & Gemini APIsOpenTelemetryPostHog

Graduate Engineer Trainee

Vodafone Intelligent Solutions (VOIS)

Aug 2023 – Apr 2024

Graduate engineer on internal enterprise tooling — front-end features and backend REST services.

  • Built React front-end features and integrated REST APIs with Java, Spring Boot, and SQL.
  • Developed an internal monitoring system with automated health checks and alerting.
ReactJavaSpring BootSQL
03

Projects

MetroSim

Featured
GitHub

A ride-hailing dispatch simulator that runs matching policies against identical demand on San Francisco's road network, with paired statistics behind every number.

Loads San Francisco from OpenStreetMap (240k nodes, 441k edges after keeping the strongly connected part), routes with weighted A*, indexes idle drivers in H3 cells, and generates seeded Poisson demand. It compares greedy matching, which gives each request the nearby driver who can reach it soonest, against batch matching: a 3s window solved with the Hungarian algorithm. Every trip event goes over an in-process bus or Kafka, feeding Parquet traces, Prometheus and Grafana, and a live Leaflet map.

240k nodes / 441k edges

OSM graph

p50 1.8 ms · p95 18 ms

A* on the full graph

+1.4 s at 1x, −103 s at 2x

Batch minus greedy, mean wait

−35 s wait, 29% empty driving

Repositioning

The details

  • Batching only pays off under load. At normal demand it's 1.4 s slower in all 10 paired seeds (95% CI +1.1 to +1.7 s). At twice the demand it cuts the mean wait by 103 s (−157 to −49 s) and wins every seed.
  • An earlier version showed batch 16 s faster at normal demand. The gap came from greedy ranking drivers by straight-line distance, and it vanished once both policies ranked by routed pickup time.
  • Sending idle cars toward recent demand cuts waits by 35 s. The report also shows the cost: 29% of all driving is empty.
  • Weighted A* keeps routes within 3x of optimal by construction. They average 11% above optimal, and the p95 search takes 17 ms against 141 ms for admissible A*.
  • Kafka consumers commit only after a Parquet file is synced to disk, rebalances wait for the batch in hand, and trace-writer replicas skip each other's trips. When the broker is down, the simulator drops events and keeps running.
  • The Hungarian solver is checked against brute force on 50 random matrices plus seven edge cases. Each experiment report records the command and commit that produced it.
GoKafkaH3ProtobufPrometheusGrafanaDuckDBParquet

CallFlow

A voice AI agent that answers phone calls — listens, decides, and speaks back — with the same tools served over voice and text.

A LiveKit/WebRTC voice agent running an STT → LLM → TTS loop, with a shared tool surface (common Zod schemas) exposed over both voice and text. Tool calls drive a BullMQ + Postgres workflow, cross-call memory is backed by mem0, and a promptfoo eval suite scores the agent across four models on intent, tool-argument extraction, and prompt-injection refusal.

TypeScriptLiveKitWebRTCBullMQPostgresmem0promptfoo

GoMapReduce

A from-scratch Go implementation of the MapReduce paper — with the fault-tolerance the paper hand-waves.

Runs across containers with no shared filesystem (workers shuffle intermediate files over HTTP). Handles the hard cases: task reassignment, duplicate-execution guards, atomic intermediate writes, and recovery when a worker holding finished map output dies. The single master snapshots state to disk (fsync-durable) and resumes; an optional combiner cuts shuffle bytes ~24,000×. Prometheus metrics, structured logs, and a partial Raft path.

Gonet/rpcgRPCDockerPrometheusRaft

IronKV

A Redis-like in-memory key-value store in Rust — RESP2, TTL, and durable AOF persistence.

A single-node KV store that speaks a subset of RESP2 (redis-cli works against it), with per-key TTL (lazy + sampled active expiration) and an append-only file using length-prefixed, binary-safe framing that survives restarts. Tokio RwLock concurrency, property-based fuzzing of the RESP parser, and ~500K SET/s · 550K GET/s in-process.

RustTokioRESP2AOF
04

Writing

05

Focus

06

Education

Master of Computer ApplicationsCybersecurity — Gold Medalist (CGPA 9.7/10)
Bachelor of ScienceComputer Science (CGPA 9.4/10)
07

Contact

Building something at the intersection of AI, developer tools, or distributed systems? I'd like to hear about it.