Example specsEmpty state
Seed progress on the empty projects list
An empty-state test that uses Endowed Progress, the Fogg Behavior Model, and Reciprocity so the first project feels already underway.
Aim: Activate more teams from the empty projects list after signup
๐ฏ Hypothesis
- If we treat the empty projects list as a started job instead of an apology
- By filling the first 30% of a setup bar, giving a one-click sample project, and naming the next prompt
- Will more new teams create or open a project in the first session
- Because Endowed Progress makes the remaining work look smaller, Fogg Behavior Model raises ability and supplies a prompt, and Reciprocity gives a useful sample before asking for effort
๐ฌ Research
Psychology / behavioural economics
- People accelerate when they feel they have already moved; endowed progress is why a bar that starts at 30% outperforms a bar at 0%. - source
- Behaviour needs motivation, ability, and a prompt at the same moment (Fogg Behavior Model). An empty list with "Create a project" is a prompt with high friction and no proof of progress. - source
Case studies
- Empty states convert when they show the finished shape of the product and one next action, not a blank apology. - source
- Making the first step easy (EAST) is the usual fix when a new account lands on a list with nothing in it. - source
๐ผ๏ธ Control
The existing UI for the empty projects list after signup.

โจ Treatment
Starts a setup bar at 30%, offers a sample project as the primary action, and keeps "Blank project" as a quiet second option.
<section class="empty">
<header>
<h1>Projects</h1>
<p>Setup <progress value="30" max="100">30%</progress></p>
</header>
<p>Your workspace is ready. Open a sample project to see how a live file looks.</p>
<button type="button">Open sample project</button>
<button type="button" class="quiet">Blank project</button>
</section>
.empty { max-width: 28rem; padding: 1.5rem; font: 16px/1.45 system-ui, sans-serif; }
.empty header { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.empty h1 { margin: 0; font-size: 1.25rem; }
.empty progress { width: 7rem; }
.empty p { margin: 1rem 0; color: #444; }
.empty button { display: block; width: 100%; height: 2.6rem; margin: 0 0 0.5rem; border: 0; border-radius: 8px; background: #111; color: #fff; font-weight: 600; }
.empty button.quiet { background: transparent; color: #333; font-weight: 500; }

๐ Metrics
Primary metric
The deciding metric.
- First-session activation (%) โ share of new teams that open or create a project within 24 hours of signup
Measurement metrics
Help explain the result.
- Sample project opens (%) โ share of empty-state viewers who open the sample
- Blank project creates (%) โ share of empty-state viewers who start from blank
Guardrail metrics
Must not regress during the experiment.
- Day-7 retained teams (%) โ share of activated teams that return within 7 days
- Sample-to-own project (%) โ share of sample openers who later create their own project
๐ Results
| Variant | Visitors | Conversions | Conversion rate |
|---|---|---|---|
| Control | TBD | TBD | TBD |
| Treatment | TBD | TBD | TBD |
โ Conclusion
Variant shipped to all users? Control / treatment
MAGE
Ready-to-run experiment tickets.
Upload a screen. Get a spec written like a growth engineer would write it.
Try MAGE