AddThisFeature

CSV Import

Let people bring their existing data in.

involved Data & Content

What it adds

A CSV import with column mapping, validation, and a preview before anything is written.

What your agent is told to do

4
  1. 1

    Let the user map their columns to your fields — never assume their header names match yours.

  2. 2

    Validate the whole file and show a preview BEFORE writing anything. Report every bad row, not just the first.

  3. 3

    Import inside a transaction, or make it resumable. A half-finished import is worse than a failed one.

  4. 4

    Process large files in the background and notify the user when it's done.

Edge cases it handles

5
  • Handle the byte-order mark, CRLF line endings, and non-UTF-8 encodings — real CSVs are messy.
  • Handle quoted fields containing commas and newlines.
  • Decide and document what happens on duplicates: skip, update, or fail.
  • A row that fails validation must not silently disappear — report it back.
  • Cap file size and row count; an import endpoint is a memory-exhaustion vector.

Definition of done

8
  • Users map their columns to your fields.
  • The whole file is validated and previewed before any write.
  • Every failing row is reported, with its row number and reason.
  • Imports are transactional or resumable — never half-applied.
  • Encoding, BOM, quoted fields, and line endings are handled.
  • Duplicate behaviour is explicit and documented.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.