The life of a designer is a life of fight:

fight against the ugliness.

Massimo Vignelli

Modelling the cost of typing your own name

My role

Design and build, solo

Output

Chrome extension

Problem Statement

Applying for jobs means retyping the same twelve facts about yourself into a different form every time. Greenhouse, Lever, Workday and LinkedIn Easy Apply all ask for the same things in different shapes. Browser autofill handles name and email, then gives up on Current CTC, Notice Period and "How many years of work experience do you have using Figma?"

What I built

FormBuddy saves your profile once, reads the form on the page you are looking at, matches its fields against what you have saved, and fills them. It requests no site access in advance and touches only the tab you invoke it on.

The privacy model was a design constraint, not a footnote. An autofill tool asks you to hand it your phone number, address and salary, so it has to earn that in ways you can check.

Everything stays on your machine. The profile lives in chrome.storage.local, a device-local store. Not a server, because there isn't one. Not Chrome Sync either, so it does not travel between your own devices unless you put it there. The extension makes zero network requests of any kind, and ships with no analytics, telemetry or third-party SDKs. Its fonts and images are bundled in the package rather than pulled from a CDN, so even loading the UI phones nobody.

No website can read it. Extension storage is isolated from page JavaScript, so a tab you have open cannot reach in and read your saved profile. The only values a site ever sees are the ones you deliberately filled into its own form.

No standing access to any site. FormBuddy requests no host permissions at all. It uses Chrome's activeTab, which grants access to a single tab at the moment you click the toolbar button and revokes it afterwards.

There is no background script watching your browsing, and nothing runs on a page until you invoke it there.


The tradeoff is real and I took it deliberately: no persistent content script means no automatic fill on page load, so every fill costs one click. I would rather charge that click than ask for permission to watch every tab.

Measuring the difference

Method used - Keystroke level modeling

I wanted a defensible number rather than a claim. The Keystroke-Level Model decomposes a task into primitive operators with empirically established durations, so two interaction paths can be compared without running a study. It also forced me to be precise about what the tool actually removes, which turned out to be mostly mental retrieval, not typing.

Operators used, from Card, Moran and Newell: K keystroke, P point with mouse (1.10s), B button press (0.10s), H home hands to keyboard (0.40s), M mental preparation (1.35s), R system response. M placement follows Kieras' heuristics, one per cognitive chunk.

Baseline: seven fields, typed by hand

I modelled the fastest realistic manual path, keyboard-navigated with Tab rather than clicking each field, so the saving is a floor rather than a flattering number.

Field

Value modelled

Keystrokes

First name

Hiten

5 + 1 shift

Last name

Rajgor

6 + 1 shift

Email

hiten.rajgor@gmail.com

22 + 1 shift

Mobile

9876543210

10

City

Mumbai

6 + 1 shift

Current CTC

1800000

7

Expected CTC

2400000

7

67 keystrokes, plus 6 Tabs, plus one H + P + BB to enter the first field, plus 7 M operators for retrieving each value.

At K = 0.20s (average skilled typist, 55wpm): 25.75s

The FormBuddy path

M (decide to use it) + P + BB (toolbar icon) + R (popup renders and scans) + P + BB (Fill all fields) + R (fill executes) = 4.95s

Constant, regardless of how many fields the form has.

Result

20.80 seconds saved per form, an 80.8% reduction.

Sensitivity across typing speeds, since K is the only operator the user varies:

Typist

Manual

Saved

Reduction

Good, 90wpm

19.91s

14.96s

75.1%

Average skilled, 55wpm

25.75s

20.80s

80.8%

Average, 40wpm

31.59s

26.64s

84.3%

The saving holds above 75% across the whole range. It grows with field count, because the manual path scales linearly while FormBuddy's is flat.

What the model does not capture

KLM measures error-free expert execution. It excludes typos and corrections, tab-switching to look up your CTC, re-reading a label you misparsed, and the friction of abandoning an application halfway. Those are where the real cost sits, and they compound over a job search rather than adding up linearly.

It also flatters the manual path in one specific way: seven fields is a floor, not a typical form. LinkedIn Easy Apply routinely adds five to ten screening questions on top.

And the honest headline: 30 applications saves about ten minutes. That is not the point. The point is that 9.45 of the 25.75 seconds, over a third, is pure mental retrieval, and that is the part that makes people put the application off until tomorrow.

Where it falls down

The 4.95s path assumes a successful scan. It does not always get one.

Fields with no readable label. Matching runs on whatever text a form associates with an input: a <label for>, an aria attribute, a placeholder, a fieldset legend, nearby wrapper text. Forms that label fields purely by visual position, or by an icon, give it nothing to match on. There is no fallback, and there shouldn't be. Guessing at an unlabelled field is how you put a phone number in a salary box.

Enterprise ATS components. Workday and similar build inputs as heavily wrapped custom components with their own internal state, which often reject a programmatic value or silently revert it. FormBuddy detects these and flags the fill as needing review instead of claiming a success it can't verify.

Controls it deliberately won't touch. Checkboxes are excluded outright, because consent and agreement boxes should be yours to tick. Radio groups are filled only when an option's own label matches a saved value, so a Yes/No screening question is answered from your profile rather than guessed at.

Slow and staged forms. Easy Apply renders its fields across a multi-step modal, so the scan has to wait for a step and be re-run after each one. That turns the flat 4.95s into 4.95s per step. The single-invocation number holds for single-page forms, which is most of Greenhouse and Lever, and degrades gracefully rather than breaking.

The consistent principle is that the tool reports what it could not do rather than quietly failing. Every unfilled match surfaces in the popup as "pick manually", because a silent miss on a salary field is worse than no autofill at all.

Other Projects

Fleet Monitoring System

We designed a platform that consolidated competitor tracking, market share trends, and sales performance into one workspace, giving teams a clear read on where they were winning, where they were losing ground, and why.

Password Protected

Video Telematics System

Designed an intelligent video telematics experience that leverages in-cabin and on-road smart dashcams to identify unsafe driving events, deliver timely interventions, and help fleets build safer driving habits.

Password Protected