Skip to content
View nidhi1603's full-sized avatar
💭
available
💭
available

Highlights

  • Pro

Block or report nidhi1603

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nidhi1603/README.md
Nidhi Rajani. AI Engineer: LLM post-training, agents, RAG and evaluation. I build LLM systems, and the evaluations that tell me whether they work. A terminal running eval --frozen-protocol: ruler locked before training, random-reward control run, null results published, every number linked to source.

Portfolio site Email LinkedIn

M.S. Data Science, University at Buffalo (May 2026) · before that, Solutions Engineer at Flipkart (Walmart) · now fine-tuning and evaluating LLMs at Cardio AI

⚡ Proof, not adjectives

38.6% HumanEvalFix pass@1 from a fine-tuned 1.5B model, against OctoCoder's 30.4% and the untrained base's 17.6% 17 of 30 dev tasks in a public agent benchmark leaked answer-key data; reported upstream as tau2-bench #574 Merged into LangChain: OpenAI's apply_patch tool in langchain-openai, +401/−18 across 9 files

Sources: 38.6% · 30.4% · 17.6% · 17 of 30 · tau2-bench #574 · +401/−18 across 9 files

👩‍💻 About me

  • 🔭 Now: fine-tuning and evaluating LLMs at Cardio AI
  • 🎯 Looking for: AI Engineer, Forward Deployed Engineer and ML Engineer roles in the US
  • 🧪 How I work: lock the ruler before training, run the control before the claim, publish the null result
  • 💬 Ask me about: post-training (SFT, DPO, GRPO), agent evaluation, RAG retrieval, LLM integrations
  • ⚡ Fun fact: a random-reward control showed my own RL gain was noise, and it's my favourite result

🔬 Post-Training Lab · SFT vs DPO vs GRPO for code repair

HumanEvalFix pass@1: untrained base 17.6%, OctoCoder 30.4%, ours worst seed 34.5%, mean 38.6%, best seed 42.65% Training lift by try budget: 1: +21.3, 3: +14.3, 5: +9.6, 10: +3.7, ~14–18: +2.5
  • A fine-tuned 1.5B model scores 38.6% pass@1 on HumanEvalFix (3-seed mean; worst seed 34.5%), above OctoCoder's 30.4%, a 15.5B model, under the paper's own frozen protocol.
  • The data won. $0.34 of API calls produced 2,551 certified training bugs; each had to compile and fail a real test.
  • The RL didn't. A GRPO twin trained on a random reward matched the real one: real minus random came to +0.61 pass@1.
  • Scaffold or fine-tune? In a verify-and-repair loop the untrained base reaches 65.2%, and training adds only +2.5 points.

Repo · Case study · Lab notebook · Every result

How the study was run
flowchart TB
    subgraph plan [" "]
        direction LR
        A["Frozen ruler<br/>OctoPack protocol,<br/>committed before training"] --> B["Data factory<br/>an LLM breaks clean functions;<br/>each bug must compile<br/>and fail a real test"] --> C["Three arms<br/>SFT · DPO · GRPO<br/>matched compute, paired seeds"]
    end
    subgraph test [" "]
        direction LR
        D["Controls<br/>random-reward GRPO,<br/>three seeds per arm"] --> E["Held-out exam<br/>HumanEvalFix, touched<br/>only at milestones"] --> F["Scaffold test<br/>sample, run tests, repair;<br/>base vs trained"]
    end
    plan --> test
    style plan fill:none,stroke:none
    style test fill:none,stroke:none
Loading

🧪 Agent Eval Platform · evaluation machinery for a tool-using banking agent

What the evaluation layer caught: 17 of 30 dev tasks leaked answer-key data; 13 defects found and fixed; false transfer replies 26 of 27 → 2 of 27 in replay; 3 vs 3 of 30 tasks completed, no gain Six layers: models via LiteLLM; spend admission control; the pinned, sandboxed benchmark; the runtime harness; the evaluation layer, which found the benchmark leak; and blind review
  • Found a leak in the benchmark itself. In 17 of 30 dev tasks, one listing tool exposed answer-key data to the agent. I reported it as tau2-bench #574, with a reproducer that needs no model calls.
  • Measured before claiming. 13 measurement and harness defects found and fixed, each with a regression test. False "transfer under way" replies fell from 26 of 27 → 2 of 27 in replay.
  • Reported the null. Harness vs standard agent: 3 vs 3 of 30 tasks completed. No gain shown, and the report says so.
  • Try it: make demo-provenance reproduces a verification bug and its fix, offline and at no cost.

