A Admin Invite Pipeline
B Employee Self-Service
C Owner Review
D Completion
1 · Magic Link Email
mail.google.com

TransactionalEmail — SendGrid template

convex/integrations/transactionalEmail.ts · profileInviteEmail

2 · Team Profiles Dashboard
app.3bids.io/contractor/team/profiles
Team Profiles
Export Bulk Actions
Team Members
12
Approved
8
Pending Review
2
Not Invited
2
All (12) Approved (8) Pending Review (2) In Progress (1) Not Invited (2)
Name Role Status Last Activity Actions
Mike R. Lead Tech Approved Feb 24 View
Sarah K. Sales Rep Submitted Feb 26 Review
James T. Installer In Progress Feb 25 Remind
Tony M. Dispatcher Not Invited Send Invite
Ana P. Crew Lead Approved Feb 22 View
Carlos V. Door Knocker Not Invited Send Invite
Select All
Send Bulk Invites Send Reminders
Hold Shift to select multiple rows

TeamProfilesDashboard

useQuery(api.teams.profileOnboarding.listTeamProfiles) · useMutation(api.teams.profileOnboarding.bulkSendProfileInvites)

3 · Send Invite Modal
app.3bids.io/contractor/team/profiles
Team Profiles
Team Members
12
Approved
8
Pending Review
2
Not Invited
2

InviteTeamMemberModal

useMutation(api.teams.profileOnboarding.generateProfileLink)

4 · Bulk Invite Progress
app.3bids.io/contractor/team/profiles
Team Profiles
Bulk Actions
Team Members
12
Approved
8
Pending Review
2
Not Invited
0
Sending invites...
4 of 6 sent
tony.m@abcplumbing.com — Sent
carlos.v@abcplumbing.com — Sent
invalid@email — Failed: Invalid email

BulkInviteProgress toast

useMutation(api.teams.profileOnboarding.bulkSendProfileInvites) · onProgress callback


5 · Welcome Landing
onboarding.3bids.io/employee/tk_abc123/profile
ABC Plumbing
ABC Plumbing
Mike R.
Lead Technician
Photo Bio Review
Set Up My Profile
Takes about 3 minutes

WelcomeLanding

useQuery(api.teams.profileOnboarding.getProfileOnboardingStatus)

6 · Headshot Capture
onboarding.3bids.io/employee/tk_abc123/profile?step=headshot
ABC Plumbing
1
Photo
2
Bio
3
Review

Take Your Headshot

This photo will appear on your ‘Meet Your Tech’ card

Position your face within the circle
Take Photo Upload a Photo
Photo tips
Use good lighting, face the camera directly, and smile! A friendly photo helps homeowners feel comfortable.

HeadshotCapture

useMutation(api.teams.profileOnboarding.saveHeadshot) · navigator.mediaDevices.getUserMedia()

7 · Headshot Preview
onboarding.3bids.io/employee/tk_abc123/profile?step=headshot
ABC Plumbing
1
Photo
2
Bio
3
Review

Take Your Headshot

This photo will appear on your ‘Meet Your Tech’ card

MR
Looking great! Use This Photo Retake
Photo tips
Use good lighting, face the camera directly, and smile! A friendly photo helps homeowners feel comfortable.

HeadshotPreview

useMutation(api.teams.profileOnboarding.saveHeadshot) · onConfirm callback

8 · Bio Q&A Form
onboarding.3bids.io/employee/tk_abc123/profile?step=bio
ABC Plumbing
Photo
2
Bio
3
Review

Tell Us About Yourself

Answer 3 quick questions and we’ll create a professional bio for you

1
How long have you been with the company?
e.g., I’ve been with the team for 3 years...
47/300
2
Why do you love what you do?
I love solving problems and seeing the relief on customers’ faces when everything works
89/300
3
One fun fact about you
I’m a huge Guardians fan and never miss a game
48/300
Generate My Bio Save Answers
How it works
Our AI uses your answers to write a friendly, professional bio that helps homeowners get to know you before their appointment.

BioQAForm

useMutation(api.teams.profileOnboarding.saveBioQA) · useMutation(api.teams.profileOnboarding.generateAiBio)

9 · AI Bio Preview
onboarding.3bids.io/employee/tk_abc123/profile?step=bio
ABC Plumbing
Photo
2
Bio
3
Review

Your Bio

AI Generated
Your Answers
3 years with ABC Plumbing
Loves solving problems, seeing customer relief
Huge Guardians fan, never misses a game
Your Bio
Mike has been a trusted member of the ABC Plumbing team for 3 years, bringing his passion for problem-solving to every job. He takes pride in seeing the relief on customers’ faces when everything works perfectly. When he’s not fixing pipes, you’ll find him cheering on the Guardians — he never misses a game!
Use This Bio Edit Manually Regenerate

BioPreview

useMutation(api.teams.profileOnboarding.saveBioDirect) · useQuery streaming response

10 · Review & Submit
onboarding.3bids.io/employee/tk_abc123/profile?step=review
ABC Plumbing
Photo
Bio
3
Review

Review Your Profile

This is exactly what homeowners will see before their appointment

MR
Mike R.
Lead Technician
ABC Plumbing
Mike has been a trusted member of the ABC Plumbing team for 3 years, bringing his passion for problem-solving to every job. He takes pride in seeing the relief on customers’ faces when everything works perfectly. When he’s not fixing pipes, you’ll find him cheering on the Guardians — he never misses a game!
Photo Bio
Submit for Review
Your manager will review and approve your profile

