Enter CSV rows into a web app with no import

Attach the CSV and name the form. Sai signs in through an approval link, fills the form for each row, checks that every save worked and sends back a row-by-row report. Run it again next month with a new file, or save it as code.

Paste into Sai, or send it from your agent
Use Sai to enter every row of suppliers.csv (attached) into our procurement portal. The portal has no import and no API.

Portal: https://portal.example.com/suppliers/new
Sign-in: send me an approval link. Don't ask for the password in chat.

For each row:
1. Search the supplier list by tax ID first. If it already exists, don't create it again; mark the row "exists".
2. Otherwise open New supplier and fill name, tax ID, address, contact email and payment terms from the CSV.
3. Dates in the CSV are YYYY-MM-DD. Type them in the format the form shows.
4. Click Save and check for the green "Supplier created" message. If the form shows a validation error, copy the error text, leave the row unsaved and move on.

Stop and ask me if the portal shows a CAPTCHA or signs me out.

When you finish, give me a table of every row: created, exists or failed, with the error text and a screenshot of each failure.
Then save these steps as a replayable skill named add_suppliers, with the CSV file as its input.

Watch it run

What Sai does with this prompt

Data entry automation means getting rows from a spreadsheet into another system without retyping them. When the target web app has an import or an API, use it. When it has neither, Sai can fill the form for each row the way a person would, check every save, skip rows that already exist and send back a report of what failed.

What data entry automation means when there is no import

Data entry automation is software that moves data into a system on a person's behalf. With an import or an API, that is a file upload or a request. Without either, the software has to use the app's own forms: open the form, type each field, submit and confirm the result.

Most articles about data entry automation are about reading documents with OCR. This page is about the other half: putting rows you already have into a web app that only accepts them one form at a time.

What manual data entry costs

  • In a 2025 survey of 500 US workers run for Parseur, respondents said they spend more than 9 hours a week moving data into systems, and 56% said it leads to burnout (Parseur and QuestionPro, 2025).
  • Gartner estimates poor data quality costs organizations at least $12.9 million a year on average (Gartner).
  • Checking your own typing does not catch much: in a controlled study, visual checking was no better than single entry, and double entry produced far fewer errors (Barchard and Pace, 2011).

You will see "manual data entry has a 1% to 4% error rate" on many vendor pages. We could not trace it to a primary study, so we do not use it.

Why CSV-to-web-form jobs break

  • Logins and session timeouts. The portal signs you out halfway through a long file, or asks for a code.
  • Validation errors. A date in the wrong format, a postal code the form rejects, a dropdown value that does not match. A script that does not read the error counts the row as done.
  • Duplicates on re-runs. The second run of a half-finished file creates the first rows again, unless something checks first. Payment APIs solve this with idempotency keys; a form needs a search before create.
  • Nobody knows which rows failed. Readers of popular Power Automate tutorials keep asking how to log succeeded and failed rows, and the tutorials do not say (Matthew Devaney).
  • CAPTCHAs. These should go to a person, not be worked around. OpenAI's Operator hands control back for logins and CAPTCHAs for the same reason (OpenAI).

Ways to automate data entry into a web app, compared

ApproachSetupBehind a loginValidation errorsRe-runsBest for
Import or APIMap columns onceYesReported by the systemUsually safeAlways first, when it exists
Browser extensions (Magical, axiom.ai, UI.Vision)Record a flow in your browserYour own sessionUp to you to checkUp to youShort files you run yourself
RPA (Power Automate Desktop, UiPath)Build a flow with a loop and error handlingYesIf you build the handlingIf you build the checksHigh-volume jobs a team maintains
Selenium or Playwright scriptCode per formYes, with session handlingIf you code itIf you code itDevelopers with one stable form
SaiA plain-English task and the fileYes, sign-in through an approval linkReads and reports each oneSearches before it createsForms that change, and agents that need it as a tool

