Available for freelance work

Python developer building API integrations and automation.

I connect systems that weren't designed to talk to each other — broker and market-data APIs, messaging platforms, and the glue that keeps scheduled jobs running without silent failures.

Live demos

Working prototypes, deployed and running right now. Click through and poke at them — these are real services, not screenshots.

Live

Real-time NSE indices feed

Serverless function · 60-second refresh · live market data

Pulls NSE index data server-side and re-renders every 60 seconds — the same mechanism a Google Sheet uses with a time-driven Apps Script trigger.

Building it surfaced the thing that breaks most of these: NSE serves index data to servers reliably, but its per-stock quote endpoints sit behind bot protection that blocks datacentre requests. Worth knowing before you build on them.

Open live demo →

Live

Solar digital-twin REST API

10 endpoints · asset hierarchy · KPI engine

A working /api/v1 backend modelling Enterprise → Portfolio → Plant → Block → Asset, with CRUD-shaped reads, consistent JSON error shapes, and a KPI engine computing performance ratio, specific yield and availability from telemetry.

It returns Performance Ratio two ways — uncorrected and temperature-corrected per IEC 61724. On the seeded data those differ by eight points. That gap decides whether a plant looks like it is underperforming, so it belongs in a conversation before the build, not after.

Open live demo →

Live

PDF tables → working Excel workbook

pdfplumber · openpyxl · real files, both downloadable

A source PDF with merged category cells, per-group subtotals and a grand total, and the XLSX produced from it by script. Merged cells are unmerged and forward-filled so sort and filter actually work; every subtotal is a live =SUM(), never a pasted number.

Every total is recomputed and reconciled against the figure printed in the PDF — 16 of 16 match. A pasted total agrees until someone edits a row, then it quietly lies.

Open live demo →

Live

Structure-preserving text extraction

PDF and web page → .txt · Unicode and RTL

Headings stay on their own underlined lines, tables come out as aligned columns that still read as tables in a plain editor, and reading order is preserved by sorting blocks on vertical position rather than dumping tables at the end.

Two real bugs found and fixed while building: a merged table cell was being mis-read as a heading and torn out of its table, and tables were rendering out of order. Tested on a Unicode-heavy page — 1,040 lines, 14 tables, right-to-left runs intact.

Open live demo →

Free tools

Utilities I built for problems that kept recurring, left up for anyone to use. No signup, and no upload — they run inside your own browser.

Live

CSV data-quality audit

Runs client-side · nothing leaves your machine

Drop a spreadsheet export and get a column-by-column profile plus a ranked list of what will break the import: ragged rows, duplicate records, numbers stored as text with currency or thousands separators, two date layouts in one column, and text mangled by a wrong-encoding round-trip.

It deliberately refuses to convert a date column when day-first and month-first cannot be told apart from the data — it flags it and leaves it alone. Tools that guess there are the reason "the dates are wrong" bugs survive to production.

Open tool →

See all free tools →

Selected work

Projects built outside client work.

Multi-broker market-data adapter

Python · Flask · three vendor APIs

Three Indian brokers — Zerodha Kite, Angel One, and Groww — each expose live market data differently: OAuth redirect flow in one, TOTP-based auth in another, minted-and-refreshed tokens in the third. Different field names, different failure modes.

I built a single adapter layer that normalises all three behind one interface, so the application code doesn't know or care which broker is configured. Adding a fourth broker means writing one class, not touching the app.

Credentials are bring-your-own-key: they live in a local environment file on the user's own machine. Nothing hardcoded, nothing uploaded, no shared secrets.

WhatsApp message automation

Node.js · Baileys · linked-device protocol

Reading and sending WhatsApp messages programmatically means handling the linked-device session lifecycle — pairing, session persistence, and reconnecting cleanly when the socket drops.

Built and verified end to end: session linking, structured message logging, and delivery handling. Where a project needs long-term stability rather than a quick script, I'd recommend the official WhatsApp Business Cloud API instead — the setup cost is higher but it won't break on a protocol change.

Options-data research pipeline

Python · six years of NIFTY index data

Testing whether a signal is real, rather than a pattern that happens to fit the sample you tested it on.

A pipeline ingesting six years of minute-level NIFTY options data, computing derived metrics over rolling windows, and validating candidate signals with walk-forward testing on held-out periods. Most of the candidates I tested did not survive that validation — which is the point of running it.

This is data-analysis tooling, not a trading service or investment advice.

CNG Saathi — station finder

Crowdsourced data · OpenStreetMap

CNG station data across India is scattered, and queue times — the thing drivers actually care about — aren't published anywhere.

Seeded 337 stations from OpenStreetMap with a crowdsourced layer for live queue reports. Currently a working front-end prototype with local persistence; the shared backend is the next build step.

What I'm good at

API integrationREST, webhooks, OAuth, rate limits, retries
Data pipelinesScheduled jobs, time-series, validation
AutomationScripts and services that fail loudly, not silently
HandoverCommented code and setup docs you can actually follow

Get in touch

Hire me on Freelancer