ProfileSummaryCard

useMutation(api.teams.profileOnboarding.submitProfile) · ProfileProgress validation


11 · Pending Reviews Queue
app.3bids.io/contractor/team/profiles/reviews
Profile Reviews
2 Pending
Review submitted profiles before they go live to homeowners
SK
Sarah Kim
Sales Rep · Submitted 2 hours ago
Ready for Review
JT
James Torres
Installer · Submitted 1 day ago
Ready for Review
Approved profiles appear on the homeowner’s ‘On My Way’ notification and job cards

PendingReviewsQueue

useQuery(api.teams.profileOnboarding.listPendingProfileReviews)

12 · Profile Review Detail
app.3bids.io/contractor/team/profiles/reviews/member_sk123
Review Profile
SK
Sarah Kim
Sales Rep
Submitted
Headshot
Uploaded Feb 26, 2026
Bio
AI Generated
Sarah brings 5 years of home services expertise to ABC Plumbing. Known for her warm personality and attention to detail, she ensures every customer feels heard and valued. Outside of work, Sarah is an avid trail runner who’s completed three half marathons.
Q&A Answers
“5 years in home services, 2 at ABC Plumbing”
“Making customers feel heard and valued”
“Completed three half marathons”
Completion
Headshot uploaded
Bio generated (AI)
Profile submitted
Approve Profile Reject with Feedback
Rejection sends a new magic link so the employee can revise and resubmit

ProfileReviewDetail

useQuery(api.teams.profileOnboarding.getMemberForProfileReview) · useMutation(api.teams.profileOnboarding.reviewProfile)

13 · Reject with Feedback
app.3bids.io/contractor/team/profiles/reviews/member_sk123
Review Profile
SK
Sarah Kim
Sales Rep

RejectWithFeedbackModal

useMutation(api.teams.profileOnboarding.reviewProfile) · action: “reject”, rejectionReason


14 · Submission Success
onboarding.3bids.io/employee/tk_abc123/profile?step=submitted
ABC Plumbing
Photo
Bio
Review
Profile Submitted!
Your manager will review your profile shortly
What happens next
Your profile is being reviewed
You’ll get a notification when approved
Homeowners will see your profile on their jobs
Close

SubmissionSuccess

useMutation(api.teams.profileOnboarding.submitProfile) · onSuccess celebration


Team Profile Onboarding — System Architecture
Backend (Convex)
contractorTeamMembers — team roster with profile status
teamMemberProfileTokens — magic link tokens with 7-day expiry
Mutations
generateProfileLink — create magic link + send email
saveHeadshot — upload + store headshot image
saveBioDirect — save manually edited bio
saveBioQA — save Q&A answers
generateAiBio — AI bio from Q&A answers
submitProfile — submit for owner review
reviewProfile — approve/reject with rejectionReason
bulkSendProfileInvites — batch invite multiple members
bulkSendReminders — batch reminder emails
revokeProfileLink — cancel invitation, reset to not_invited
resendProfileInvite — revoke old token + issue new one
Queries
getProfileOnboardingStatus — summary counts + member list with status
listPendingProfileReviews — submitted profiles queue
getMemberForProfileReview — full profile for review
RN Screens
app/(contractor)/team/profiles/index.tsx — dashboard + pipeline
app/(contractor)/team/profiles/[memberId].tsx — review detail
Web Pages
web/internal/onboarding/app/employee/[tokenId]/profile/page.tsx
Components
HeadshotCapture — camera + upload with face guide
BioQAForm — 3-question form with char counters
BioPreview — before/after with AI streaming
ProfileProgress — 3-step progress indicator
ProfileSummaryCard — Meet Your Tech preview card
HTTP Endpoints
POST /v1/employee/profile/{tokenId}/headshot
POST /v1/employee/profile/{tokenId}/bio/direct
POST /v1/employee/profile/{tokenId}/bio/qa
POST /v1/employee/profile/{tokenId}/bio/generate
POST /v1/employee/profile/{tokenId}/submit
Invite & Self-Service
9:41
Team Profile Onboarding
Invite Pipeline
Email
jake@example.com
Role
Lead Installer
Send Invite
Pending Invites
tom@example.com
Sent 2 days ago
anna@example.com
Sent 5 days ago
Self-Service Portal Preview
Full Name
Jake Martinez
Phone
(330) 555-0147
Bio
10 years roofing experience, certified in shingle & metal systems.
Upload Avatar
Review & Completion
9:41
Review & Completion
Pending Reviews
Jake Martinez
Submitted Mar 8
Review
Sarah Kim
Approved Mar 5
Complete
Profile Review — Jake Martinez
Role
Lead Installer
Experience
10 years
Approve
Reject
Onboarding Hub
https://app.3bids.io/contractor/team/onboarding
3Bids
Invite ⌘1
Self-Service ⌘2
Review ⌘3
Completed ⌘4
MK
Mike Kowalski
Contractor
Settings ⌘,

Onboarding Hub

3
Invites Sent
1
Pending Review
9
Completed
12
Total Members
Onboarding Pipeline
Jake Martinez
Invite sent • Awaiting review
Tom Wilson
Invite sent • Not started
Anna Chen
Invite sent • Not started
Completion Rate
75%
Team Onboarded