easy apply · field resolutionchrome extension

Easy Apply,already filled in

Reads your resume once, then resolves every field through six layers — cache, profile, history, rule, inference, and you. It has no code path that presses Submit.

Add to ChromeChrome Web Store ↗

Resolution order *unresolved

NeuroApply resolves each form field through six layers, in order. One: cache, for a question it has seen before. Two: profile, from your resume and settings. Three: history, from how you answered the question last time. Four: rule, from known question patterns. Five: inference, a model call used only for open questions. Six: unresolved — the field is handed to you rather than guessed.

0

Applications submitted without you pressing submit

Resolution pipeline *unresolved

The pipeline short-circuits.

Six layers, checked in a fixed order. A field exits at the first one that can answer it, and everything below that layer never runs. The early exit is why this is fast — and why it is cheap enough to give away.

fieldYears of experienceresolved fromunresolved
  1. 01cacheSeen this exact question before
  2. 02profileYour resume and your settings
  3. 03historyHow you answered it last time
  4. 04ruleKnown question patterns
  5. 05inferenceA model call, open questions only
  6. 06unresolvedHanded to you, never guessed
Order

Cache is checked first, before your profile. The second time a question appears anywhere, layer 01 answers it and nothing below layer 01 runs at all.

Layer 06

Not a deliberate blank — a resolution failure. When nothing above it can answer, the field is handed back to you empty rather than guessed at.

What it actually fills *unresolved

Every field, and where the answer came from.

One LinkedIn Easy Apply form, row by row. Each field stops at the first layer that can answer it — cache before profile, profile before the model. The last two stopped at layer 06, which means NeuroApply had no answer and handed them back instead of inventing one.

FieldResolved valueLayerSource
First nameAlex01 cacheSeen on a previous form
Last nameMorgan01 cacheSeen on a previous form
Email addressalex.morgan@example.com02 profileYour account email
Mobile phone number+1 (555) 013402 profileResume, contact block
CityAustin, Texas02 profileResume, contact block
Resumealex-morgan-resume.pdf02 profileThe file you uploaded
LinkedIn profilelinkedin.com/in/alex-morgan01 cacheSeen on a previous form
Current job titleFrontend Engineer02 profileResume, latest role
Authorized to work in the US?Yes03 historyHow you answered before
Will you need sponsorship?No03 historyHow you answered before
Notice period (days)3002 profileResume, availability
Years of experience with React304 ruleKnown question patterns
Why do you want this role?Drafted for your review05 inferenceModel call, open question
Cover letter (optional)left for you06 unresolvedHanded back, not guessed
Gender (voluntary)left for you06 unresolvedYours to answer

Alex Morgan is a fictional demo persona; no real applicant data appears on this page. NeuroApply fills the form and you press Submit — the extension skips every control whose label contains “submit”.

The one control we never touch *unresolved

We fill it. You send it.

Your browser, your session

NeuroApply runs as an ordinary Chrome extension, inside the real browser session you are already logged into. There are no headless bots, no cloud sessions driving your account from a datacentre, and no scraping servers sitting between you and the posting. The tab is yours; it was already open.

It never asks for your password

NeuroApply never asks for your LinkedIn password. There is nowhere in the product to type one, because nothing on our side ever needs to sign in as you. It reads the questions on the form in front of you, resolves them against the profile we hold on our server, and writes the answers back into the page. That is the surface area — not a login.

You set the velocity

You control how fast applications go out, because you are the one who presses Submit. Velocity is the actual thing platforms penalise — not autofill, not a filled field — and the only hand on that dial is yours. We removed our ability to move it.

Auto-advance is opt-in, and blind to Submit

Auto-advance is off by default. Switch it on and it will walk a multi-step form to Next, Continue or Review — and it skips any button whose label contains the word “submit”. That is one line of code rather than a policy, so here is the line:

if (t.includes('submit')) continue; // never auto-submit

extension/src/content/content.js:92

What the extension puts on your screen

NeuroApply7 questions
Full nameAlex Morgan
Emailalex.morgan@example.com
Phone+1 (555) 0134
Work authorizationYes
Notice period30 days
Preferred locationRemote — US
Why do you want this role?Needs your input
Filled6/7·1 needs your input

NeuroApply has no code path that clicks this.

Setup *unresolved

Three steps. You do them once.

After that, NeuroApply only appears on the application form you already have open.

01

Install the extension

Add it to Chrome. Its host permissions are LinkedIn and its own API — nothing else.

v0.2.1
02

Answer a short guided chat

It reads your resume, then asks only about what’s missing. That becomes your profile.

profile built
03

Open any Easy Apply job

Fields fill in as you scroll. You read them, fix anything, and press Submit yourself.

0 auto-submits

Data handling *unresolved

Your profile is on our server.

Not on your laptop. It sits in our database and is cached for speed, because that is the only way a question on a form you have never opened before gets answered in one round trip. Here is the rest of the ledger — both columns, in the order we would want to read them.

