- Be specific about what went well
- Mention communication and professionalism
- Note if work was completed on time
- Share if the workspace was left clean
Two-way review system for posters and contractors. Category ratings, photo evidence, public profiles, response management, and automated review requests.
PosterLeaveReview — 3 category ratings (Communication, Quality, Recommend), overall auto-computed as average
useQuery(api.jobs.jobs.get) • useMutation(api.users.reviews.submitContractorReview)
ContractorLeaveReview — Overall star rating + 3 categories (Communication, Preparation, Payment Timeliness)
useQuery(api.contractor.jobs.getJobDetail) • useMutation(api.users.reviews.submitPosterReview)
AlertDialog — Success confirmation with review preview card and community message
router.replace("/(poster)/jobs/{jobId}") on dismiss
ContractorReviews — Public profile with rating breakdown bars, category averages, filter/sort, review cards with responses
useContractorReviews() • useContractorProfile()
PosterReviews — Poster profile header, tabs for reviews given vs received, contractor info on each card
useQuery(api.users.reviews.getPosterReviews)
ReviewDetail — Full review with photos, category breakdown, contractor response thread, related job link, report action
useQuery(api.users.reviews.getReviewDetail)
ReviewRequestsDashboard — Funnel stats (sent → opened → responded → submitted), auto-request settings, pending/completed requests
useQuery(api.reviews.queries.getContractorRequestStats) • useQuery(api.reviews.queries.listContractorRequests)
RespondToReview — Original review display, response textarea, best practices tips, live public preview
useMutation(api.users.reviews.respondToReview) • 500 char limit
ReviewRequestsDashboard — Full funnel visualization (Sent → Opened → Responded → Submitted), response rate hero metric, request timeline with status dots
useQuery(api.reviews.queries.getContractorRequestStats) • useQuery(api.reviews.queries.listContractorRequests)
ReviewRequestsDashboard (Empty) — Zero-state with zeroed funnel, explanatory text, onboarding tip
requests.length === 0 → EmptyState component
Your review activity and contractor ratings
Respond to reviews and manage your reputation
Rating trends, sentiment analysis, and keyword insights
Reviews & Ratings Module — dual-role review system with category ratings, response management, and automated requests.
PosterLeaveReviewContractorLeaveReviewContractorReviewsPosterReviewsReviewDetailReviewRequestsDashboardRespondToReviewgetContractorReviewsgetPosterReviewsgetReviewDetailgetContractorRequestStatslistContractorRequestssubmitContractorReviewsubmitPosterReviewrespondToReviewrequestReviewvoteHelpfultoggleFeaturedreportReviewBoth posters and contractors can leave reviews after job completion. Poster reviews have 3 category ratings while contractor reviews rate Communication, Preparation, and Payment Timeliness.
Separate ratings per dimension give homeowners detailed insight. The overall score auto-computes as the average of category ratings, removing subjective single-number bias.
Automated review requests go out 24 hours after job completion with configurable follow-up reminders. Funnel tracks sent → opened → responded → submitted rates.
Contractors can respond publicly to any review (500 char limit). Responses appear threaded below the review on the public profile, building trust through visible engagement.