A brand-new account with zero content looks broken. Users cannot evaluate the product when every screen is empty, so they abandon before creating enough data to see value — the cold-start problem the user-experience taxon warns about. Sample data or starter templates short-circuit that: a new account lands with 1-2 example projects already populated, the UI immediately looks alive, and the user can explore real workflows before committing the effort to create content from scratch.
High because the empty-state cold start is the most common cause of first-session abandonment on content-based SaaS products.
Seed each new account with 1-2 example records on signup. Create src/lib/seed.ts with a seedUserData(userId) function and call it from your post-signup handler so a fresh account lands with sample content already visible. Flag these as sample so you can offer a "clear sample data" action once the user creates their own.
export async function seedUserData(userId: string) {
await db.project.createMany({
data: [
{ userId, name: 'Example Project', template: 'starter' },
{ userId, name: 'Demo Dashboard', template: 'demo' },
],
});
}
ID: saas-onboarding.first-run.sample-data-or-template
Severity: high
What to look for: Enumerate all seeding mechanisms: database seed scripts, "Use template" UI options, demo modes, sandbox environments, starter template galleries. Count the total number available to new users.
Pass criteria: New users can access at least 1 of: pre-populated sample data, a starter template they can clone/use, or a "demo" option. At least 2 example records or templates should be available.
Fail criteria: No sample data, template, or demo content mechanism exists. New users always start with a completely blank slate and must create everything from scratch to experience the product's value.
Skip (N/A) when: The application's purpose is inherently personal or sensitive (e.g., a personal diary, medical records system, private file storage) where sample data would be inappropriate or confusing.
Detail on fail: "No sample data seeding or starter templates found. New users see only empty states and must create all content from scratch before experiencing product value."
Remediation: Add seeding logic in src/lib/seed.ts called from the post-signup flow:
export async function seedUserData(userId: string) {
await db.project.createMany({
data: [
{ userId, name: 'Example Project', template: 'starter' },
{ userId, name: 'Demo Dashboard', template: 'demo' },
],
});
}
Cross-reference: For database seeding patterns and data modeling, the Database Layer Audit covers schema design for user initialization.