How to enter CSV rows into a web app with Sai

  1. Check for a back door. Look for an import, an API or a URL that pre-fills the form. If one exists, use it.
  2. Attach the file. A CSV or Excel export. Say which column goes in which field, and the date format.
  3. Say how to detect duplicates. "Search by tax ID before creating" turns a re-run into a safe operation.
  4. Say what success looks like. "The green Supplier created message" or "the new record appears in the list".
  5. Approve the sign-in. Sai sends a link; the password never goes through chat. CAPTCHAs and sign-outs come back to you too. See approvals.
  6. Read the report. Fix the failed rows in the CSV and run only those again.

The full prompt is in the Start with a prompt tab above.

Run it from your agent or code

Send the task with the file and ask for typed output, so your code gets one status per row. A repeated idempotency_key returns the earlier run instead of starting a second one:

curl -s https://api.simular.ai/v1/agents/message \
  -H "Authorization: Bearer $SAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Enter every row of {{file}} into the New supplier form at {{url}}. Search by tax ID first and skip suppliers that exist.",
    "options": {
      "inputs": { "file": "suppliers.csv", "url": "https://portal.example.com/suppliers/new" },
      "output_schema": {
        "type": "object",
        "properties": { "rows": { "type": "array", "items": { "type": "object",
          "properties": { "row": { "type": "integer" }, "status": { "enum": ["created", "exists", "failed"] }, "error": { "type": "string" } } } } }
      },
      "idempotency_key": "suppliers-2026-10",
      "recordTrajectory": true
    },
    "wait": false
  }'

Upload the file with /upload and pass what it returns in attachments, then read output.rows from /turns, and see structured output for the schema rules. Coding agents get the same through the @simular-ai/sai-mcp server; the quick start has the setup.

For the next file, ask Sai to save the steps as a replayable skill, or turn the recorded run into code with learned code (research preview).

Tips for clean data entry runs

  • Clean the file first. Trim spaces, fix obvious typos and keep one header row. Sai types what is in the cell.
  • Start with five rows. Check the result in the app, then run the rest.
  • Keep a status column. Write the report's status back into your sheet so the next run only picks up what is left.
  • Respect the site's terms. Use an account you are allowed to automate with, and keep the pace of a person, not a load test.

Limitations

  • Slower than an import. Sai fills one form at a time. For tens of thousands of rows, ask the vendor for an import or an API.
  • It types what you give it. Sai reports validation errors but does not guess the right value for a bad cell.
  • Sign-ins and CAPTCHAs wait for a person. A long run can pause until you answer.

Related use cases: auto-fill online forms from your saved details, automate a legacy Windows app with no API and log call notes in your CRM.

Last reviewed October 17, 2026.

Frequently asked questions

What is data entry automation?

Software that moves data into a system on a person's behalf: through an import or API when the system has one, or by filling the system's own forms when it does not.

How do I automate data entry from Excel or a CSV into a web form?

Use the app's import or API if it has one. If not, use a tool that fills the form for each row: a browser extension, an RPA flow with a loop, a Selenium or Playwright script, or an agent like Sai that reads the file and fills the form from the screen.

Can I automate data entry into a website that has no API?

Yes. Tools that work through the browser can fill and submit the website's forms. Check the site's terms first and use an account you are allowed to automate with.

How do I avoid entering the same row twice?

Search for the record before creating it, using a unique field such as a tax ID or email, and mark matches as existing. With the Sai API, a repeated idempotency_key also returns the earlier run instead of starting a new one.

How do I find out which rows failed?

Ask for a status per row. Sai reads the confirmation or the validation error after each submit and returns created, exists or failed for every row, with the error text and a screenshot.

What happens if the site shows a CAPTCHA or signs me out?

Sai stops and asks you. Sign-ins go through an approval link so the password never enters the chat, and CAPTCHAs are left for a person to solve.

Is a browser extension enough?

For short files you run in your own browser, often yes. For runs your agent or backend starts, files that need duplicate checks, or forms that change, an API call to Sai is easier to keep working.

Can I run the same job next month?

Yes. Ask Sai to save the steps as a replayable skill with the file as its input, then run the skill with the new CSV.

Stop retyping spreadsheets into web forms

Attach the file and name the form. Sai enters every row and tells you exactly which ones need you.