AI & Systems Engineer | Open Source Contributor
Final-year B.E. AI & Data Science student at S.G. Balekundari Institute of Technology, Belgaum.
I find real bugs by reading unfamiliar production code. 20 pull requests merged into Google, Microsoft, Apple, Uber, OpenAI, Netflix, Hugging Face and SciPy, each one a defect reduced to a minimal fix with a regression test that fails before and passes after.
Keepi — AI second brain on Google Play
300+ users in the first 20 days. Remembers whatever you tell it and answers questions over those memories with fully on-device semantic search, ranking embeddings by cosine similarity in a background isolate so the UI stays responsive on low-end phones. A realtime voice assistant over a bidirectional Live WebSocket drives device actions through function calling. Offline complete across 11 modules.
Flutter Isar Gemini Live on-device search · keepiai.com
GNSS-Denied Autonomous Drone — ISRO IRoC-U, top 30 in India
Six months building a GPS-denied navigation stack from scratch, deliberately without ROS or ORB-SLAM so it would run on a Raspberry Pi companion computer. A RealSense D435i feeds an RGB-D visual-inertial odometry pipeline I wrote myself: corner features anchored to metric depth, frame-to-keyframe KLT tracking with a forward-backward consistency check, and pose recovery by PnP with RANSAC so depth noise enters the estimate once instead of being squared. An IMU complementary filter supplies a drift-free tilt reference, and the pose is streamed to a Pixhawk as VISION_POSITION_ESTIMATE so ArduPilot's EKF holds position indoors with no GPS. Includes autonomous patrol, ArUco precision landing, and YOLOv8 with SAM2 tracking.
Python OpenCV RealSense ArduPilot MAVLink
Aura — the real-world Jarvis for your PC
A voice agent that uses the computer instead of talking about it. It sees the screen, plans three to eight steps, then moves the mouse and types the keys to finish the job, pausing for confirmation before anything irreversible.
Electron Gemini computer use
telegram-slack-mcp — published on npm and PyPI
Two MCP servers that give an AI assistant your actual chats: personal Telegram and Slack accounts, real DMs, groups and channels, not a bot inbox. 848 npm downloads in the first week.
npx -y telegram-slack-mcp telegramAgentRAG — long-context retrieval without one oversized prompt
Standard RAG concatenates every retrieved chunk into a single call, where attention cost grows superlinearly and the model averages its sources instead of reasoning over each. AgentRAG gives every chunk its own agent with an isolated context window, runs them in parallel, has an orchestrator cross-examine their findings, then a synthesis agent produces the final cited answer. Total evidence exceeds any single context window while each call stays short.
Python Gemini 2.5 Flash ChromaDB asyncio
20 merged pull requests in production codebases.
| Project | PR | What it fixed |
|---|---|---|
| Apple ml-explore/mlx | #4173 | Python floats were rounded through float32 before landing in a float64 array, so float64 math silently lost precision and saturated to inf or zero at the extremes. C++ core. |
| Uber uber/h3 | #1224 | Out-of-bounds read in the C core when a face index equalled NUM_ICOSA_FACES, reproduced under AddressSanitizer before fixing. |
| Google grpc/grpc-go | #9345 | ALTS credentials silently dropped the bound access token in Clone(), so a cloned TransportCredentials lost its binding. |
| Google go-containerregistry | #2420 | AuthConfig marshalling overwrote the Auth field when username and password were empty, corrupting stored credentials. |
| Google osv-scanner | #2762 | A malformed short commit hash aborted the entire dependency scan; the offending package is now skipped and the scan continues. +711 LOC |
| Google pprof | #1019 | Unit-suffix stripping counted bytes instead of runes, mangling multibyte units. |
| Microsoft garnet | #2070 | Shutdown race in the Tsavorite object allocator: Dispose() cleared the page array before the size tracker's background resizer was stopped, and the resulting NullReferenceException escalated to Environment.FailFast. |
| Microsoft pyright | #11620 | Closed TypedDicts were not narrowed on a key membership check. |
| Microsoft pyright | #11679 | Two uncovered dataclass field() override branches. |
| OpenAI openai-agents-python | #2931 | Exceptions raised in the run loop after stream_events() completed were swallowed, so failures surfaced as silent truncation. |
| Netflix metaflow | #3342 | Foreach execution paths were prefix-matched, so middle:1 also selected middle:10 and middle:11, returning the wrong parent and child tasks. |
| Hugging Face transformers | #46006 | The owned_by field in GET /v1/models returned a list where the OpenAI-compatible schema requires a string. |
| SciPy | #25912 | optimize.dual_annealing hung indefinitely on maxiter < 1 instead of rejecting it. |
| SciPy | #25942 | An attribute whose value was an empty dict made OptimizeResult.__repr__ raise from max() on an empty sequence. |
| cel-go | #1434 | The unparser dropped parentheses around unary operands that would reparse differently. |
| Hydra | #3262 | on_job_end and on_run_end callbacks never fired on KeyboardInterrupt, skipping cleanup whenever a run was cancelled. |
| Hydra | #3365 | Backslashes in Defaults List paths bypassed the parent-traversal check, letting a config escape its directory on Windows. |
| SchemaStore | #5707 #5643 #5593 | Wildcard-only permission args rejected; missing ES2022.Regexp and ES2023.Intl lib entries; stale baseUrl documentation. |
- ml-explore/mlx #4441 — the padding primitive's backward pass indexes pad sizes by axis value instead of position and never normalises negative axes, so every second-order gradient through a padded convolution comes back wrong.
- microsoft/pyright #11692 — a soundness regression where enum members whose values are not statically known were narrowed to
Nevereven though the comparison is true at runtime. Approved. - microsoft/hcsshim #2888 —
io.ReadFullwhere the code assumed aReadcall would fill its buffer. Approved. - microsoft/onnxruntime #31696 — uninterpolated error messages in per-channel quantisation override validation. Approved.
- Dao-AILab/flash-attention #2791 — an unmasked output store in a Triton kernel writing out of bounds on non-tile-aligned shapes.
- Plus open work at NVIDIA (warp), Google (adk-python), LinkedIn (Liger-Kernel), Cloudflare (workers-sdk, cloudflared), Uber (fx, zap), Apple (pkl), Meta (zstd) and OpenAI (whisper).
- 10x hackathon winner: Agamaya CyberTech (Rs. 50,000, 1st), CodeBharat (Rs. 50,000), ONEST (Rs. 25,000), HackGenesis TCS (Rs. 20,000), GDG Best Developer, NASA Space Apps 1st place (local), and four more
- Top 30 in India, ISRO IRoC-U autonomous drone challenge
- Grand Finalist, Meta x Scaler PyTorch Hackathon 2026
- Rs. 2 lakh government grant, NAIN 2.0 Government of Karnataka, for MediAssist AI
- IIT Bombay Campus Ambassador (2024)
Own products — keepiai.com · triponbuddy.in · productcompareai.com
Client work — sumaimatch.jp · unyfiny.com · prasanhom.in · cmnservicesindia.com · ifuturetech
Languages — Python, C, C++, Go, C#, TypeScript, JavaScript, Dart, SQL
AI / ML — PyTorch, Triton kernels, LoRA and GRPO fine-tuning, RAG, agentic pipelines, MCP, Gemini, OpenAI API, ChromaDB
Vision / Robotics — OpenCV, YOLOv8, SAM2, RealSense, visual-inertial odometry, ArduPilot, MAVLink
Web / Mobile — Next.js, React, Flutter, Flask, FastAPI, Tailwind CSS
Data / Infra — PostgreSQL, Supabase, Prisma, Docker, GitHub Actions, AWS, Google Cloud, Vercel
technil6436@gmail.com · nileshpatil6.com · linkedin.com/in/nileshpatil6 · Belgaum, Karnataka, India


