Hi, I'm Yash !

LLM Agents / Retrieval & Evaluation / ML Infrastructure / Open Source

AI Engineer specializing in GenAI, LLM and agentic systems

As a Google Summer of Code 2026 contributor at Kubeflow, I built and shipped multi-notebook composition for Kale (KEP-0812), which compiles several Jupyter notebooks into a single Kubeflow pipeline, part of 10 merged PRs across Kubeflow and Kornia. Most recently I built Ravenhold, a three-agent incident-response system whose context, memory and coordination live in one FalkorDB graph, with an MCP tool layer and an evaluation harness that scores every answer against ground truth. I also built a retrieval-augmented support agent for Qdrant's official Discord server, using hybrid dense and sparse retrieval with a human-in-the-loop review step; Qdrant hosted it on its server in 2024 and awarded an official bounty, though it's no longer part of the server. On Hugging Face, I contributed ONNX weights to three open-source embedding models.

Read my mentor's letterSee my workDownload CV
India
  • 10merged PRs across Kubeflow and Kornia
  • 3embedding models with ONNX weights on Hugging Face
  • 28files changed in the multi-notebook composition PRGSoC 2026 · kubeflow/kale #867 ↗
  • 1official bounty awarded by Qdrant
Letter of recommendation · GSoC 2026

Recommended by my GSoC mentor

I'm actively applying for software and AI engineering roles. If you're hiring, this letter from the maintainer who mentored my Kubeflow work is the best place to start.

What impressed me most was his response to technical feedback. When we identified the need for significant architectural changes, Yash embraced the challenge, carefully restructured his implementation, and delivered improvements incrementally with solid test coverage.

I am confident that Yash has the potential to become an excellent software engineer, and I gladly recommend him for software engineering opportunities.

Eder IgnatowiczSenior Principal Software Engineer Architect, Red Hat Central Agentic SDLCKubeflow/Kale maintainer · My GSoC 2026 mentor
Co-designed KEP-0812 from its inceptionImplemented it in PR #867Compiler internalsKubernetes-based ML pipelines
01 · Experience

Where I've been building

KF

Google Summer of Code 2026 · Kubeflow

Selected contributor · “Composable Kale Notebooks with a Visual Pipeline Editor” ↗

May – Aug 2026

Kale is a JupyterLab extension that compiles Jupyter notebooks into Kubeflow Pipelines. I designed and shipped the feature that lets several notebooks compose into a single pipeline, from the compiler internals to the JupyterLab UI.

Google Summer of Code 2026 completion certificate awarded to Yash Shrivas for contributing to the open source organization Kubeflow, 25 May to 24 August 2026, signed by Stephanie Taylor, Program Manager at Google.
Completion certificate · Google · May 25 – Aug 24, 2026
Mergedkubeflow/kale #867 · 28 files

Multi-notebook composition KEP-0812

A notebook: cell type that lets one notebook reference another, so several notebooks compile into a single Kubeflow pipeline. Merged after review by Kale's original author and maintainers.

