Product Design

Onboarding flow

How a new agency goes from signup to a working market in one sitting. The wizard already captures who the user is, the website scraper already enriches their company. The missing pieces are product, not plumbing: capturing who they sell to, and turning the finish screen into a real reveal.

Steps 3 → 4New ICP + revealReuses website scraperPayoff populated list
AccountProfileCompanyICPFirst list
00

The flow today

Onboarding is a three-step wizard with a left-rail of numbered pills. It captures who the user is and what their company is, then drops them on an empty dashboard. The activation moment never happens.

3
Wizard steps
account · profile · company
1
Already enriches
website scraper, today
0
Companies shown
empty dashboard on finish
The gap. The company step captures who the user is, never who they want to sell to. With no ICP there is nothing to build a market from, so the finish screen is a fake five-second timer and the user lands on a blank slate. Two new product surfaces close it: an ICP step, and a build-and-reveal that replaces the timer.
01

The journey

The whole signup as the user walks it. The flow today captures who the user is; the two new steps capture who they sell to and turn the finish into a reveal. Click any step to see what the user sees and what happens behind it.

  1. Captures who you are
  2. 1
  3. 2
  4. 3
  5. 4
  6. Captures who you sell to
  7. 5
  8. 6
  9. 7
  10. The payoff
  11. 8
5

Your ideal customer

Step 4 · describe your ICP · describe your ICP
new

NEW. Before any filters, ask the user who they sell to in plain language. We seed an AI suggestion from their self-enriched company, which they confirm or edit. This captures intent up front and pre-fills the structured filters in the next step, so the user is editing a sensible default rather than starting from a blank form.

Prototype · Step 4 · describe your ICP
Onboarding (step 4 of 5)
Account setup
Personal profile
Company profile
4Your ideal customernew
5Who you sell tonew
Your ideal customer

Based on your company, here's who we think you sell to. Confirm or edit.

✦ AI suggestion

Mid-market e-commerce and SaaS companies in the US and UK, 50-200 staff, marketing or growth leaders.

Describe your ideal customere.g. DTC brands scaling past $5M ARR, led by a VP of Growth…
Next step →
02

Who you sell to

The new step 4. Pick the segments that describe your buyer and watch the estimated market move — a tighter ICP means a smaller, sharper list. Then build it and see the reveal that replaces the old loading timer.

Industry
Geography
Headcount
Estimated market3,898companies match this ICP
The estimate is illustrative, but the relationship is the point: the ICP filters are a structured predicate, and the market is everything in the shared data graph that satisfies it. Pre-fill the filters from the self-enrichment so the user is editing a sensible default, not staring at an empty form.
03

The payoff

The single biggest change is what the user sees on finish. Today: a blank dashboard and a "now what?". With the reveal: a ranked list of real companies that match their ICP, ready to work, with signals filling in as they scroll.

Before
Empty dashboard
fake 5s timer, then nothing
After
Populated list
ranked market + live signals
04

The TAM, end to end

The market built at onboarding is one layer of a funnel from the shared data graph to revenue. Each layer narrows monotonically, gated by a filter — ICP predicate, score threshold, curation, stage promotion, sales motion — and maps onto the classic TAM / SAM / SOM frame so product and GTM share one mental model. Click a layer.

intel_org_tamSAM

TAM (materialized)

The reachable, ICP-matched slice this org can actually serve. Stored as a materialized membership table for O(1) lookup — built at onboarding, rebuilt on an ICP edit, reconciled nightly. This is the list the user lands on.

Once the TAM exists, users meet it through three lanes — search is demoted from primary entry point to one widening tool, after the system lands them on a pre-built market.

Signal feed

System pushes ranked events on TAM companies.

Default landing surface. Score 0-10, threshold-gated.
Manual search

Sonar + Headhunter on demand.

Widens the TAM when the ICP is incomplete or adjacent segments matter.
TAM browse

Filter and sort the materialized list.

Saved views like "hot-tier with funding in the last 90 days".
05

UX states

The build is asynchronous and the predicate can land anywhere from zero to huge, so the reveal needs graceful states. None of them should ever read as a dead end.

md

Zero matches

The predicate is too tight. Inline prompt to loosen a filter, with the segment that cut the most shown first. Never a dead-end empty screen.

md

Very large market (>cap)

Build the top slice by fit and nudge "your ICP is broad, consider a tighter filter" so the first list still feels curated, not a phone book.

lo

Self-enrichment failed

Company URL unreachable, so skip the enriched-company preview and fall back to the ICP form alone. The build still runs on the explicit filters.

lo

Build still running

The list renders from the first batch while signals backfill in the background. The user explores immediately, never staring at a spinner.

AgencyCore · Onboarding flowaccount → profile → company → ICP → build → first list