Follow along on YouTube · Instagram · X → @aiwithrav
Merged code into libraries the AI/ML world actually uses.
Every merged PR, carried on a C60 buckyball. Real geometry: 60 vertices, 90 bonds, 12 pentagons, 20 hexagons.
Spin the interactive version on my portfolio →
| Repo | Contribution | Status |
|---|---|---|
joblib/joblib 4.1k★ |
Bug fix: accept any os.PathLike in dump()/load() (PR #1812) |
✅ Merged |
joblib/joblib 4.1k★ |
Docstrings for time-format helpers (PR #1811) | ✅ Merged |
huggingface/sentence-transformers 18.9k★ |
Regression tests for a core utility (PR #3855) | ✅ Merged |
huggingface/sentence-transformers 18.9k★ |
Documented the sparse-tensor → SciPy COO conversion (PR #3843) | ✅ Merged |
nltk/nltk 14.7k★ |
Regression tests for transitive_closure — cycles, reflexive closure, and input-mutation safety (PR #3703) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: low-bit /DeviceRGB images decoded as RGB instead of palette — broken image extraction (PR #3929) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: low-bit expansion never ran for unfiltered/inline images, raising unrecognized image mode (PR #3938) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: an explicit /Decode array replaced the Adobe CMYK inversion instead of composing with it, leaving extracted images colour-inverted (PR #3943) |
✅ Merged |
authlib/authlib 5.4k★ |
Bug fix: the OAuth1 InsecureTransportError carried the OAuth2 description, telling OAuth 1.0a clients "OAuth 2 MUST utilize https." — merged by the project lead (PR #919) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: pages was annotated list[PageObject] but returns a lazy _VirtualList, so type checkers accepted reader.pages.append(...) — which raises at runtime (PR #3957) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: PdfWriterProtocol declares _reader, but PdfWriter only set it in incremental mode — so a normal writer failed the protocol it is passed as (PR #3960) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: the object-translation table is declared int-to-int, but each entry also stores the source document under a "PreventGC" key — two type: ignore comments hid the mismatch (PR #3970) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Release tooling: the version bump always assumed a patch release, so enhancements had to be corrected by hand — now derived from the generated changelog sections (PR #3969) | ✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: a stream without an explicit /DecodeParms handed every filter a plain dict, but the decoders are typed for a DictionaryObject (PR #3971) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: iterating a PDF dictionary yields keys, so the AcroForm font walk collected nothing — form fields inheriting a document-level font came back with an empty font set (PR #3983) | ✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: RectangleObject was typed for a tuple, but every caller inside pypdf passes the ArrayObject read from the PDF (PR #3984) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Returned two empty lists from a function annotated None, hidden behind a type: ignore (PR #3985) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
The annotation list holds IndirectObject references, not the DictionaryObject it was declared as (PR #3986) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Fit was typed for a tuple, but the destination builder unpacks the PDF array and hands over a list (PR #3990) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
The annotation border was declared an ArrayObject while the documented usage is a plain list (PR #3991) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
XmpInformation was typed for a ContentStream, a sibling of the DecodedStreamObject the /Metadata stream actually is (PR #3995) |
✅ Merged |
py-pdf/pypdf 10.1k★ |
Bug fix: a CID font's /W array may hold real numbers, so a width of 443.35938 landed in a dict[str, int] (PR #3996) |
✅ Merged |
| pypdf · optax · numba · llama_index | Bug fixes & docs | 🔄 In review |
22 merged across 5 libraries the AI/ML world runs on — more PRs landing over time.
18+ AI agents coordinate dynamically to generate personalised structured intelligence reports across Vedic Astrology, Numerology, Palmistry, Tarot, and Vastu Shastra — in 23 Indian languages.
Enterprise-grade AI system that maps bench employees to open roles using 5-layer Hybrid RAG — with L1+L2 semantic cache, SSE streaming, circuit breaker, and LLM-as-judge guardrails. SonarQube Quality Gate PASSED.
Enterprise IT incident response engine — zero vectors, zero embeddings, zero hallucinated commands. Every kubectl command is pulled verbatim from the database. Three completely separate knowledge panels ranked by priority for every incident.
A LangGraph pipeline where 5 specialist agents collaborate to generate and optimise marketing campaigns — with a learning engine that uses past performance data to improve the next run automatically. ROI improves run over run.
An agent platform where any application can plug in an AI agent with just a YAML file — persona, tools, behaviour, all configured at runtime. Per-agent lock/unlock for token protection. Works with any model.


