AI Form Filler
Describe your form and axiom's AI builds a bot that fills and submits it from your spreadsheet, then helps you run and fix it. Start no-code, in code, or with a Claude skill.
What an AI form filler does
An AI form filler is a browser bot that types your answers into a web form and submits it.
Describe the form once, the AI maps each answer to a field, and it works through your data one row at a time, text, dropdowns, radios, checkboxes, dates, then clicks submit and starts the next.
Where the AI actually helps
Three places. First, building: you describe the form in plain words and the AI lays out the steps to review before anything runs.
Second, the data: an AI step can tidy a value before it goes in, so a name in the wrong case or a two-line address lands clean.
Third, help while you build: a no-code AI assistant in the extension, powered by Claude, adds steps, loops a range, or fixes a broken selector on request.
The typing itself is plain automation; the AI builds it and handles the judgment.
Who this is for
Anyone who fills the same form again and again.
Submitting entries from a spreadsheet, registering a list of people, re-keying records into a portal with no import button, or seeding a new form with test responses before it goes live.
How I'd approach it
Describe the form, listing the questions and where each answer comes from, and let Build with description lay out the first draft.
Run one row to check the mapping before you loop the rest, so you don't submit a hundred wrong responses.
Build the form filler from a description
Describe the form in the Chrome extension and the AI builds the steps for you. Explore no-code.
An example is on the right. Describe the form and the AI lays out the steps.
Chrome extensionInstructions
- Read the rows from my Google Sheet34 / 500
- Go to the form page19 / 500
- Enter the first name20 / 500
- Enter the last name19 / 500
- Select the country18 / 500
- Enter the email15 / 500
- Click submit12 / 500
Build the form filler in code
Build with code. Describe the form to our Claude skill and it generates and debugs a ready-to-run script you own. Prefer to write it yourself? Explore the code tool.
axiom's step functions, the same library the no-code builder uses. The Claude skill generates and debugs the script for you, and it runs on our cloud Chromium.
Generate it with the Claude skill1import { AxiomApi } from "axiom-api";2 3const axiom = new AxiomApi(process.env.AXIOM_API_KEY);4 5// One row from your Google Sheet6const row = { first: "Ada", last: "Lovelace", email: "ada@example.com" };7 8await axiom.browserOpen();9try {10 await axiom.goto("https://example.com/signup");11 await axiom.enterText('input[aria-label="First name"]', row.first);12 await axiom.enterText('input[aria-label="Last name"]', row.last);13 await axiom.enterText('input[aria-label="Email"]', row.email);14 await axiom.click('button[type=submit]');15} finally {16 await axiom.browserClose();17}18 AI assistant, built in
An AI assistant helps you build the form filler.
axiom's no-code AI assistant is built into the Chrome extension, powered by Claude. Describe the form and it adds, loops, and edits the steps, maps each field, and debugs anything that breaks. Prefer to drive from Claude itself? The Claude skill builds it too.

What can the form filler handle?
Most web forms. A couple of cases worth knowing first.
Works well
- Filling forms from a spreadsheet, row by row
- Text, paragraph, dropdown, radio, and checkbox fields
- Dates, times, and number inputs
- Mapping each field with the AI builder
- Multi-page and multi-step forms
Harder
- Forms behind a login, which need a signed-in session
- File upload fields
- CAPTCHAs and bot checks
- Fields whose id changes on every page load
Don't try
- Submitting spam or fake entries
- Stuffing a poll or a signup
- Anything against a site's terms
What I'd watch out for
Simple to build, but a few things trip up a bot.
Target each field with a custom CSS selector
Some forms render fields without a stable id, so a position-based selector breaks when a field moves. In the selector tool, use a custom CSS selector on an attribute that does not move, like the field's aria-label. For example:
input[aria-label="Email"]
Logins and file uploads need a signed-in session
A login-gated form or a file upload only works when the run is signed in. Store that account's cookies, or leave those parts out.
Map every required field before you loop
If a required field is empty or fails validation, the form won't submit and the run stalls on the first row. Map every required field first.
Test one record first
Run one row and check the result before you loop, it is much easier than undoing a hundred bad submissions.