R
Rolo
Loading your contacts…
Stay in touch

Pulse

{{ overdueCount }}
Overdue
{{ dueSoonCount }}
Due soon
{{ newCount }}
To reconnect
{{ totalCount }}
People

Jobs to follow up

{{ d.customer }}
{{ d.builderName }}
{{ d.overdueText }}

Needs attention

{{ p.initials }}
{{ p.name }} {{ p.segLabel }} {{ p.pillLabel }}
{{ p.metaPrimary }}
{{ p.dueText }}
{{ p.lastText }}

Reconnect

No check-in logged yet — reach out, then mark it to start their timer.

{{ p.initials }}
{{ p.name }} {{ p.segLabel }}
{{ p.metaPrimary }}
{{ p.lastText }}
You're all caught up
No one's overdue right now. Nice work.
Everyone

Directory

{{ directoryCount }} people
On file Phone Email Address Faded = missing
{{ d.initials }}
{{ d.name }}{{ d.segLabel }}
{{ d.sub }}
No matches.
Coming up

Upcoming

Birthdays

No birthdays yet
Add a birthday on anyone's profile and they'll appear here, sorted by what's next.
{{ b.monthText }}
{{ b.dayText }}
{{ b.name }}
{{ b.turnsText }}
{{ b.inText }}

Follow-ups

Nothing pending — you're caught up.
{{ p.initials }}
{{ p.name }}
{{ p.dueText }}
Active jobs · pre-Asana

Deals

{{ dealStats.active }}
Active jobs
{{ dealStats.awaiting }}
Awaiting deposit
{{ dealStats.due }}
Follow-ups due
{{ dealStats.pipeline }}
Open pipeline
No deals yet
Track a job from first quote through to deposit — once it's paid, hand it off to Asana.
{{ col.label }} {{ col.count }}
{{ d.customer }}
{{ d.builderInitials }}
{{ d.builderName }}
{{ d.scope }}
{{ d.valueText }} {{ d.followText }}
Empty
Shared intake — upload a competitor, factory, or customer quote. The team comments; you convert it into a deal.
No quotes on the desk
Upload one to get started — the team can review and comment before it becomes a deal.
{{ q.title }} {{ q.statusLabel }}
{{ q.sub }} · by {{ q.by }} · {{ q.when }}
file {{ q.comments }} notes
Invitations & guest lists

Parties

No parties yet
Plan a gathering, build a guest list from your contacts, and track who's coming.

Upcoming

{{ e.monthText }}
{{ e.dayText }}
{{ e.name }}{{ e.segLabel }}
{{ e.dateText }} · {{ e.venue }}
{{ e.summary }}
{{ e.headText }}

Past

{{ e.monthText }}
{{ e.dayText }}
{{ e.name }}{{ e.segLabel }}
{{ e.dateText }} · {{ e.venue }}
{{ e.headText }}

{{ modal.title }}

Clean up

Merge duplicate contacts

Grouped by shared phone/email (safe) and by name (review these). Merging keeps every field, tag and note from both records — nothing is deleted without merging.
Phone/email matches are almost always the same person.
No duplicate contacts found.
{{ g.label }}
{{ m.initials }}
{{ m.name }}
{{ m.sub }}
Marketing knowledge

Your selling brain

Paste your talking points, USPs, vendor specs and positioning. The sales-email AI reads this every time it drafts — update it anytime, no redeploy. Leave blank to use the built-in defaults.
Loading your knowledge…
{{ marketingModal.statusText }}
{{ wipeWarn.text }}

{{ dealModal.title }}

{{ r.initials }}
{{ r.name }}
{{ r.sub }}
{{ dealModal.customerPicker.createLabel }}
The buyer you’re selling to. Pulls from your CRM — or add them on the spot.
{{ r.initials }}
{{ r.name }}
{{ r.sub }}
{{ dealModal.builderPicker.createLabel }}
Optional — the contractor/buyer if this job runs through one.

{{ eventModal.title }}

Pre-fill from a past party or your regulars. Everyone comes in as pending — confirm RSVPs as they reply.
Upload a quote
Add it to the shared desk for the team to review and comment.
Source
{{ s.label }}
Attached: {{ intakeUpload.fileName }}
{{ intakeDrawer.title }}{{ intakeDrawer.statusLabel }}
{{ intakeDrawer.customer }} · {{ intakeDrawer.meta }}
Uploaded by {{ intakeDrawer.by }} · {{ intakeDrawer.when }}
{{ intakeDrawer.fileName }}
Status
Notes
{{ c.author }}{{ c.when }}
{{ c.body }}
Clean up
Merge duplicate deals
Deals with the same customer and builder are grouped below. Merging keeps every quote, note, and the furthest stage — then removes the extra copies. Nothing is deleted until you click Merge.
{{ g.title }}
{{ g.count }} copies
{{ r.label }} · {{ r.value }} {{ r.quotes }}
No duplicates left — all clean.
{{ dedupe.count }} duplicate groups
Design invite
{{ inviteDesigner.name }}
Invitation image
In Canva: Share → Download → PNG, then upload it here. Guests see a clean image — no embed, no Canva controls.
Image added ✓ — tap Upload to replace.
Canva invitation
In Canva: Share → More → Embed, copy that link and paste it here — that's the one that shows your design inline. A regular share link still works as a tap-through cover. Set sharing to Anyone with the link.
{{ inviteDesigner.canvaStatusText }}
Shape
{{ c.label }}
Match this to your Canva design’s size to remove the black bars around it.
✨ Describe it
{{ inviteDesigner.aiThumbEl }}
{{ inviteDesigner.aiMsg }}
Template
{{ t.name }}
Design system
{{ t.name }}
{{ t.group }}
Hero
{{ c.label }}
Rendered as a styled gradient backdrop (not a photo). Words like sunset, garden, evening, ocean shift the palette.
Tap Upload photo again to swap. Stored with the event.
Live preview · sample guest “Alex Morgan”
{{ toast }}
{{ tourStepLabel }}

{{ tourTitle }}

{{ tourBody }}