Growth · Feature state machine

Advertising Opportunities

A shared Opportunity link — shopping, job, travel, meetup or a simple drink & chat invite — moves from capture through reactions, redemption and expiry, without ever requiring the recipient to hold an account.

State diagram

stateDiagram-v2
    [*] --> Captured
    Captured --> Shared : send to people / post to City Life feed
    Shared --> SavedAsTemplate : "Save to templates"
    SavedAsTemplate --> Shared : reuse template for a new send

    Shared --> Viewed : recipient opens link (no login)
    Viewed --> Close
    Viewed --> Interested
    Viewed --> NotInterested
    Viewed --> Forwarded : "Forward"
    Forwarded --> Viewed : new recipient opens link

    Interested --> Redeemed : claimed by redeem code
    Redeemed --> [*]

    Shared --> Expiring : countdown active
    Expiring --> AlertSent : 30 min before expiry
    AlertSent --> Expired : countdown reaches zero
    Expired --> [*]

    Close --> [*]
    NotInterested --> [*]
    

States

StateMeaning
CapturedOpportunity created with icon, title, and expiry — not yet sent.
SharedSent to people directly or posted to the City Life feed.
SavedAsTemplateStored for reuse; re-entering Shared on the next send.
ViewedRecipient opened the link — no account required.
Close / Interested / NotInterested / ForwardedThe four reactions a viewer can leave.
RedeemedClaimed via redeem code — terminal, anonymous to the platform.
Expiring / AlertSent / ExpiredThe countdown track, running in parallel with reactions.

Reading the diagram