Product - User Flows
Product — User Flows
Trystpilot has three primary user types: Reviewers (anonymous submitters), Readers (anyone browsing profiles), and Subjects (people whose aliases appear on the platform). Each type has a distinct primary journey. All journeys converge at the PostgreSQL layer; no journey requires account creation.
Reviewer Journey
flowchart TD
A([Reviewer lands on site]) --> B{Profile exists?}
B -- Yes --> C[Find profile via search]
B -- No --> D[Request profile creation\nvia submit form]
D --> E[Admin reviews & creates profile]
C --> F[Click 'Write a Review']
E --> F
F --> G[Fill anonymous review form\n6 dimensions + text]
G --> H{hCaptcha passes?}
H -- No --> G
H -- Yes --> I[Fingerprint hash generated]
I --> J{Duplicate check\nsame alias + fingerprint?}
J -- Duplicate --> K[Error: Already reviewed this person]
J -- New --> L[Text filter runs]
L --> M{PII / threats detected?}
M -- Yes --> N[Review quarantined\nfor manual review]
M -- No --> O[Review status = pending]
N --> P{Moderator decision}
P -- Reject --> Q([Review removed])
P -- Approve --> R
O --> R[Review published]
R --> S[Reputation score recomputed]
S --> T([Profile updated])
Reader Journey
flowchart TD
A([Reader lands on site]) --> B[Home page]
B --> C{Intent}
C -- Search by alias --> D[Search bar]
C -- Browse --> E[Recent Reviews feed\nor Top Rated section]
D --> F[Results list]
E --> F
F --> G[Profile page]
G --> H[Star summary + Reputation Index]
G --> I[Rating breakdown bars]
G --> J[Review cards — filtered by star]
J --> K{Wants to act?}
K -- Report review --> L[Abuse report form]
K -- Request removal --> M[Removal request form]
K -- Write own review --> N[Submit flow]
L & M & N --> O([Submitted to queue])
Subject Journey
flowchart TD
A([Subject discovers their profile]) --> B{Response type}
B -- Dispute review --> C[Abuse report form]
B -- Request full removal --> D[Removal request form]
B -- Submit public response --> E[Response thread — planned]
C --> F[Moderator review queue]
D --> G[Admin removal pipeline]
F --> H{Decision}
H -- Actioned --> I[Review removed / quarantined]
H -- Rejected --> J[Review stays]
G --> K{Decision}
K -- Approved --> L[Profile hidden / deleted]
K -- Rejected --> M[Subject notified — planned]