Noida, Uttar Pradesh, India / Remote worldwide · Open to relocate
Jokhendra Prajapati
Senior AI & Full-Stack Engineer
LangGraph · RAG · MCP · FastAPI · Express / NestJS · WebSockets · AWS
I build retrieval and agent systems that hold up outside a notebook, plus the Python and Node services, realtime layers and cloud infrastructure they actually run on.
Expertise
Retrieval, agents, and the systems that run them
Four capability areas, one system. Retrieval decides what is true, the graph decides what happens next, and the backend and platform underneath are what make either of them usable by real users at real volume.
Hover a capability to trace how it connects
Retrieval and grounding
Hybrid retrieval over messy sources: chunking chosen for the document shape, sparse plus dense scoring, and answers tied back to retrieved text.
RAG · Hybrid search · FAISS · BM25 · Chunking strategy
Agentic systems
LangGraph state machines instead of one long chain: an intent router, tool nodes with fallbacks, and memory scoped per conversation thread.
LangGraph · StateGraph · Tool calling · MCP · Fallbacks
Backend engineering
Python and Node services built to be operated: versioned REST contracts, validation at the edge, WebSocket transport for realtime, and queued workers for anything slow.
FastAPI · Express · NestJS · WebSockets · Queues · JWT / OAuth
Cloud and delivery
Containerised services on AWS with CI/CD, health checks and structured logs, plus the Next.js interfaces that sit on top. One person, whole path.
AWS · Docker · CI/CD · Next.js · Observability
Selected work
Production systems first — realtime, retrieval, agents
Ordered by impact. Start with the platforms that carried real users, then the RAG and agent systems that show how I design AI on top of that engineering. Each case study covers the problem, architecture, decisions, and what broke.
7 case studies
How I build agents
LangGraph is the brain. MCP is the hands.
Separating orchestration from execution is what moves an agent past the demo stage. The graph decides; tools do the work behind an explicit boundary; every step is traceable.
Dashed paths are conditional: cheap turns skip tool execution entirely, and instrumentation runs alongside rather than inside the request path.
- Orchestration
- Tool
- Data store
- Model
- Conditional path
State, not chat history
A graph carries typed state between nodes and checkpoints it per thread. Retries resume where they failed instead of replaying an entire conversation, and you can inspect exactly what the agent believed at each step.
LangGraph StateGraph · conditional edges · checkpointed threads
Tools behind a boundary
The model never holds credentials or raw system access. Tools are declared with typed inputs and executed behind MCP or equivalent server boundaries, so the same toolset is reusable across agents and auditable per call.
MCP servers · typed tool schemas · no credentials in prompts
Failure is a routed path
Tool timeouts and bad arguments are expected inputs, not exceptions. Each tool node has a fallback so the graph answers with whatever succeeded and states plainly what it could not fetch.
Fallback nodes · typed errors · partial answers over stack traces
Backend and platform
A model is only as good as the service around it.
Before the AI work, and underneath all of it, is ordinary hard engineering: request contracts, realtime transport, background jobs, data stores and deploys. I build that half in both runtimes, Python and Node, and I operate what I ship.
Dashed paths run outside the request: auth verification, Redis fanout back to connected sockets, and instrumentation that never blocks a response.
- Orchestration
- Tool
- Data store
- Model
- Conditional path
APIs designed for change
Every endpoint validates at the edge and fails with one consistent error contract, so a client never has to guess whether a 500 means bad input or a dead dependency. Versioning is planned before the first consumer, not retrofitted after the first break.
Pydantic · class-validator · versioned REST · typed error contracts
Realtime that survives scale
Sockets authenticate on handshake and join rooms scoped to what the user may see. Fanout across instances goes through Redis pub/sub instead of in-process state, and clients heartbeat and reconnect with backoff so a dropped connection recovers on its own.
Socket.IO · MediaSoup · Redis pub/sub · heartbeat and reconnect
Built for the bad day
Slow work goes behind a queue with retries, backoff and a dead-letter path. Handlers are idempotent so a retry cannot double-charge or double-send, timeouts are explicit at every hop, and structured logs make an incident readable instead of archaeological.
Idempotent handlers · DLQ · explicit timeouts · structured logs
What I reach for
Python
- FastAPI
- Django
- Pydantic
- Async workers
- LangChain / LangGraph
Node.js
- Express
- NestJS
- TypeScript
- Prisma / Mongoose
- Next route handlers
Realtime
- WebSockets
- Socket.IO
- MediaSoup
- Redis pub/sub
- Token streaming
Cloud
- AWS EC2
- AWS S3
- AWS Lambda
- Docker
- CI/CD + Nginx
Stack
Organised by the job each layer does
Tools listed by where they sit in a system rather than as a percentage score. If it is on this list, I have shipped something with it.
Interface
What the user actually touches
- Next.js
- React
- TypeScript
- Streaming UI
- Tailwind CSS
AI orchestration
Decides what happens next
- LangGraph
- LangChain
- Intent routing
- Prompt design
- Checkpointed memory
Tools and integrations
The hands of the system
- MCP servers
- Tool calling
- REST and webhooks
- Tavily search
- Typed function tools
Backend services
Where the business logic lives
- FastAPI
- Express
- NestJS
- Django
- REST and streaming APIs
- JWT / OAuth
Realtime and async
Work that cannot block a request
- WebSockets
- Socket.IO
- MediaSoup
- Queues and workers
- Redis pub/sub
Retrieval and data
Grounding and persistence
- FAISS
- BM25
- PostgreSQL
- MongoDB
- Redis
- SQLite
Models
Routed by cost and latency
- Groq
- OpenAI
- Open-weight models
- Embeddings
- LLM-as-judge
Cloud and delivery
Getting it live and keeping it honest
- AWS (EC2, S3, Lambda)
- Docker
- CI/CD
- Nginx
- Logs and metrics
Ask Groot
Groot — a working agent, not a scripted widget
Groot answers from this site's own case studies and profile — with a live execution trace so you can see the path through each turn.
Contact
Tell me what you are building
Available for senior AI and full-stack engineering roles and consulting.
Open to work
Where I help most
- Designing agent graphs that survive tool failures and long conversations
- Taking a RAG prototype to something you can measure and defend
- Reviewing an LLM architecture before it becomes expensive to change
- Shipping the whole thing: API, interface, deployment, instrumentation
- jokhendra.prajapati@gmail.com
Typical response within 6 hours
- Based in
- Noida, Uttar Pradesh, India
Remote worldwide · Open to relocate · IST (UTC+5:30)