```mermaid graph TD A[START] -->|"load()"| B(View: /) B --> T{logged in?} T --> |YES| M(View: /queue) T --> |NO| L(View: /login) L --> |"login()"| C{has Profile + User?} C --> |YES| B C --> |NO| E(View: /survey?p=1) E --> |NEXT| F(View: /survey?p=2) F --> G{survey complete?} G --> |NO| E G --> |YES| H(POST: /user) H --> |SAVE| I(POST: /profile) I --> |GENERATE| J(POST: /profile/score) J --> |FORWARD| M AD --> |NO| AF(show Profile) AF --> Q{YAY or NAY?} Q --> |YAY| R(POST: /queue/:tid/delete) Q --> |NAY| S(POST: /queue/:tid/reinsert) S --> |NEXT| M R --> |"joinGrouping()"| U{Grouping exists?} U --> |YES| V(MATCHED) U --> |NO| W(Create Grouping + Membership) W --> |FORWARD| M V --> |"sendNotification()"| X(Alert Both Profiles) X --> |FORWARD| Z{Check revealed Tags?} Z --> |"insertHidden()"| N(View: /matched/:id) Z --> |"hide()"| N(View: /matched/:id) N --> |"reveal()"| AA(POST: /tag/reveal) AA --> |"sendNotifications()"| Z AA --> |"saveTagAssociation()"| AB(POST: /tag) N --> |"sendMessage()"| AC(PubNub) AC --> |"getMessages()"| N M --> AD{on blocked list?} AD --> |YES| AE(Hide Profile) AE --> M ```