Repo · Case study · Technical report · Every result

How the pieces fit
flowchart TB
    subgraph B["tau2-bench, pinned and sandboxed"]
        U["Simulated customer"] <--> AG["Agent under test"]
        AG --> TL["Bank tools + database"]
    end
    S["Spend admission control<br/>reserve, refuse, settle"] -. gates every model call .-> AG
    H["Runtime harness<br/>tool adapter, checks before actions,<br/>verification evidence, disclosure check"] -. wraps .-> AG
    TL --> G["Official grader<br/>final database state"]
    G --> E["Evaluation layer<br/>frozen decision rules, paired batches,<br/>replay probes, answer-independence check"]
    E --> R["Review<br/>blind readers + adjudicator"]
    E -. found .-> L["Benchmark leak,<br/>reported upstream"]
Loading

🧩 More work

Code-review LoRA · fine-tuning
Reasoning-trace SFT on Qwen2.5-Coder-7B that wins 86.0% of head-to-head reviews against the base model (CI [81.5%, 91%]) and cuts hallucinations 14.5% → 7.0%. Three rounds of RL on top didn't beat it, and the repo says so.
Repo · Results
ProofCart · agents and integrations
Hackathon agent across Slack, Notion and Stripe (test mode): reads supplier threads, waits for the owner's approval in Slack, pays, records. Exactly one charge under crash or duplicate (2/2 vs 0/2 against an ablation); 14/14 deterministic regression cases.
Repo · Demo video
Sokratic tutor · group project, my parts
Multi-agent Socratic tutor (UB). I built the first RAG pipeline (MRR 0.493 → 0.616), K-of-N partial reach in the reach gate, Haiku behaviour classifiers (29/30 on a check set) and an end-to-end regression harness. Reach rate: 38.9% → 66.1% across 59 conversations.
My commits · My branch
Open source · merged pull requests
LangChain: OpenAI's apply_patch built-in tool for langchain-openai, with unit tests (+401/−18 across 9 files, merged 9 Jun 2026).
Apache Airflow: a dependency fix in the AWS provider (+1/−1 across 1 file, merged 1 Apr 2026).
langchain pull request state airflow pull request state

🧰 Tools I've shipped with

LLMs and post-training
PyTorch Hugging Face TRL PEFT · LoRA Unsloth Google Colab

Agents, RAG and evals
LangChain LangGraph LiteLLM OpenAI API Anthropic API Qdrant pytest

Backend and infrastructure
Python FastAPI PostgreSQL Redis Docker Kubernetes Helm GitHub Actions

Data and ML
SQL Pandas NumPy scikit-learn XGBoost

Integrations
Slack API Notion API Stripe

📈 GitHub activity

3D contribution calendar for the last year, with contribution types and languages

📫 Get in touch

Portfolio site Email LinkedIn

Buffalo, NY (Eastern) · open to US-remote and to relocating to the SF Bay Area, NYC or Seattle.
US work authorization: F-1 OPT, eligible for the 24-month STEM extension (E-Verify employer). I'll need H-1B sponsorship long-term.

Every number on this page links to the line it comes from, in a public repo at a pinned commit. This README is generated from the same checked facts as nidhi1603.github.io.

Pinned Loading

  1. Two_Tower_Recommendation_System Two_Tower_Recommendation_System Public

    Two-Tower RecSys + FAISS retrieval + cold-start demo (Amazon Video Games 2023)

    Python

  2. agentic-analytics-copilot agentic-analytics-copilot Public

    Production-style agentic analytics copilot with LangGraph, DuckDB, ChromaDB, hybrid retrieval, confidence guardrails, and a live Streamlit demo.

    Python

  3. airflow airflow Public

    Forked from apache/airflow

    Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

    Python

  4. post-training-lab post-training-lab Public

    SFT vs DPO vs GRPO for code repair. A fine-tuned 1.5B model beats OctoCoder (15.5B) on HumanEvalFix; a random-reward control credits the data, not RL.

    Jupyter Notebook

  5. langchain-ai/langchain langchain-ai/langchain Public

    The agent engineering platform.

    Python 148k 24.8k

  6. sokratic-lm sokratic-lm Public

    Forked from arun-gg-1996/sokratic-lm

    Group project (UB): multi-agent Socratic anatomy tutor. My parts: first RAG pipeline and its evaluation, K-of-N reach gate, Haiku behaviour classifiers, regression harness.

    Python 1