🌍 Open Source · 🚀 Projects · 💼 Experience · 📊 Stats · 📫 Contact
I build small, well-documented systems end to end — data, model, API, UI, deployment — and contribute fixes to the open-source tools I use. Analyst at Accenture; previously a computer vision intern and open-source contributor. I care about honest evaluation, reproducible fixes and maintainable tooling.
- MCP security & AI infrastructure — Vexar-MCP (static analysis, SARIF, policy gates for CI) and vexar-autofix
- Agentic payments — Grace: judging an agent's spend against the business's own PayPal payment history instead of a static ceiling
- Machine learning & computer vision — object detection, auto-labelling, model cards and honest evaluation
- Research & systems code — maintenance fixes in large, unfamiliar codebases (ML research, shader transpilers, developer tools)
- Building in public — every project below ships with docs, tests or a live demo, and states its limits clearly
94 pull requests to 52 external projects · 22 merged upstream · 8 in review right now · auto-updated 06 Nov 2026 - every number below links to a live search you can verify.
Status key: 🟣 Merged = merged upstream · 🟢 In review = open PR, not yet merged - I don't claim orgs I haven't landed in (yet).
🟣 Merged upstream in: CrossGL · Ultralytics · Amazon Web Services · Opencollab MCP · Golang Cafe · +6 earlier in smaller projects
🟢 Currently in review at: Kubeflow
| Organisation | Project | What my PRs touch | 🟣 Merged | 🟢 In review | Latest PR |
|---|---|---|---|---|---|
| CrossGL/crosstl (★1.8k) | Shader transpiler (GLSL/HLSL/Metal/SPIR-V/Slang/WGSL) - backend lowering, resource binding & provenance, conformance harness | 10 | · | 🟣 #3050 | |
| kubeflow/mcp-server (★58) | MCP server for Kubeflow Trainer - rate-limit/circuit-breaker & RED metrics, schedulable-GPU counting, training lifecycle fixes | · | 8 | 🟢 #471 | |
| ultralytics/yolov3 (★11k) | YOLOv3 object detection - requirements fix | 1 | · | 🟣 #2333 | |
| aws-samples/step-functions-workflows-collection (★281) | AWS Step Functions workflow collection - template update | 1 | · | 🟣 #283 | |
| prakhar1605/Opencollab-mcp (★43) | Contribution-matchmaking MCP - shared GitHub paginator, closing-PR vs. plain-mention detection | 2 | · | 🟣 #216 | |
| golang-cafe/job-board (★228) | Go job board - golangci-lint workflow updates | 2 | · | 🟣 #121 |
Plus 6 earlier merged PRs in smaller projects - see every upstream-merged PR.
📂 Expand — every featured PR, grouped by organisation (auto-updated)
CrossGL — CrossGL/crosstl · 10 merged · 0 in review
- 🟣 Merged · 2026-10-26 · Refuse HLSL dx::MaybeReorderThread for targets other than Direct3D
- 🟣 Merged · 2026-10-25 · Keep integer min and max integer in CUDA and HIP output
- 🟣 Merged · 2026-10-25 · Preserve resource provenance for pointer-bearing aggregate members
- 🟣 Merged · 2026-10-25 · Wrap 8- and 16-bit scalar integer arithmetic in GLSL
- 🟣 Merged · 2026-10-25 · Bind multiple input buffers in the conformance harness
- 🟣 Merged · 2026-10-25 · Keep generated include order when formatting with clang-format
- 🟣 Merged · 2026-10-25 · Assign implicit WGSL resources to the lowest free bindings
- 🟣 Merged · 2026-10-25 · fix(slang): lower bitCount, findMSB, findLSB and bitfieldReverse
- 🟣 Merged · 2026-10-25 · Declare CrossGL storage buffers as structured buffers in Slang
- 🟣 Merged · 2026-10-21 · Fix parser hang on unterminated shader declarations
Kubeflow — kubeflow/mcp-server · 0 merged · 8 in review
- 🟢 In review · 2026-11-02 · fix(trainer): report a missing step instead of an empty log in get_training_logs
- 🟢 In review · 2026-11-02 · fix(trainer): round GPU memory estimates up before picking a tier
- 🟢 In review · 2026-11-02 · fix(trainer): count only schedulable GPUs, from any vendor, in get_cluster_resources
- 🟢 In review · 2026-11-02 · fix(trainer): stop wait_for_training early when the job is already Complete
- 🟢 In review · 2026-11-01 · feat(core): add HTTP RED metrics and a readiness gauge
- 🟢 In review · 2026-11-01 · feat(core): add rate-limit and circuit-breaker metrics
- 🟢 In review · 2026-10-28 · fix(core): validate logging format values across configuration sources
- 🟢 In review · 2026-10-23 · fix(ci): harden E2E dependency cache isolation
Ultralytics — ultralytics/yolov3 · 1 merged · 0 in review
- 🟣 Merged · 2025-06-11 · Update requirements.txt
Amazon Web Services — aws-samples/step-functions-workflows-collection · 1 merged · 0 in review
- 🟣 Merged · 2023-09-04 · Update template.yaml
Opencollab MCP — prakhar1605/Opencollab-mcp · 2 merged · 0 in review
- 🟣 Merged · 2026-10-21 · fix(client): add shared github_get_all paginator and paginate issue timelines
- 🟣 Merged · 2026-10-20 · fix(issues): distinguish closing PRs from plain mentions in check_issue_availability
Golang Cafe — golang-cafe/job-board · 2 merged · 0 in review
- 🟣 Merged · 2023-05-03 · Update golangci-lint.yml
- 🟣 Merged · 2023-05-02 · Update golangci-lint.yml
- 🟢 In review · 2026-11-02 · fix(trainer): report a missing step instead of an empty log in get_training_logs in kubeflow/mcp-server
- 🟢 In review · 2026-11-02 · fix(trainer): round GPU memory estimates up before picking a tier in kubeflow/mcp-server
- 🟢 In review · 2026-11-02 · fix(trainer): count only schedulable GPUs, from any vendor, in get_cluster_resources in kubeflow/mcp-server
- 🟣 Merged · 2026-10-26 · Refuse HLSL dx::MaybeReorderThread for targets other than Direct3D in CrossGL/crosstl
- 🟣 Merged · 2026-10-25 · Keep integer min and max integer in CUDA and HIP output in CrossGL/crosstl
- 🟣 Merged · 2026-10-25 · Preserve resource provenance for pointer-bearing aggregate members in CrossGL/crosstl
- 🟣 Merged · 2026-10-21 · fix(client): add shared github_get_all paginator and paginate issue timelines in prakhar1605/Opencollab-mcp
- 🟣 Merged · 2026-10-20 · fix(issues): distinguish closing PRs from plain mentions in check_issue_availability in prakhar1605/Opencollab-mcp
- 🟣 Merged · 2025-06-11 · Update requirements.txt in ultralytics/yolov3
- 🟣 Merged · 2023-09-05 · update on icpp.toml in icppWorld/icpp-pro
- 🟣 Merged · 2023-09-04 · Update template.yaml in aws-samples/step-functions-workflows-collection
- 🟣 Merged · 2023-05-23 · Update little_anyhow.rs in EricCrosson/git-disjoint
| Your goal | Start here | Evaluation boundary |
|---|---|---|
| Check an MCP server before shipping | Vexar-MCP | Static findings and coverage, not a security certification |
| Explore reviewable model-generated fixes | vexar-autofix | Start with mock mode and a disposable clone |
| Run an assistant on your own device | Quasnooze | Local model default; powerful tools need careful review |
| Try a lightweight Windows editor | Morrow | Unsigned early preview; use non-critical files |
| Learn everyday Kannada | Kannada Saathi | Browser learning aid, not a professional interpreter |
| Practice interview problem-solving | DSA Mastery Plan | Browser progress; export a backup |
For research and notebook projects, read their data and evaluation limitations before interpreting metrics. Contribution status below distinguishes merged work from PRs still in review; an open PR is not an endorsement by its upstream organisation.
| Project | What it is | Stack | ★ | Language | Updated |
|---|---|---|---|---|---|
| CardioLens 3D · live demo | Research-only coronary-artery visualisation - interactive three.js schematic + scikit-learn baseline served from FastAPI, with a model card and documented limits (not for clinical use) | React - three.js - FastAPI - scikit-learn | 3 | JavaScript | 2026-11-02 |
| Quasnooze | A private, local-first personal AI assistant you message from Telegram, Discord, Slack, WhatsApp or the phone browser - 21 tools behind an approval gate, reminders that fire, token streaming, and a code-level honesty check | Node.js - Ollama - MCP - PWA - zero runtime deps | 13 | JavaScript | 2026-11-05 |
| Vexar-MCP · live demo | Security, schema and token-cost scanner for MCP servers - static analysis that never runs your code, CI policy gates, SARIF output, and an explicit 'n/a' when a scan could not read a file | Python - MCP - SARIF - GitHub Actions | 3 | Python | 2026-11-03 |
| vexar-autofix · live demo | An MCP security agent that has to prove its own patches: the finding must drop, nothing else may break, the target's pytest suite must still pass (Nebius x NVIDIA hackathon build) | Python - NVIDIA Nemotron - Nebius Token Factory - MCP | 3 | Python | 2026-11-02 |
| Grace | Agentic-payments judge - scores an agent's payment against the business's own PayPal payment history and cites the payments it reasoned from (PayPal AI Hackathon, sandbox only) | Python - PayPal Orders API - payment graph | 3 | Python | 2026-11-02 |
| Kannada Saathi · live demo | Offline-first, installable Kannada companion for everyday situations - 111 reviewed phrases with audio, strict TypeScript, 133 tests, 0 audit vulnerabilities (Kannada Digital Innovation Hackathon 2026) | React - TypeScript - Vite - PWA | 4 | TypeScript | 2026-11-02 |
| DSA Mastery Plan 2026 · live demo | 150-day, pattern-first DSA roadmap - 466 verified free LeetCode problems, 33 pattern playbooks, browser-only progress tracker | vanilla JS - GitHub Pages | 4 | JavaScript | 2026-11-02 |
| Grounding DINO Auto-Labelling | Zero-shot labelling for object-detection datasets - describe classes in English, review detections, export Pascal VOC | PyTorch - Grounding DINO - supervision | 4 | Python | 2026-11-02 |
| YOLOv3 Custom Training | Step-by-step guide + notebook for training YOLOv3 on your own dataset with Darknet in Google Colab | Darknet - YOLOv3 - Colab | 6 | Jupyter Notebook | 2026-11-02 |
Also public on this profile, just not featured above: linear-regression-machine-learning (Jupyter Notebook · ★5) · rock-paper-scissors (HTML · ★5) · musicgenre (Jupyter Notebook · ★4) · morrow-editor (TypeScript · ★3) · career-forge (Python · ★3) · LiveBridge (JavaScript · ★2)
| Role | Organisation | Focus |
|---|---|---|
| Analyst | Accenture | Machine learning & computer vision |
| Computer Vision Intern | SeeWise.AI | Industrial-safety detection — PPE, people and machinery detection for workplace safety |
| Open-source contributor | Independent — upstream PRs across many projects (receipts in Open Source above) | Bug fixes, metrics/observability, shader backend lowering, testing, docs |
🟣 Merged upstream: CrossGL · Ultralytics · Amazon Web Services · Opencollab MCP · Golang Cafe · +6 earlier in smaller projects · 🟢 In review: Kubeflow → full breakdown
- Reproduce first, patch second — every fix starts from the failing case, not a guess
- Smallest defensible change — focused PRs a maintainer can actually review, with tests/conformance runs where the project has a harness
- Review-friendly — I stay on the PR thread until it's merged or closed; the fastest way to reach me is right there
Core: Python (pandas, NumPy, scikit-learn, PyTorch, TensorFlow/Keras, OpenCV, FastAPI) · JavaScript/TypeScript (React, three.js, Vite) · C++ · SQL
MLOps & infra: Docker · Git & GitHub Actions · MCP (Model Context Protocol) · Kubeflow · Jupyter / Google Colab · Linux
AI security & agents: static analysis (AST-based scanners, SARIF, policy-as-code CI gates) · LLM agents on NVIDIA Nemotron via Nebius Token Factory · PayPal Orders API sandbox
Via open source I also read and patch code in Go, Java, Rust and shader languages (GLSL / HLSL / Slang / WGSL) when the project calls for it.
Top languages counts only my own repositories — the updater automatically excludes my forks of large upstreams (VS Code, Ghidra, Google Research, …) so the chart can't be skewed by other people's code.
Ranjith Rosan maintains the original projects linked on this profile and contributes to other open-source projects. Each repository documents its purpose, setup and limitations; upstream contribution status is shown separately from project ownership.
LinkedIn · open an issue on any repository above — I reply. If you're a maintainer reviewing one of my PRs: thank you, and the fastest way to reach me is right there.
Curious how this page maintains itself? docs/AUTOMATION.md explains the 2-hourly updater, its honesty rules, and how to reuse it.
🤖 This profile is auto-updated every 2 hours by GitHub Actions - last run 06 Nov 2026. On GitHub since 2021 · 17 public repos · 11 followers.


