Ram Yadav

Jaipur, IN26.9124° N, 75.7873° E--:--Systems online

Hi, I’m

Ram

I build automation for the dull part of a business. Today it’s portals.

Python, agent workflows and API integration. Based in Jaipur.

Start a project See the work

Lender portals filled from one Excel file
8
Land rates searchable offline
63,775
Folders sorted in a single day
2–3 lakh

I don’t like doing the same thing twice. So I sit with the people doing it, write down the rules they follow without noticing, and teach a machine to follow them: slowly, carefully, and without guessing.

Selected work

Real tools, running every day. Names and figures in the screenshots are sample data.

  1. Portal Entry RunnerPython, SQLite2026
  2. Agent workflowAgents, API integration2026
  3. Land rate from a map pinPython, GIS2026
  4. Portal auto-fillChrome extension2026
  5. Dashboard in sentencesSQLite, Chart.js2026
  6. Auctions on one mapScraping, Leaflet2026

Portal Entry Runner

One spreadsheet in. Hundreds of cases walked through a web portal’s whole workflow.

  1. Open
  2. Rework
  3. Pick
  4. Pin on map
  5. Upload
  6. Fill form
  7. Submit
  8. Send

Every case on the portal had to be opened, sent back, picked up, pinned on the map, given its document, filled, submitted and finally sent to the client. By hand that is nine screens per case, a few hundred times over.

The runner reads the case list from Excel and does it the way a careful person would. Before every click it reads what the portal is actually showing, waits between requests, and if you press Stop or the connection drops, it carries on from the exact step where it paused.

  • Its requests match the browser’s own byte for byte, checked by golden tests.
  • 37 tests run against a mock portal, so the real one is never touched while testing.
  • A case with a missing value is held back with the reason shown. Nothing is guessed.
Built with
Python, requests, SQLite, a plain HTML/JS control panel
One full case
About 9 minutes, unattended
Safety
Paced 6–12 s between requests, retries with back-off, stops itself after 3 failures in a row
The control panel: progress by state, filters, and each case’s last step.

Agent workflows that don’t guess

How I run agents on big jobs: one written brief, parallel packets, self-checks, and a person signing off.

One briefrules + checks Agent · packet 1Agent · packet 2Agent · packet 3 …Agent · packet 18Agent · packet 19 Checkssweeps + merge One sheet

When a job is too big for one prompt, I don’t write a bigger prompt. I split the work into small packets, run agents on them in parallel, and give every agent the same written brief.

The brief is the real work: what done looks like, read-only access by default, no copying a value from one item to another, and a blank with a written reason whenever something can’t be proved. Every agent checks its own output before handing back, then plain code sweeps the merged result: ranges, totals and duplicate rows. A person signs off at the end.

Pattern
Brief → packets → parallel agents → self-checks → merge → human sign-off
Rules
Read-only by default, no guessing, every blank explained

Land rate from a map pin

Rajasthan’s government land rates, searchable offline and answered from a coordinate.

Every property valuation has to quote the government’s minimum land rate for its area. The official portal only searches by name, and people in the field come back with a coordinate.

I wrote a harvester that keeps a local copy of every rate for all 41 districts, with history and the boundary of each colony. A pin now returns its rate in milliseconds without internet, plus live land-use, zone and khasra from the state GIS, and makes the map images that go with it. It is the first tool in the valuation industry that gives an up-to-date DLC rate straight from a coordinate.

Built with
Python, SQLite, ArcGIS REST, Pillow
Data
63,775 current rates, history back to 2014
Manners
Paced, resumable downloads that never overload the government server
A pin near Albert Hall, Jaipur, and the rate it falls under.
The plan map it draws for the same point, fully offline.

Portal auto-fill

A Chrome extension that types a finished Excel file into eight different lender portals.

Some portals want the same data typed in field by field: 60 to 380 fields a case. The extension reads the case’s Excel file and fills the form. It finds values by their labels rather than fixed cells, so a slightly different layout still works, and it flags a section in red instead of guessing. Saving and submitting stay a person’s click.

It began as five separate extensions. I merged them into one core with a small plug-in per portal after a review found the same bugs copied into all five.

