CR

Chanda Charan Reddy

AI & Automation Engineer

📍 Bangalore, India · "I build intelligent systems."

LLM systems Automation Computer vision Real-time control Springer-published
Hi, I'm Charan

I ship production LLM systems for a living — from a Springer-published model that reads chest X-rays well enough for a radiologist to take seriously, to document pipelines that quietly run themselves.

Before any of that, I wrote real-time control code for jet engines at DRDO, where a millisecond of lag isn't a bug — it's a flameout. That job taught me to respect latency and distrust anything that "looks like magic in a notebook and falls apart in production."

Autofill Vault is the opposite kind of project: small, local, and built for an audience of one — me, at 1 a.m., on my fourteenth job application of the week, refusing to type my own phone number one more time. It turned out to be a surprisingly fun problem, so I made it good enough to share.

This is one project. There are 18 more — and a few jet engines — over at charanreddy.dev. Consider this the side door.

The honest part

What I learned building this

No filler. The things that actually changed how I'd build the next one.

01 · The framework problem

Setting .value is a lie to React

My first version "worked" — the text appeared, then vanished on submit because React never knew. The fix (calling the native prototype setter, then firing real input events) is the single most useful DOM trick I picked up all year.

02 · Matching, not guessing

Real forms are gloriously inconsistent

One site's "email" is another's data-testid="contact_field_2". A weighted score across autocomplete tokens, types, labels and synonyms beats any single heuristic — and degrades gracefully when a site is weird.

03 · Restraint as a feature

The best autofill knows when not to fill

Skipping fields you already touched, and never overwriting your work, mattered more to how it feels than any amount of matching cleverness. Trust is built by what a tool refuses to do.

04 · Local-first is liberating

No backend meant no excuses

With everything in chrome.storage.local, there was nowhere to hide a slow API or a "we'll fix privacy later." The constraint made the product simpler and the threat model honest.

05 · The human one

I'll happily over-build a tool to save 30 seconds

And I've made peace with that. The five minutes a day this saves me is almost beside the point — the real payoff was the engineering puzzle, and admitting that to myself was its own small lesson.

Want the technical version?
Read the project deep-dive →
Let's talk

Have an idea? Let's talk.

Want to build something — or break something interesting? I'm open to good problems and better conversations.

Opens your email client — nothing is stored. Crafted with intent.