Stays on your machine

never sent

Your LinkedIn password. We never ask for it and there is nowhere in the extension to type it. It works inside the session your own browser is already signed into.

Answers it has already seen. Repeat questions are served from a 24-hour cache in Chrome's local extension storage. Those fields never touch the network at all — only cache misses are sent.

Your switches. The on/off toggle and the auto-advance toggle live in local storage on this machine. They are not synced, and they are not reported anywhere.

Every site that is not LinkedIn. The content script is matched to LinkedIn and runs nowhere else. Your other tabs, your feed and your messages are not read, and the page HTML is never uploaded.

The Submit button. The button-finder skips any control whose label contains the word submit, so an application is never sent for you. The last click is always yours.

Leaves your machine

sent to our backend

The questions on the form you have open. For each field: its label, its type, whether it is required, the options it lists, and anything already in the box — plus the job URL and the platform. That is the request our resolver answers.

Your profile and your resume. They are stored in our Postgres database and cached in Redis. This is not local-first. A field gets answered because our server holds your profile, not because your laptop does.

Corrections you make. Fix an answer we filled and the field label plus your new value come back to us, so the same question is right the next time it appears.

One line per finished application. Company, job title, job URL, how many fields were filled, and the platform. That is what your dashboard history is made of.

Product analytics about you. Our admin panel has a conversion funnel, signups by day and a per-user breakdown. We can see that you signed up and how far you got. We would rather say so than claim we have none.

A ping every ten minutes. A single timer hits our health endpoint so the free-tier backend does not go cold before your first fill. Nothing rides along with it.

What the extension asks Chrome for

five permissions, three hosts — manifest v3, version 0.2.1

This is the whole list, not a summary of it. Chrome shows you the same thing before you install, and the manifest ships as plain text inside the bundle, so you can check every line of it against this one.

activeTab

Act on the tab you are actually looking at, and only when you invoke it.

alarms

The one repeating timer behind the keep-warm ping. It carries no data.

scripting

Re-inject the content script into open LinkedIn tabs after an update, so an application in progress does not break under you.

storage

Hold your login token, your two toggles and the answer cache — all local to this machine.

tabs

Find the LinkedIn tab to talk to, and open your dashboard when you click it in the popup.

*://*.linkedin.com/*

The only site the content script is allowed to run on.

https://neuroapply-ai.onrender.com/*

Our backend. Where the questions go and the answers come from.

http://localhost:8000/*

The development backend. It ships in the public manifest, and we would rather point it out than have you find it.

If a line on this page ever stops being true of the extension you have installed, that is a bug, and it is the kind we want reported first.

Questions *unresolved

Why is it free?

Because running it costs very little. Every field walks a six-layer resolver and stops at the first layer that can answer it — cache, then your profile, then how you answered the same question last time, then known question patterns. A field only reaches a model when all four of those layers came up empty, which by construction is the open-ended questions and nothing else. Layer 05 is one short model call. That is the entire bill.

There is no second business model sitting behind it. Your resume is not sold, rented or handed to an ad network, because there is no ad network — this is one person’s project, not a funded company with a plan for you. Product analytics do exist: signups, and how far people get, on the same server, read by me. If it ever has to charge, that will be said here first.

Will this get my LinkedIn restricted?

Pace is what platforms penalise — hundreds of applications an hour, headless sessions, scripts working through job cards while you sleep. NeuroApply cannot set a pace, because it does not own the last click. It fills the form already open in front of you, then stops and waits.

You read the answers and you press Submit. Every time, on every application. The content script walks the modal’s buttons looking for Next, Continue or Review, and skips anything whose label contains submit. The number of applications it has ever sent on its own is 0 — and it is 0 by construction, not by policy.

if (t.includes('submit')) continue; // never auto-submitextension/src/content/content.js:92

What exactly can it see?

Exactly what the manifest asks for, which is the same list Chrome shows you at install. In full, nothing withheld:

permissionsactiveTabalarmsscriptingstoragetabs
host_permissions*://*.linkedin.com/*https://neuroapply-ai.onrender.com/*http://localhost:8000/*

The content script is registered for *://*.linkedin.com/* and nowhere else, so on every other site it is not running. Nothing on that list reaches your email, your files, or the contents of pages in your other tabs. Manifest v3, extension 0.2.1.

Where does my resume go, and can I delete it?

To a server. Your profile, the resume you upload and the text extracted from it are stored in a managed Postgres database and cached in Redis, because the resolver runs there rather than inside the extension. This is not a local-first tool and describing it as one would be a lie — your answers follow you between machines precisely because they are not sitting on one.

Custom questions that reach layer 05 are sent to OpenAI with the relevant profile context and come back as an answer you can edit before it is used.

Deleting your account removes the stored profile, resume and answer history. Deletion and correction requests go to shishirsingh@gmail.com. What is kept, and who processes it, is written out in full.


Install *unresolved

Stop typing your own name into forms.

Free · No account required to install · Works on every Easy Apply form