Open to new opportunities
Hi, I’m Ramanjot Singh.
Software Engineer · Gen AI
From ideas to
intelligent
systems.
I build the backend that brings AI to life. From thoughtful experiments to reliable systems processing millions of documents.
- documents classified / year
- 2.5M+
- straight-through processing
- 85–90%
- merged OSS PRs (Langfuse, Celery)
- 2
A little about me. A look inside the systems I build.
Gen AI at Zinnia
How this connects to the 3D scene
The core of the system. My work at Zinnia connects retrieval, language models and reliable infrastructure to solve real document workflows.
- Software Engineer · Gen AIFull-time · Jul 2025 – Jul 2026
- Software Engineer Intern · Gen AIInternship · Jan 2025 – Jul 2025
Delhi, India · Insurance and financial document workflows.
- barcode
- OCR
- semantic search
- LLM fallback
- Architected a multi-tier document classification pipeline (barcode → OCR → semantic search → LLM fallback) processing ~8K–10K documents/day, ~2.5M a year.
- Reached 85–90% straight-through processing, significantly cutting manual review effort and operational cost.
- Built semantic classification with text embeddings + Qdrant vector search as the fallback tier, guarded by LLM validation, confidence thresholds and critic-model checks for safe, auditable output.
- Designed an event-driven, serverless architecture on AWS Lambda with fault-tolerant, timeout-aware, multiprocessed execution.
- Engineered a production RAG pipeline (OpenAI embeddings + Qdrant) for Q&A over large insurance corpora, plus LLM-powered multi-document comparison for cross-policy analysis.
- Built scalable PDF ingestion with Django, FastAPI, Celery, PostgreSQL, MongoDB, Redis and S3, tuned chunking and retrieval for low latency and high precision.
- Built Power BI dashboards on pipeline logs tracking STP rate, throughput, fallback/error trends and per-stage latency.
Built with the community
How this connects to the 3D scene
Tasks move through a queue to workers that get them done. This is the backend world I work in — and contribute back to.
Most of what I ship is the backend half of AI systems: Celery task queues, ingestion pipelines, serverless workers. Upstream, I contribute fixes to tools in that space. Both contributions below are merged.
Langfuse, merged: Keep metadata keys that collide with Object.prototype
Reported and fixed a bug where metadata keys such as __proto__ were silently dropped when traces were ingested.
TypeScriptPR #17686 (opens in a new tab)Issue #17685 (opens in a new tab)
Celery, merged: Docs: add missing @app.task decorator to chain example
Fixed a canvas chain example in the Celery docs that was missing its @app.task decorator.
Docs · reSTPR #10613 (opens in a new tab)
Published tools
How this connects to the 3D scene
An AI system is only as useful as the tools it can call. These modules are the ones I built and published: open-source developer tools on PyPI and Open VSX.
Beyond fixes upstream, I build and publish my own developer tools. Both are MIT licensed, have zero runtime dependencies and are open to contributors.
memblamev0.1.2git blame for memory
Finds the commit and the function that made Python code use more memory. It runs your own workload at several commits, measures with tracemalloc and maps the growth to the diff hunk and the allocating line.
- Adaptive search: a 50-commit range usually needs only a handful of real measurements
- Built for CI: exit code 3 on a real regression, plus a self-contained HTML report
- Editor extension with inline CodeLens and one-click “memory vs HEAD” on every test
- Zero dependencies, pure standard library
pip install memblamememblame on GitHub (opens in a new tab)memblame on PyPI (opens in a new tab)memblame on Open VSX (opens in a new tab)
histodiffv0.2.0diffs that survive moved code
Python diffing that stays readable when lines move, repeat or get reformatted. One row inserted into a 4,000-row CSV: difflib reports 4,001 changed lines, histodiff reports 1.
- Histogram, patience and Myers alignment, versus difflib's one
- Move detection: a relocated function shows as moved, not 300+ deleted and added lines
- Word-level highlighting, drop-in git diff integration, terminal / HTML / JSON output
- Zero runtime dependencies
pip install histodiffhistodiff on GitHub (opens in a new tab)histodiff on PyPI (opens in a new tab)
Selected work
How this connects to the 3D scene
Each layer in this index represents a project. Select a layer or a project card to explore the problem, approach and code.
Real problems, considered solutions. Explore what I built and how it works.
The problem
Recruiting outreach is slow and manual. HireFlow turns a raw job description into structured requirements, surfaces recruiter-approved contacts and runs consented AI screening calls.
What I built
- Monorepo with independently deployable Next.js and FastAPI containers, shipped as multi-stage images to Amazon ECR / ECS.
- Extracts skills, seniority, location and search keywords from a JD; every field is recruiter-editable before use.
- Apollo contact search with per-job dedup and voice-agent screening calls; signed, idempotent webhooks persisted in Supabase PostgreSQL.
The problem
LLM answers over long statistical reports are hard to trust. This is a citation-grounded LangGraph agent over 341 pages of Census reports, built for verifiable multi-state comparisons.
What I built
- Hybrid retrieval: Vertex AI dense embeddings + BM25, fused with Qdrant reciprocal-rank fusion and per-entity evidence reservation.
- End-to-end provenance: PDF checksum → page-bounded chunks → verified claims → citations, with one-shot citation repair and structural refusals.
- Isolated, network-disabled Python executor for generating validated charts and tables.
The problem
An LLM will answer every question about your data, confidently, whether or not the data supports it. truthtable answers plain-English questions across multiple CSV/Excel files: the LLM writes the SQL, DuckDB computes every number.
What I built
- Refuses instead of guessing a join: files that only share an incidental column (like a date) get a “Declined to answer” card rather than silently duplicated totals.
- Generated SQL is validated before it runs (SELECT/WITH only, DDL/DML blocklist, automatic row cap) and the executed query is shown next to every answer.
- Cross-file join keys suggested by column-name similarity; one self-correcting retry on SQL errors; an optional chart when it helps.
Source on GitHub (opens in a new tab)Demo video (opens in a new tab)
The problem
Single-model forecasts miss regime changes. This fuses an attention-based LSTM, XGBoost and anomaly detection over 10+ years of market, fundamental and macro data.
What I built
- Attention LSTM cut RMSE by up to 67.6% (Tesla), 44.9% (Amazon) and 60.6% (Nvidia).
- R² up to 0.99 (Apple) and 0.97 (Google, Tesla, Nvidia); anomaly detection via Isolation Forest and an autoencoder.
The tools behind the thinking
How this connects to the 3D scene
Each point is a skill. Related tools cluster together, just as embeddings bring similar ideas closer in an AI system.
Python first. Most of my work sits where LLMs meet backend infrastructure: retrieval, queues, data stores and the cloud plumbing that keeps them running. Each glowing point in the embedding space is a skill, and related ones cluster together. Hover one to read it.
LLM / RAG
Backend
Data stores
Cloud / infra
Fundamentals
Have something in mind?
How this connects to the 3D scene
A useful system ends with a useful response. This one ends with an invitation to build something together.
Open to backend, Gen AI and Forward Deployed Engineer roles. Email is the fastest way to reach me.