Walkthrough — Squires Construction · cold startwarm start
One real test customer, run end-to-end across Perch's actual application surfaces — now with two journeys. Cold = a stranger we learn about only after they hand over an email. Warm = a PLG lead we already know, fully customized from the first pixel. Toggle below; the steps, asks, and numbering change with it.
Perch · CRO cockpit · Jun 25 2026 · mock-ups are schematic · sibling to journey-map
Squires Construction
Type
Small commercial GC · Salt Lake City · ~10–20 emp · <$25M
Does
Commercial TI / remodel — restaurant, retail, office
Lands as
Owner-operator (Darin — runs estimating + the company)
Cold: we know nothing. The email is the trigger — everything is gathered after. ~2 asks before value.Warm (PLG): we already have email + name — like McDonald's, the usual is ready. Enrichment pre-ran before they arrived. Zero asks — at most one role tap, depending how warm.
surface real app surfacebuilt exists todayto build greenfieldcustomize tailor to customer
Arrive — a strangerMarketing landerbuilt
perch.pro/general-contractor
Try it on your jobs
Log in
An anonymous visitor hits a GC-framed lander. We know nothing yet — at most a channel hint (search vs ad). The page can't be personalized; it has to earn the email.
Customization here Best we can do is segment by channel / landing URL. Real personalization is impossible until step 2.
Arrive — already knownPersonalized entryto build
app.perch.pro/i/squires · invited
Welcome, Darin 👋
Squires Construction's workspace is ready.
Commercial TISLC
Open my board →
Squires came in through PLG — a bid invite, a shared plan link, a teammate, or outbound we already had their email for. The very first screen is personalized to them by name and company. No form, no generic lander.
Customization hereIdentity is passed in on the PLG link (email + name + company), and enrichment pre-ran before they ever clicked. This is the McDonald's move — the order's already up.
Ask — email onlySignupcustomize
app.perch.pro/start
Work emaildarin@squiresgc.com
See my workspace →
The only ask. No org, no type picker, no password wall. The email domain is the single seed everything downstream grows from.
Customization hereCollapse today's 6-step form to one field. This step is the entire reason cold is slower than warm — it's the ask warm doesn't need.
✓ SkippedAsk email — already have it (PLG) · Ask name — already have it · no signup form at all
Enrich — swarm fires on emailbackgroundto build
⚙ researching squiresgc.com…
⌖ Domain → site
→ Squires Construction
⌖ Classifier
→ GC · commercial TI
⌖ Size
→ <$25M · small
⌖ Role
→ Owner (Darin)
⌖ Project finder
→ 4 SLC TI bids
⌖ Network seeder
→ 9 subs
The instant the email lands, six sub-agents go learn the company — while the email confirms. This is the moment a cold lead becomes known.
Customization hereEntire swarm is greenfield. In cold it runs on the critical path — the customer is waiting, so speed + the ~100% accuracy bar both matter.
Pre-enriched — ready from the ripran aheadto build
✓ cached before arrival
✓ Domain → site
→ Squires Construction
✓ Classifier
→ GC · commercial TI
✓ Size
→ <$25M · small
✓ Role
→ maybe known
✓ Project finder
→ 4 SLC TI bids
✓ Network seeder
→ 9 subs
Because we had the email ahead of time, the swarm already ran — off the critical path, before Squires showed up. Nothing to wait for; it's all cached and loaded.
Customization herePre-enrichment is triggered at PLG capture, not at their click. Same swarm as cold — but it gets more time and can go deeper, and the only soft spot is whether role came with the lead.
Confirm — don't askOnboardingcustomize
app.perch.pro/confirm
"Squires Construction — SLC commercial GC, mostly restaurant + retail TI. You run it. Right?"
GCCommercial TIRestaurant · RetailOwner
Yes, that's usFix something
One screen, one tap. Pre-filled chips replace three old form steps (type, sectors, profile). Wrong? "Fix something" degrades gracefully to a question. Role is captured here.
Customization here Confirm copy + chips generated from the enrichment. Needed in cold because the data is freshly-guessed and the customer hasn't vouched for it yet.
Maybe one tap — depends how warmOnboardingcustomize
app.perch.pro/ · warm
🔥🔥 Role known
No ask at all. Straight to the board. "Welcome back, Darin — here's Squires."
🔥 Role unknown
Exactly one micro-tap: "You're at Squires — estimating, or running it?"
estimatingrunning the company
"How warm" decides everything here. The warmest leads (role came with them) skip even the confirm and land straight on their board. Slightly cooler leads get one question — their role — and nothing else, ever.
Customization here The only possible ask in the warm journey is role, and only when it's unknown. Everything else is already true and pre-filled. Role still must be captured (today's gap) — here it's at most a single tap.
▼ From here, both journeys converge — same surfaces, same value
Reveal value — a pre-filled workspaceJobs · Tomto build
app.perch.pro/dashboard
⚑ A restaurant TI in Sugar House bids in 3 days — want to scope it?
Bidding
Sugar House café TI
$420k · due Fri
Retail shell — Draper
$1.1M · due 6/30
Watching
Office TI — Murray
$680k
Subs
9 subs you use
pre-loaded
Squires lands in a workspace that's already populated — a pipeline of TI jobs they're likely bidding, the subs they use, and a Tom alert on a bid closing this week. Not an empty workspace + a notes box. (In warm, this is the first thing they see.)
Customization here Pipeline seeded from public bids / permits (project-finder); subs from the network seeder. The stickiness lever — real data in during onboarding.
The next question — the conversion leverChat / Copilotcustomize
app.perch.pro/c
Perch
Darin — you've got 4 live bids on the board. Which one's most worth winning? Drop the plans and I'll scope it right now.
The Sugar House café — here's the set 📎
The single most-motivating ask, tuned to an owner-operator: not "what are you bidding this week?" (the estimator's line) but "which is worth winning — I'll scope it." The payoff is their real, live bid.
Customization here The question is role + size conditioned. This exact line per cell is the lever the team signs off on.
Value proof — Sarah scopes the real planJobs · Sarahbuilt
app.perch.pro/jobs/sugar-house-cafe
Scope · Sugar House café TI · 47 pages read
Demo + partitions1,240 SF
Kitchen rough-in (MEP)flagged
Storefront / glazing2 ea
Finishes schedule12 rooms
⚠ Spec calls for grease-duct rated assembly — not in the base drawings. Possible change order.
Sarah reads the actual plan set and returns a scope summary in seconds — with a money flag (a spec/drawing conflict = likely change order). The wow is on their own job, not a canned demo.
Customization here Recipe tuned to GC TI work (scope + buyout summary), not a single-trade takeoff. Sarah exists — the GC recipe is the work.
Activate teamTeamcustomize
app.perch.pro/team
Pull your crew into the board
estimator@squiresgc.comRole: Estimator ▾
super@squiresgc.comRole: Field → Field Ops ▾
Send invites
Squires invites an estimator and a superintendent into the already-built pipeline. Roles are set at invite — and the field role routes somewhere different.
Customization hereCapture role at invite (today hardcoded "member"). The super routes to Field Ops / mobile, not chat. Role-aware invite is a build. Each invite is also a fresh warm lead for the next person.
Check — close in-flowPlan · Stripebuilt
app.perch.pro/plan
You scoped a live bid and built your board. Keep it running —
21-day trial active
Add a card to keep your pipeline after the trial
•••• •••• •••• 4242
Start Squires on Perch
The card ask comes after the value, triggered when Squires scopes a real bid and moves a job. Agent-closed, one session, no salesperson.
Customization here The trigger moment is the customization — earn the card after the first real wow. Stripe + trial exist; the in-flow trigger is the change.
Cold vs warm — what actually differs
❄ Cold start
🔥 Warm start (PLG)
First touch
Anonymous visitor on a generic lander
Personalized entry — greeted by name + company
Email + name
The one thing we ask for
Already have it — never asked
Enrichment
Fires after email, on the critical path
Pre-ran before arrival — cached, deeper
Confirm step
Needed — data is freshly guessed
Usually skipped — only a role tap if role is unknown
Asks before value
~2 (email → confirm)
0–1 (maybe role)
Feels like
A fast, smart intake
McDonald's — "the usual," already up
From value on
Identical — both converge on the same surfaces (Jobs · Chat · Sarah · Team · Plan)
Customization ledger — what each journey demands
The diagram collapsed into a build list — the seed for Brock's decision tree + technical mapping. Warm front-loads the work onto the PLG capture; cold front-loads it onto post-email enrichment.
Stage
Surface
Customization required
Applies to
Warm capture
PLG touchpoint
Pass identity (email+name+role-if-any) on the link; pre-run enrichment before arrival