Add CSV Import to Your SaaS with Claude Code

Claude Code is very good at turning "Add a CSV import flow" into a working first pass.

That first pass is almost never the expensive part.

The expensive part is the product surface area that appears once a real user uploads a real spreadsheet.

Claude Code can build it. That does not mean you should own it.

A generated importer usually starts the same way

Typical first pass: file input, parser, preview table, a mapping form, maybe some simple validation.

Then reality expands the scope: XLSX support, column name synonyms, required field handling, row-level error UX, rejected-row export, duplicate detection, test vs live configuration, safe production rollout, privacy and architecture questions.

None of those problems is shocking.

Together they become a real subsystem.

Use Claude Code for integration, not subsystem invention

A better pattern is:

  1. Choose the subsystem you are happy to buy.
  2. Let Claude Code wire it into your application.
  3. Keep your engineering attention for the things users actually pay you for.

For Importer, the integration boundary is intentionally simple:

<Importer
  importerId="imp_contacts"
  publishableKey="bsw_live_pub_..."
  onComplete={async (rows) => {
    await submitRows(rows);
  }}
/>

Your backend decides what to do with the normalized rows.

Bootstrapware handles the spreadsheet-facing workflow. Spreadsheet contents are not sent to Bootstrapware.

A useful Claude Code prompt

Integrate Bootstrapware Importer into this app.

Use a new route called /settings/import-customers.

Requirements:
- Use the Bootstrapware importer component
- Import @bootstrapware/importer/styles.css
- Add a simple heading and explanatory text
- On complete, POST normalized rows to /api/customers/import
- Keep file processing in the browser
- Do not move any database logic client-side
- Do not expose secret keys in the client
- Keep the page component clean and reusable

This works because the prompt is concrete, bounded, and aligned to an existing product.

Buy narrow, build specific

Claude Code makes "I can build this" true more often than ever.

Bootstrapware exists for the narrower question: "Should I still be the one maintaining this in six months?"

If the answer is no, use the agent to integrate the product rather than regenerate the product.

Related: Importer · Agents · Cursor · Codex · Give this to your coding agent