KEP-0812 · how notebook: references compileKale
main.ipynbstep:preprocessdataset, features = load()notebook:trainnotebook_path: train.ipynbnotebook:evaluatenotebook_path: evaluate.ipynbstep:reportreport(accuracy)train.ipynbstep:splittrain_data, test_data = split(features)step:fit prev:splitmodel = fit(train_data, dataset)evaluate.ipynbstep:scoreaccuracy = score(model, test_data)Kale compiles to one Kubeflow pipelinecompiled Kubeflow pipelinetrain · sub-pipelineevaluate · sub-pipelinepreprocess-stepsplit-stepfit-stepscore-stepreport-stepfeaturesdatasettest_datamodelaccuracytrain_datainferred across a notebook boundary from shared namesdeclared with prev: inside a notebookmain.ipynbstep:preprocessdataset, features = load()notebook:trainnotebook_path: train.ipynbnotebook:evaluatenotebook_path: evaluate.ipynbstep:reportreport(accuracy)train.ipynbstep:splittrain_data, test_data = split(features)step:fit prev:splitmodel = fit(train_data, dataset)evaluate.ipynbstep:scoreaccuracy = score(model, test_data)Kale compiles to one Kubeflow pipelinecompiled Kubeflow pipelinetrain · sub-pipelineevaluate · sub-pipelinepreprocess-stepsplit-stepfit-stepscore-stepreport-stepfeaturesdatasettrain_datatest_datamodelaccuracyinferred across a notebook boundary from shared namesdeclared with prev: inside a notebookmain.ipynbstep:preprocessdataset, features = load()notebook:trainnotebook_path: train.ipynbnotebook:evaluatenotebook_path: evaluate.ipynbstep:reportreport(accuracy)train.ipynbstep:splittrain_data, test_data = split(features)step:fit prev:splitmodel = fit(train_data, dataset)evaluate.ipynbstep:scoreaccuracy = score(model, test_data)Kale compiles to one Kubeflow pipelinecompiled Kubeflow pipelinetrain · sub-pipelineevaluate · sub-pipelinepreprocess-stepsplit-stepfit-stepscore-stepreport-stepfeaturesdatasettrain_datatest_datamodelaccuracyinferred across a notebook boundary from shared namesdeclared with prev: inside a notebook
A notebook: reference compiles to a nested sub-pipeline, so each cell of the referenced notebook stays its own step. A root notebook can mix its own steps with references, and variables cross every kind of boundary, step to notebook, notebook to notebook, and notebook to step, each routed to the exact inner step that produces or consumes it. That routing is inferred from shared variable names with zero annotations; edges inside a notebook still come from prev:.Design proposal · KEP-0812 ↗Implementation · PR #867 ↗
01
SubPipeline as a peer node

Each reference is modelled as a SubPipeline node sharing Step's interface, so it joins the pipeline DAG as a peer. Kale's graph and dependency layers needed no changes.

PythonDAG design
02
Recursive compilation

NotebookProcessor emits every notebook as a separately compilable DSL module plus a nested KFP v2 GraphComponent, so each cell stays independently cacheable and schedulable.

KFP v2GraphComponent
03
Zero-annotation data flow

AST analysis and PyFlakes infer execution order and artifact passing across notebook boundaries from shared variable names alone.

astPyFlakes
04
One renderer, byte-identical output

Consolidated three divergent Jinja2 emission templates into one renderer that preserves per-step Kubernetes configuration, proven byte-identical on compiled KFP IR across five pipelines. Added 28 tests.

Jinja2KubernetesKFP IR
05
Notebook cells in JupyterLab

Extended the extension with a Notebook cell type, path input, inline reference chips and a settings-gated rollout, replacing hand-edited notebook JSON.

TypeScriptReactJupyterLab
RH

Ravenhold · Multi-agent incident response

FalkorDB × WeMakeDevs Graph Hacks · entered in all three tracks

Oct 2026

Three AI agents that respond to production outages. Their context, memory and coordination all live in one FalkorDB graph: when thirteen alarms fire at 2 AM, Ravenhold finds the one component that actually broke, ignores the noise, finds the person who fixed it before, and asks you before anyone is paged.

  • 9/9right root cause, right person paged, noise flagged, across 3 storms × 3 runs
  • 100%of cited IDs verified against the graph
  • 23typed graph tools, served to the agents over MCP
  • 100concurrent sessions, zero duplicates or leaks
  • Three agents, one graph

    A Commander (Claude Sonnet 5.5) hands work to an Investigator and a Historian (Claude Haiku 5.5) through Task nodes in the graph, and Episode nodes record every node each one read, so any past run can be audited with a single Cypher query.

  • Tools through MCP

    23 typed graph tools exposed by an MCP server that the agents themselves consume. Root cause is a greedy cover over the dependency graph; PageRank, betweenness and community detection are tools, not model opinion.

  • Evaluated against ground truth

    Every answer is scored against truth computed from the graph, never the model's claims: every tool under 1 s on a 20,000-service graph, 1,600 graph operations in 3.0 s across 100 concurrent sessions, 32 deterministic tests, about $0.03 and 26 s per investigation.

  • Memory that humans approve

    A correction becomes a Lesson linked to the services it applies to; a changed fix becomes a proposed runbook version that nobody uses until a person approves it. Paging works the same way: the agents ask, you decide.

