Look at the file @docs/project-description.md and work out user stories for the project.
Ask me any clarifying questions using AskUserQuestion tool, to improve the result.
Save result in the file @docs/user-stories.md.
Below you will see an example Project Description and example User Stories from it. Please mimic similar structure and depth of details.
Example Project Description
I’m building VisaNauta, a marketplace platform that connects immigration clients with licensed Regulated Canadian Immigration Consultants (RCICs) in Canada. Think “Upwork for immigration consultants.”
I need an experienced full-stack developer to build the MVP (Minimum Viable Product) from scratch.
WHAT I NEED BUILT:
This is a marketplace platform with 3 user types:
Clients (people seeking immigration services)
RCICs (immigration consultants)
Admin (me)
CORE FEATURES:
âś“ User Authentication & Profiles - Sign up / Login (email + Google OAuth) - Separate dashboards for Clients, RCICs, and Admin - Profile management (photo, bio, credentials)
âś“ RCIC Directory & Search - Browse all registered RCICs - Filter by: specialty, language, location, price, rating - Sort by: rating, price, experience, availability - RCIC profile pages with detailed information
âś“ Booking System - Calendar showing RCIC availability - Time slot selection - Consultation type selection (video/phone/in-person) - Booking confirmation with details
âś“ Payment Processing - Stripe integration (I already have Stripe account) - Secure payment for consultations - Automatic commission split (platform takes 20%, RCIC gets 80%) - Payment confirmation emails
âś“ Review & Rating System - 5-star rating system - Text reviews from clients - Display average rating on RCIC profiles - Sort RCICs by rating
✓ Email Notifications - Booking confirmations (client + RCIC) - Reminders 24 hours before consultation - “Rate your experience” emails after consultation - Use SendGrid or similar (I can provide API key)
âś“ Admin Dashboard - View all users, RCICs, bookings - Approve/reject RCIC applications - Manage platform settings - View revenue analytics
Example User Stories
Overview
This document contains user stories for VisaNauta, a marketplace platform connecting immigration clients with Regulated Canadian Immigration Consultants (RCICs).
User Types:
Client - People seeking immigration services
RCIC - Regulated Canadian Immigration Consultants
Admin - Platform administrator
Visitor - Unauthenticated user browsing the platform
- Authentication & Registration
US-1.1: Client Email Registration
As a Client I want to register with my email and password So that I can create an account to book consultations
Acceptance Criteria:
Registration form collects: name, email, password, password confirmation
Email must be unique in the system
Password must meet minimum security requirements (8+ characters)
User receives email verification link
Account is created with “client” role
User is redirected to client dashboard after verification
Expected Result: Client account is created and user can access client-specific features.
US-1.2: Client Google OAuth Registration
As a Client I want to register using my Google account So that I can quickly create an account without remembering another password
Acceptance Criteria:
“Sign up with Google” button is visible on registration page
Clicking initiates Google OAuth flow
If email already exists, account is linked to Google
If new email, new client account is created
User is redirected to client dashboard
Expected Result: Client can authenticate via Google and access their dashboard.
US-1.3: RCIC Registration & Application
As an RCIC I want to register and apply to join the platform So that I can offer my immigration consulting services
Acceptance Criteria:
Registration form collects: name, email, password, RCIC license number
RCIC must provide proof of credentials (upload document)
Account is created with “rcic” role and “pending” status
RCIC receives confirmation email that application is under review
Admin receives notification of new RCIC application
RCIC cannot access booking features until approved
Expected Result: RCIC application is submitted and awaiting admin approval.
US-1.4: User Login
As a registered user (Client, RCIC, or Admin) I want to log in to my account So that I can access my personalized dashboard
Acceptance Criteria:
Login form accepts email and password
“Login with Google” option available
Invalid credentials show appropriate error message
Successful login redirects to role-specific dashboard
“Remember me” option persists session
Expected Result: User is authenticated and redirected to their appropriate dashboard.
US-1.5: Password Reset
As a registered user I want to reset my password if I forget it So that I can regain access to my account
Acceptance Criteria:
“Forgot password” link on login page
User enters email address
Password reset link sent to email (valid for 60 minutes)
User can set new password via reset link
Confirmation message shown after successful reset
Expected Result: User receives reset email and can set a new password.
- Profile Management
US-2.1: Client Profile Management
As a Client I want to manage my profile information So that RCICs can know who they’re consulting with
Acceptance Criteria:
Client can upload/change profile photo
Client can edit: name, phone number, bio
Client can add immigration goals/interests (optional)
Changes are saved and reflected immediately
Profile photo has size/format restrictions (max 2MB, jpg/png)
Expected Result: Client profile is updated and visible to RCICs during bookings.
US-2.2: RCIC Profile Management
As an RCIC I want to manage my professional profile So that clients can learn about my expertise and decide to book with me
Acceptance Criteria:
RCIC can upload/change profile photo
RCIC can edit: name, bio, phone number
RCIC can set specialties (multi-select from predefined list):
Express Entry
Family Sponsorship
Work Permits
Study Permits
Provincial Nominee Programs
Citizenship
Refugee/Asylum
Business Immigration
RCIC can set languages spoken (multi-select)
RCIC can set location (city, province)
RCIC can set years of experience
RCIC can set consultation rates (hourly or per-session)
RCIC can add credentials/certifications
Profile changes reflect immediately on public profile
Expected Result: RCIC profile displays comprehensive professional information to potential clients.
US-2.3: RCIC Availability Management
As an RCIC I want to set my availability schedule So that clients can only book during times I’m available
Acceptance Criteria:
RCIC can set weekly recurring availability (e.g., Mon-Fri 9am-5pm)
RCIC can block specific dates (vacations, holidays)
RCIC can set consultation duration (30min, 60min, 90min)
RCIC can set buffer time between appointments
Availability syncs with booking calendar
RCIC can set timezone
Expected Result: Booking calendar only shows time slots when RCIC is available.
- RCIC Directory & Search
US-3.1: Browse RCIC Directory
As a Visitor or Client I want to browse all approved RCICs So that I can find a consultant for my immigration needs
Acceptance Criteria:
Directory page lists all approved RCICs
Each listing shows: photo, name, specialties, rating, price range, location
Pagination or infinite scroll for large lists
Only approved RCICs are displayed
Default sort by rating (highest first)
Expected Result: User sees a list of available RCICs with key information.
US-3.2: Filter RCICs
As a Visitor or Client I want to filter RCICs by various criteria So that I can narrow down consultants that match my needs
Acceptance Criteria:
Filter by specialty (checkbox, multi-select)
Filter by language (checkbox, multi-select)
Filter by location (province/city dropdown)
Filter by price range (slider or min/max inputs)
Filter by minimum rating (1-5 stars)
Filters can be combined
Results update in real-time or on “Apply” button
“Clear filters” option available
URL updates with filter parameters (shareable/bookmarkable)
Expected Result: Directory shows only RCICs matching selected filter criteria.
US-3.3: Sort RCICs
As a Visitor or Client I want to sort the RCIC list So that I can find the best consultant based on my priorities
Acceptance Criteria:
Sort by rating (highest/lowest)
Sort by price (lowest/highest)
Sort by experience (most/least years)
Sort by availability (soonest available)
Default sort is by rating (highest first)
Sort selection persists during session
Expected Result: RCIC list is reordered based on selected sort criteria.
US-3.4: View RCIC Profile Page
As a Visitor or Client I want to view an RCIC’s detailed profile page So that I can learn more about them before booking
Acceptance Criteria:
Profile page displays:
Profile photo
Full name
Bio/About section
Specialties with descriptions
Languages spoken
Location
Years of experience
Consultation rates
Average rating (stars) and review count
All reviews with ratings
Availability calendar preview
“Book Consultation” CTA button (redirects to login if not authenticated)
Reviews are paginated or “load more”
Expected Result: Client has all information needed to decide whether to book with this RCIC.
- Booking System
US-4.1: View RCIC Availability Calendar
As a Client I want to view an RCIC’s availability calendar So that I can see when they’re available for consultation
Acceptance Criteria:
Calendar displays available time slots
Unavailable/booked slots are greyed out or hidden
Calendar shows current week by default
Can navigate to future weeks
Cannot book slots in the past
Time slots display in client’s local timezone
Minimum booking notice enforced (e.g., 24 hours ahead)
Expected Result: Client sees available booking slots for the selected RCIC.
US-4.2: Book a Consultation
As a Client I want to book a consultation with an RCIC So that I can get professional immigration advice
Acceptance Criteria:
Client selects available time slot
Client selects consultation type:
Video call
Phone call
In-person (if RCIC offers)
Client can add notes/questions for the RCIC
Booking summary shown before payment:
RCIC name
Date and time
Duration
Consultation type
Price
Client proceeds to payment
Slot becomes unavailable for other clients immediately
Expected Result: Booking is created in “pending payment” status.
US-4.3: Complete Booking Payment
As a Client I want to pay for my consultation securely So that my booking is confirmed
Acceptance Criteria:
Stripe checkout form displayed
Accepts major credit/debit cards
Payment amount shows clearly
Successful payment:
Booking status changes to “confirmed”
Confirmation page displayed with booking details
Confirmation email sent to client
Notification sent to RCIC
Failed payment:
Error message displayed
Client can retry payment
Booking remains in “pending” status
Payment is held until consultation completed (optional escrow)
Expected Result: Payment processed, booking confirmed, both parties notified.
US-4.4: View My Bookings (Client)
As a Client I want to view all my bookings So that I can track my upcoming and past consultations
Acceptance Criteria:
Dashboard shows upcoming bookings with:
RCIC name and photo
Date and time
Consultation type
Status (confirmed, completed, cancelled)
Join link (for video calls)
Can view past/completed bookings
Can filter by status
Can cancel upcoming booking (with policy notice)
Expected Result: Client has complete visibility of their booking history.
US-4.5: View My Bookings (RCIC)
As an RCIC I want to view all my bookings So that I can manage my consultation schedule
Acceptance Criteria:
Dashboard shows today’s bookings prominently
Shows upcoming bookings with:
Client name
Date and time
Consultation type
Client’s notes/questions
Can view past/completed bookings
Can view earnings per booking
Can mark consultation as “completed”
Expected Result: RCIC can efficiently manage their consultation schedule.
US-4.6: Cancel Booking
As a Client I want to cancel an upcoming booking So that I can free up the slot if my plans change
Acceptance Criteria:
Cancel button available for upcoming bookings
Cancellation policy displayed:
More than 24 hours: full refund
Less than 24 hours: 50% refund (or as configured)
Client confirms cancellation
Booking status changes to “cancelled”
Refund processed automatically
Time slot becomes available again
Both parties notified via email
Expected Result: Booking cancelled, refund processed, slot reopened.
- Payment Processing
US-5.1: Process Consultation Payment
As the Platform I want to process payments with automatic commission split So that revenue is distributed correctly
Acceptance Criteria:
Payment processed via Stripe
20% platform commission calculated
80% RCIC share calculated
Transaction recorded with breakdown
RCIC payout processed (immediate or scheduled)
Platform commission tracked for analytics
Expected Result: Each payment is split 80/20 between RCIC and platform.
US-5.2: View Earnings (RCIC)
As an RCIC I want to view my earnings and payment history So that I can track my income from the platform
Acceptance Criteria:
Dashboard shows:
Total earnings (all time)
Earnings this month
Pending payouts
Completed payouts
Transaction history with:
Date
Client name
Consultation type
Gross amount
Platform fee
Net amount received
Can filter by date range
Can export earnings report (CSV)
Expected Result: RCIC has complete visibility of their earnings and payout history.
US-5.3: View Payment History (Client)
As a Client I want to view my payment history So that I can track my consultation expenses
Acceptance Criteria:
Payment history shows:
Date
RCIC name
Amount paid
Payment status
Receipt/invoice link
Can download receipt for each payment
Expected Result: Client can access records of all payments made.
- Review & Rating System
US-6.1: Submit Review After Consultation
As a Client I want to rate and review my RCIC after a consultation So that I can share my experience with other clients
Acceptance Criteria:
Review prompt appears after consultation is marked complete
“Rate your experience” email sent 24 hours after consultation
Review form includes:
Star rating (1-5, required)
Text review (optional, max 1000 characters)
Can only review after completed consultation
Can only submit one review per consultation
Review is published immediately (or after moderation)
RCIC’s average rating is recalculated
Expected Result: Review is submitted and displayed on RCIC’s profile.
US-6.2: View Reviews on RCIC Profile
As a Visitor or Client I want to read reviews on an RCIC’s profile So that I can make an informed booking decision
Acceptance Criteria:
Reviews display:
Client first name (privacy)
Star rating
Review text
Date posted
Reviews sorted by newest first (option for highest/lowest rating)
Average rating prominently displayed
Total number of reviews shown
Pagination for many reviews
Expected Result: User can read authentic reviews from past clients.
US-6.3: View My Reviews (RCIC)
As an RCIC I want to view all reviews I’ve received So that I can understand client feedback
Acceptance Criteria:
Dashboard shows recent reviews
Can view all reviews with filtering options
Shows average rating trend over time
Cannot delete or edit reviews
Expected Result: RCIC has visibility into their review history and ratings.
- Email Notifications
US-7.1: Booking Confirmation Emails
As a Client and RCIC I want to receive email confirmation when a booking is made So that I have a record of the appointment details
Acceptance Criteria:
Client receives email with:
Booking confirmation number
RCIC name and photo
Date, time, and timezone
Consultation type
Amount paid
Link to join (if video) or address (if in-person)
Calendar invite attachment (.ics)
RCIC receives email with:
New booking notification
Client name
Date, time, and timezone
Consultation type
Client’s notes/questions
Calendar invite attachment (.ics)
Expected Result: Both parties have email confirmation with all relevant details.
US-7.2: Reminder Emails
As a Client and RCIC I want to receive reminder emails before my consultation So that I don’t forget about the appointment
Acceptance Criteria:
Reminder sent 24 hours before consultation
Email includes:
Appointment details
Join link or location
Reschedule/cancel link (for client)
Optional: Additional reminder 1 hour before
Expected Result: Both parties are reminded of upcoming consultation.
US-7.3: Review Request Email
As the Platform I want to send review request emails after consultations So that clients are prompted to leave feedback
Acceptance Criteria:
Email sent to client after consultation marked complete
Sent within 24 hours of consultation end time
Email includes:
RCIC name
Direct link to leave review
Simple call-to-action
Only sent once per consultation
Not sent if client already submitted review
Expected Result: Clients are reminded to leave reviews, improving platform content.
- Admin Dashboard
US-8.1: View All Users
As an Admin I want to view all registered users So that I can manage the platform’s user base
Acceptance Criteria:
List of all users (clients and RCICs)
Filterable by role (client/RCIC)
Searchable by name or email
Shows: name, email, role, status, registration date
Can view user details
Can deactivate/suspend user accounts
Expected Result: Admin has complete visibility and control over user accounts.
US-8.2: Approve/Reject RCIC Applications
As an Admin I want to review and approve/reject RCIC applications So that only qualified consultants can offer services
Acceptance Criteria:
List of pending RCIC applications
Application shows:
RCIC information
License number
Uploaded credentials
Application date
Admin can verify credentials externally
“Approve” action:
RCIC status changes to “approved”
RCIC receives approval email
RCIC profile becomes visible in directory
“Reject” action:
Admin provides rejection reason
RCIC receives rejection email with reason
RCIC can reapply with corrections
Expected Result: Only verified RCICs are approved to offer services.
US-8.3: View All Bookings
As an Admin I want to view all bookings on the platform So that I can monitor platform activity
Acceptance Criteria:
List of all bookings
Filterable by status (pending, confirmed, completed, cancelled)
Filterable by date range
Searchable by client or RCIC name
Shows: booking ID, client, RCIC, date, status, amount
Can view booking details
Expected Result: Admin has visibility into all booking activity.
US-8.4: View Revenue Analytics
As an Admin I want to view revenue analytics So that I can track platform performance
Acceptance Criteria:
Dashboard shows:
Total revenue (all time)
Revenue this month
Platform commission earned
Number of completed consultations
Charts showing:
Revenue over time (daily/weekly/monthly)
Bookings over time
Top earning RCICs
Can filter by date range
Can export reports
Expected Result: Admin can track and analyze platform financial performance.
US-8.5: Manage Platform Settings
As an Admin I want to manage platform settings So that I can configure how the platform operates
Acceptance Criteria:
Configure commission rate (default 20%)
Configure minimum booking notice (hours)
Configure cancellation policy
Manage specialty categories
Manage supported languages list
Enable/disable new registrations
Expected Result: Admin can customize platform behavior without code changes.
- Additional Features (Nice-to-Have)
US-9.1: RCIC Verification Badge
As a Client I want to see a verification badge on verified RCICs So that I know their credentials have been validated
Acceptance Criteria:
Verified badge displays on RCIC cards and profiles
Badge indicates admin has verified credentials
Tooltip explains what verification means
US-9.2: Favorite/Save RCICs
As a Client I want to save RCICs to a favorites list So that I can easily find them later
Acceptance Criteria:
Heart/bookmark icon on RCIC cards
Favorites list in client dashboard
Can remove from favorites
US-9.3: RCIC Response Time Display
As a Client I want to see how quickly an RCIC typically responds So that I know what to expect
Acceptance Criteria:
Shows average response time on profile
Calculated from booking confirmations
Appendix: User Story Status
ID Story Priority Status
US-1.1 Client Email Registration High Pending
US-1.2 Client Google OAuth Medium Pending
US-1.3 RCIC Registration High Pending
US-1.4 User Login High Pending
US-1.5 Password Reset Medium Pending
US-2.1 Client Profile Management Medium Pending
US-2.2 RCIC Profile Management High Pending
US-2.3 RCIC Availability Management High Pending
US-3.1 Browse RCIC Directory High Pending
US-3.2 Filter RCICs High Pending
US-3.3 Sort RCICs Medium Pending
US-3.4 View RCIC Profile High Pending
US-4.1 View Availability Calendar High Pending
US-4.2 Book Consultation High Pending
US-4.3 Complete Payment High Pending
US-4.4 View Bookings (Client) Medium Pending
US-4.5 View Bookings (RCIC) Medium Pending
US-4.6 Cancel Booking Medium Pending
US-5.1 Payment Processing High Pending
US-5.2 View Earnings (RCIC) Medium Pending
US-5.3 View Payment History Low Pending
US-6.1 Submit Review Medium Pending
US-6.2 View Reviews Medium Pending
US-6.3 RCIC View Reviews Low Pending
US-7.1 Booking Confirmation Emails High Pending
US-7.2 Reminder Emails Medium Pending
US-7.3 Review Request Email Low Pending
US-8.1 View All Users Medium Pending
US-8.2 Approve/Reject RCICs High Pending
US-8.3 View All Bookings Medium Pending
US-8.4 Revenue Analytics Medium Pending
US-8.5 Platform Settings Low Pending