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
| State | Meaning |
|---|---|
| Captured | Opportunity created with icon, title, and expiry — not yet sent. |
| Shared | Sent to people directly or posted to the City Life feed. |
| SavedAsTemplate | Stored for reuse; re-entering Shared on the next send. |
| Viewed | Recipient opened the link — no account required. |
| Close / Interested / NotInterested / Forwarded | The four reactions a viewer can leave. |
| Redeemed | Claimed via redeem code — terminal, anonymous to the platform. |
| Expiring / AlertSent / Expired | The countdown track, running in parallel with reactions. |
Reading the diagram
- An Opportunity is intentionally anonymous — it is claimed by redeem code, not tied to a user record, which is what distinguishes it from a Journey.
SavedAsTemplateis a loop back intoShared, not a terminal state — the same opportunity content can be re-sent repeatedly.Expiring/AlertSentrun in parallel with the reaction path; an Opportunity can be redeemed right up until it expires.