Built with
JavaScript (Manifest V3), SheetJS, a Node test harness
Tested on
633 real past files for one portal: 3,798 of 3,798 option fields read right
One extension, one tile per portal.
Section by section, with a count of the fields it will fill.

A dashboard that talks in sentences

Three years of monthly exports turned into something the owner reads every morning.

36,000 case records sat in separate monthly spreadsheets. I loaded them into SQLite and built a dashboard on top: which clients are growing, which have gone quiet, how the month is tracking, which weekdays are busiest.

The alerts read like a colleague wrote them: “no cases from this client for 74 days, worth a call.”

Built with
Python, SQLite, Chart.js
Data
36,308 records, 2023–2026
This year against the last, by client.
Alerts in plain sentences.
Heatmaps by day and branch.

Every bank auction in the state, on one map

Three auction sites scraped each morning, scored against the district median.

Auction notices are spread over three websites in three formats. This collects them daily, keeps Rajasthan only, pins each property and compares its reserve price per sq ft with the median for its district, so a cheap listing stands out.

Built with
Python, Flask, BeautifulSoup, Leaflet
Last run
1,266 properties across 47 districts
List and map side by side.

Smaller builds

Folder matcher

Matched 2–3 lakh folders against a spreadsheet by normalising messy names and matching patterns. Anything with two possible matches went to a person instead of being guessed.

Python, pandas

Portal bulk upload

Fills a portal’s bulk-upload sheet with validated values, checks for duplicates, uploads it, then confirms every row actually arrived.

Python, requests, openpyxl

Digital signing queue

Signs PDFs with a USB signature token from a queue with approval. It checks the token’s certificate before sending the PIN, so a wrong token can never get locked.

Python, pyHanko, PKCS#11

Invoice automation

Watches case folders, works out each fee from its slab, fills the invoice and keeps the register in step. Built so that one case can only ever produce one invoice.

Python, openpyxl

Map image makers

Coordinate in, ready-to-use map out: a plan-map crop or a satellite view with the same pin, legend and scale bar.

Python, Pillow, KML

Safe push to a shared server

Pushes finished files to the office server and keeps a ledger of every push. If someone changed the file on the server in the meantime, the push stops instead of writing over their work.

PowerShell

Nearby records and RERA

Finds the closest of 31,500 past records to any point, and pulls every RERA project in Jaipur into a sheet and Google Earth.

Python, SQLite

Try the console

Type a command and press Enter. Start with help.

ram@jaipur: ~/automation

    

What I can build for you

If a person on your team does the same steps every day, there is usually a tool hiding in it.

  • Portal and form automation

    Anything your team types from one system into another.

  • Agent workflows

    Multi-step jobs split across agents with clear rules, self-checks and a human sign-off.

  • API integration

    Your tools talking to each other, so data moves without copy-paste.

  • Data extraction

    The numbers inside PDFs, scans and old spreadsheets, in one clean sheet.

  • Dashboards

    Exports nobody opens, turned into a page people check every morning.

  • Maps and GIS

    Coordinates in; land data, boundaries and map images out.

Ram Yadav
Jaipur, Rajasthan

Hi, I’m Ram.

I’m 21 and I live in Jaipur. I studied maths and physics, and my first job was data entry.

That’s where I got hooked on one question: why is a person doing this by hand, every single day? I’ve been answering it ever since, first with scripts, then with portal runners, map tools and agent workflows.

I work best on real, messy processes. I sit with the people who run them, write down the rules they follow without noticing, and turn those rules into something that runs on its own and says so when it isn’t sure.

How I got here

  1. 2024

    Six months of folder sorting, done in two weeks

    My first job was data entry. Handed 2–3 lakh folders to match against a spreadsheet by hand, I wrote a script that matched the messy names instead and finished in under two weeks.

  2. 2025

    New field, first month

    Moved into GIS without knowing QGIS or ArcGIS. Learned both in the first month, then automated about 70% of the production pipeline and trained eight new people on it.

  3. 2026

    Portals, agents and internal tools

    Now I build portal runners, agent workflows and the tools a team uses every day. My degree is a B.Sc.-B.Ed. in Mathematics and Physics; the rest I learned by building.

Have a task your team repeats every day?

Tell me how it’s done today. I’ll tell you what can be automated and what it would take.

shriyadav1500@gmail.com LinkedIn GitHub