koala73 / koala73/worldmonitor

ops(billing): Legendary 5-seat deal — re-grant comp seats at 2027-08-12 renewal; seat 5 unassigned

Open
#6,690 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
86.6k
Forks
13.1k
Avg merge
8h 4m
Merged PRs (30d)
825

Description

## Context — Legendary 5-seat Standard Pro deal (2026-08-12)

Dodo product `pdt_0NkKmaMPY3grWqiOGtyuG` ("5 × Standard Pro Annual Licenses", $1,596/yr list) was purchased 2026-08-12 by mwachter@legendary.com — subscription `sub_0NlFXgOXerG95LUzA09s4`, customer `cus_0NkbTB5bXe15WHDnXnYnA`, $1,356.60 charged (15% discount), **renews 2027-08-12**, 20-year annual term.

Provisioned 2026-08-14 (all verified in prod):

| Seat | Account | Mechanism | Expires |
|---|---|---|---|
| 1/5 | mwachter@legendary.com (`user_3GraxUC6hGUcNyWQ6m2tNc1rICx`) | attributed subscription (payer) | auto-extends on renewal |
| 2/5 | jgrode@legendary.com (`user_3GvBEZSMnDysr0OIgh2rOxGYL07`) | comp entitlement | 2027-08-12 |
| 3/5 | josh.rivkin@legendary.com (`user_3HpjKwxVCeMafBbdccm15W35lcM`) | comp entitlement | 2027-08-12 |
| 4/5 | mpatel@legendary.com (`user_3HponyaTcQaMGrHqaqEkMig9b7F`) | comp entitlement | 2027-08-12 |
| 5/5 | **unassigned** | — | — |

Product→plan mapping: `productPlans` row (isActive: false) inserted 2026-08-14; durable `LEGACY_PRODUCT_ALIASES` entry in PR #6689.

## Action required around 2027-08-12 (renewal)

The `subscription.renewed` webhook auto-extends **only the payer's** entitlement (attribution resolves via the `customers` row). The three comp seats **do not auto-renew** — after confirming the renewal payment succeeded, re-grant each seat for the new period:

```bash
npx convex run payments/billing:grantComplimentaryEntitlement \
'{"userId":"","planKey":"pro_annual","days":365,"reason":"Legendary 5-seat deal seat N/5 renewal — sub_0NlFXgOXerG95LUzA09s4"}'
```

If the renewal fails/cancels instead, let the comps lapse.

## Open items

- [ ] Seat 5/5 unassigned — assign when Legendary names the fifth user.
- [ ] 2027-08-12: verify renewal charged, then re-grant seats 2–4 (checklist above).
- [ ] Optional: if more deals like this land, consider first-class multi-seat support (the `businessProGrants` machinery is currently `api_business`-only).

https://claude.ai/code/session_01FFuRHjoUEVUA9mkQ5TmCJX

Contributor guide

Open the contributing guide

Research direction

At the 2027-08-12 renewal, first verify that subscription sub_0NlFXgOXerG95LUzA09s4 renewed successfully. Then use payments/billing:grantComplimentaryEntitlement for seats 2–4 with the listed plan, duration, and reason, and confirm the new entitlements. Assign seat 5 only when Legendary provides its user.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
payments
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.