ClaudeMCPFalkorDBCypherAgentsEvalsHuman-in-the-loop
02 · Open source

Contributions beyond GSoC

Qd

Qdrant · Discord AI Agent

Open-source vector database · Bounty recipient

Hosted by Qdrant · 2024

A retrieval-augmented support agent built for Qdrant's official Discord server, answering developer questions from the Qdrant documentation.

  • Accepted, hosted and rewarded

    Designed, built and deployed a 24/7 agent for the developer community. Qdrant accepted it, hosted it on its Discord server in 2024 and awarded an official bounty for the contribution. It is no longer part of the server.

  • Hybrid dense + sparse retrieval

    Docs are chunked at code boundaries (functions, classes, imports) rather than fixed windows, embedded densely with snowflake-arctic-embed-l (1024-d) and sparsely with SPLADE through FastEmbed, then indexed into Qdrant with Haystack. A hybrid retriever merges both at query time, so exact API and parameter names match alongside semantic similarity.

  • Generation routed by content

    Claude gets a code-focused prompt when the retrieved passages contain code blocks, and an explanation-focused prompt when they don't.

  • Human in the loop

    Every draft lands in a private moderator forum, where a moderator can send it, or add context and regenerate it. Follow-up messages from one user are grouped into a single queue and answered together.

RAGHybrid searchSPLADEFastEmbedHaystackClaudeHuman-in-the-loopDiscord
KF

Kubeflow · Kale

JupyterLab extension for Kubeflow Pipelines · Open source contributor

6 merged · 3 in review

Features, fixes and documentation shipped to Kale alongside the multi-notebook composition work. The flagship PR #867 is in Experience.

Ko

Kornia

Computer vision library · Open source contributor

03 · Writing

Notes from the build

All posts
04 · Toolkit

The stack I work in

LLM Systems

  • Claude (Anthropic API)
  • Agent orchestration
  • MCP servers & clients
  • Tool design
  • Prompt design & routing
  • Agent memory
  • Human-in-the-loop review
  • Hybrid dense + sparse retrieval
  • Code-aware chunking

Evaluation

  • Ground-truth eval harnesses
  • Citation & grounding checks
  • Concurrency & scale benchmarks
  • Cost & latency tracking
  • Deterministic test suites

Languages

  • Python
  • JavaScript
  • TypeScript

ML Infrastructure

  • Kubeflow Pipelines (v2 SDK)
  • Kubernetes
  • Docker
  • ONNX Runtime

Program Analysis & Codegen

  • Python ast
  • PyFlakes
  • Jinja2
  • networkx

ML & Embeddings

  • PyTorch
  • Hugging Face Transformers
  • sentence-transformers
  • ONNX

Retrieval & Graphs

  • Qdrant
  • Haystack
  • FastEmbed
  • SPLADE
  • snowflake-arctic-embed
  • FalkorDB (Cypher, vector & full-text)

Frontend

  • React
  • TypeScript
  • JupyterLab extension APIs

DevOps & CI/CD

  • GitHub Actions
  • Automated test & lint gates
  • pre-commit

Data

  • pandas
  • NumPy
05 · Education

Bachelor of Technology

Jabalpur Engineering College

2022 – 2026
06 · Contact

Let's build reliable AI together

I'm actively looking for software and AI engineering roles, and happy to talk GenAI, LLM and agentic systems, ML infrastructure and open source. The quickest way to reach me is email.

yashh.real [at] gmail.com