Realistic data, on demand.

Schema-aware. Domain-aware. Foreign-key correct. Deterministic when you ask for it. Generated by an LLM-orchestrated pipeline that doesn't make you fight the model.

Chapter 01Schema introspection

We meet your schema where it lives.

Three ways to describe what you want: a Prisma schema.prisma file, raw SQL DDL, or a live Postgres connection (introspected via information_schema + pg_catalog). All three normalize into the same internal model so the rest of the pipeline doesn't care how you got there.

Composite primary keys, deferred constraints, partial indexes, generated columns, enums — all preserved. We build the FK dependency graph and topo-sort it for insert order.

Internal model · pseudocode
type SchemaModel = {
  tables: Map<TableName, TableModel>;
  deps: DiGraph<TableName>; // FK edges
  order: TableName[]; // topo-sorted insert order
  deferred: ConstraintName[];
}
Chapter 02Generation strategy

LLM-orchestrated, deterministic by default.

For each column, seedkit picks a generator from a layered strategy: column-name + type heuristics first ( email, phone, currency, jsonb shapes), then domain-aware LLM prompts when the column is open-ended (free text, names, addresses by locale).

A per-seed PRNG drives sampling, so --seed my-fixture on a Tuesday yields the exact same rows on a Friday. No model temperature roulette, no “regenerate to get something usable.”

Preview · 5 rows from `users`
Priya Mehta priya@aventar.co pro
Javier Soto j.soto@kite-labs.io enterprise
Naomi Fields naomi@greenpath.dev free
Elias Brandt elias.b@northwind.io pro
Maya Lin maya@ironroot.studio pro
 
14,820 rows · seed 9a2f4e01
Chapter 03Domain awareness

Names that match the world your app describes.

Pass --prompt "b2b crm" or --scope healthcare and the generators bias accordingly. CRM gets account hierarchies, fintech gets currencies that don't make accountants cry, healthcare gets ICD-10 codes that resolve to real diagnoses.

Free text is locale-aware — German addresses look German, Japanese names look Japanese, prices follow the currency you'd expect.

Same `companies` table · three scopes
── --scope b2b-saas ──
Northwind Foods · SaaS · 14 seats
Aventar · SaaS · 42 seats
 
── --scope fintech-eu ──
Banco Solera S.A. · BIC: SLRAESM1
Helvetia Capital · BIC: HLVECHZZ
 
── --scope healthcare-us ──
Ironwood Clinics · NPI: 1093xxxxx
Greenpath Med · NPI: 1487xxxxx
Chapter 04Foreign-key integrity

No orphans. Even with composite keys and cycles.

The dependency graph is computed before generation begins. Composite keys are treated as units. Cycles (like a users.invited_by → users.id self-reference) are broken by deferring the constraint and inserting nullable first, then patching the references in a second pass.

Run --preview to see sample rows and the FK satisfaction report before touching a database.

$ seedkit new --schema schema.sql --preview
Topo sort... ✓ 8 tables, 14 relations
Detecting cycles... ✓ 1 self-ref (users.invited_by)
Generating rows... ✓ 14,820 rows
Resolving FKs... ✓ 0 orphans
 
FK report:
orgs → users 14820/14820 ✓
deals → orgs, owners 3240/3240 ✓
users → users (self) 9182/9182 ✓ (deferred)
Chapter 05Playground

Sketch in a browser, ship from the CLI.

The same generation engine runs in our browser playground — paste a schema, write a prompt, watch rows appear in a live table. Iterate on the shape without committing to a database. When it looks right, promote it to a live ephemeral DB or a Mock API in one click — same seed, same rows.

Useful for: scoping a new product, sanity-checking a schema before a migration, generating a demo dataset that PMs can poke without your help.

playground · in browser
// prompt
"a small SaaS CRM with orgs,
 users with roles, deals with stages,
 activities, notes"
 
// preview · live table updates as you type
8 tables · 14 relations · live
promote: [live DB] [mock API] [.sql.gz]

Generate your first dataset.

Run it locally with no account, or open the playground for a no-install browser flow.

$npx seedkit-cli new
Setup & install →

Your next database is a sentence away.

$npx seedkit-cli new
// or paste your schema at seedkit.dev

Free to start · No card required · MIT-licensed CLI