Skip to content

feat(pricing): rebrand tiers to Free/Personal/Team and refresh value props - #49

Merged
bishopBethel merged 2 commits into
mainfrom
web-dev
Aug 13, 2026
Merged

feat(pricing): rebrand tiers to Free/Personal/Team and refresh value props#49
bishopBethel merged 2 commits into
mainfrom
web-dev

Conversation

@bishopBethel

Copy link
Copy Markdown
Member

Rename Pro→Personal and Max→Team with screenshot-matched pricing ($20/$100 monthly, $16/$80 annual) and updated per-tier value propositions: auto-review, comment-to-review, overage credits, model tiers, onchain bounty automation, and custom review-pipeline workflows. Drop inline-PR-review bullet from paid cards, remove the goal-coverage comparison row, and sync the compare table and FAQ.

…props

Rename Pro→Personal and Max→Team with screenshot-matched pricing
($20/$100 monthly, $16/$80 annual) and updated per-tier value
propositions: auto-review, comment-to-review, overage credits,
model tiers, onchain bounty automation, and custom review-pipeline
workflows. Drop inline-PR-review bullet from paid cards, remove the
goal-coverage comparison row, and sync the compare table and FAQ.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@devasign-agent

devasign-agent Bot commented Aug 13, 2026

Copy link
Copy Markdown

DevAsign review — all acceptance criteria met

End goal

The pricing page renames its paid tiers to Personal and Team (from Pro and Max), applies the specified pricing, refreshes per-tier value propositions, and syncs the comparison table and FAQ accordingly.

All 6 acceptance criteria met

Show met criteria
  • 1 — The pricing tier previously named 'Pro' is renamed to 'Personal' and the tier previously named 'Max' is renamed to 'Team'; the 'Free' tier remains.
  • 2 — The Personal tier displays $20 monthly and $16 annual pricing, and the Team tier displays $100 monthly and $80 annual pricing.
  • 3 — Per-tier value propositions are updated to reflect auto-review, comment-to-review, overage credits, model tiers, onchain bounty automation, and custom review-pipeline workflows.
  • 4 — The inline-PR-review bullet is removed from the paid (Personal and Team) tier cards.
  • 5 — The goal-coverage comparison row is removed from the comparison table.
  • 6 — The comparison table and the FAQ are updated to reflect the renamed tiers, new pricing, and revised value propositions.

@devasign-app

devasign-app Bot commented Aug 13, 2026

Copy link
Copy Markdown

AI Review: All Acceptance Criteria Met

All eight acceptance criteria are satisfied: the Personal/Team rename, the $20/$16 and $100/$80 price pairs, the six new value-prop themes, the removal of the inline-PR-review bullets and the goal-coverage row, and the compare-table/FAQ syncs all check out row-by-row against the cards. The change is copy/JSX only, structurally sound (all added rows have 4 cells, all details blocks balanced), and introduces no TypeScript/lint gate violations (the repo's only gate is vite build; there is no test framework, so no test coverage is expected or possible for this change). One nit is raised about duplicated custom-pipeline copy on the Team card; note also that the PR state shows CI at 1 of 3 checks passed with 2 still running, so the build gate is not yet confirmed green.

Acceptance Criteria

Met

  • ✅ The pricing tier previously named "Pro" is presented as "Personal" and the tier previously named "Max" is presented as "Team" wherever tier names appear. — Every user-visible tier name was traced: the card headings now read Personal (line 146) and Team (line 182), the compare-table headers read Personal / Team (lines 231-232), and all FAQ mentions were rewritten (lines 333, 337, 341, 344-345, 349). The only remaining 'pro'/'max' tokens are non-rendered internals (CSS classes da-plan-pro/da-plan-max/col-max, data-cta/data-plan attributes and the logCtaClick union), which the diff explicitly documents as frozen analytics identifiers at lines 40-41; they never surface as presented tier names.

    src/pages/PricingPage.tsx:230

    230 |                                     <th>Free</th>
    231 |                                     <th>Personal</th>
    232 |                                     <th className="col-max">Team ★</th>
  • ✅ The Personal tier shows $20 for monthly billing and $16 for annual billing. — proPrice resolves to '$20' when billing === 'month' and '$16' otherwise (line 42), and that value is the one rendered in the Personal card price node at line 149 ({proPrice}); billing is toggled to 'year' by the Yearly button in the toggle card, so the annual branch is reachable. proPriceNum (20/16, line 44) is the number passed to logCtaClick for price_monthly, keeping the analytics payload aligned with the displayed figure. The 20% annual discount is arithmetically consistent with the '−20%' toggle label.

    src/pages/PricingPage.tsx:42

    42 |     const proPrice = billing === 'month' ? '$20' : '$16';
    43 |     const maxPrice = billing === 'month' ? '$100' : '$80';
    44 |     const proPriceNum = billing === 'month' ? 20 : 16;
    45 |     const maxPriceNum = billing === 'month' ? 100 : 80;
  • ✅ The Team tier shows $100 for monthly billing and $80 for annual billing. — maxPrice resolves to '$100' monthly and '$80' annually (line 43) and is rendered in the Team card price node at line 185 ({maxPrice}); maxPriceNum (100/80, line 45) feeds logCtaClick's price_monthly so analytics matches the display. $80 is exactly 20% off $100, matching the Yearly '−20%' toggle claim.

    src/pages/PricingPage.tsx:184

    184 |                                 <div className="da-plan-price">
    185 |                                     <span className="num">{maxPrice}</span>
    186 |                                     <span className="per">/ month</span>
    187 |                                 </div>
  • ✅ Per-tier value propositions are updated to cover auto-review, comment-to-review, overage credits, model tiers, onchain bounty automation, and custom review-pipeline workflows. — Enumerated each card's bullet list. Free: auto-review (132), comment-to-review (133), standard model (136), onchain bounty (137) — overage credits and custom workflows are correctly absent for the free tier and shown as XCell in the table. Personal: auto-review (165), comment-to-review (166), 150 overage credits (169), Frontier model (170), custom workflows (171), onchain bounty (172). Team: org-wide auto-review (201), comment-to-review (202), 650 overage credits (205), Frontier model (206), custom workflows (207), onchain bounty (208). All six themes are present on the tiers where they apply.

    src/pages/PricingPage.tsx:169

    169 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>150 overage credits / month</strong> — keep reviewing past the cap</span></div>
    170 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span>Frontier model — managed by DevAsign</span></div>
    171 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Custom workflows</strong> — tailor the review pipeline per repository</span></div>
    172 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Onchain bounty automation</strong> on GitHub</span></div>
  • ✅ The inline-PR-review bullet no longer appears on the paid (Personal and Team) pricing cards. — The 'Inline PR reviews on GitHub — Check Run + grouped review with fix prompts' bullet is deleted from both paid feature lists in this diff (removed lines in the Personal hunk at 162-174 and the Team hunk at 198-211). Walking the resulting lists confirms no inline-review bullet remains: Personal renders lines 165-174 (auto-review, comment-to-review, private+public, 120 reviews, overage, model, workflows, onchain, Linear, Email support) and Team renders 201-211 (org auto-review, comment-to-review, repos, 600 reviews, overage, model, workflows, onchain, policies, Linear, Slack). No regression from the previously satisfied state.

    src/pages/PricingPage.tsx:201

    201 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Auto-reviews every PR opened in your GitHub org</strong></span></div>
    202 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span>Comment <strong>"review"</strong> to review any other PR</span></div>
    203 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Private + public repositories</strong></span></div>
    204 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>600 PR reviews / month</strong></span></div>
  • ✅ The goal-coverage row is removed from the pricing comparison table. — The single 'Goal-coverage scoring & dashboards' row (the only such row in the table per the indexed snapshot of the compare section) is replaced in-place by 'Custom review-pipeline workflows (per repo)' with X/Check/Check cells; the removed row's three cells (XCell, TextCell Org-wide, TextCell max Org-wide) are gone. The corresponding 'Goal-coverage analytics & dashboards' bullet was also dropped from the Team card in the 198-211 hunk, so no goal-coverage claim survives anywhere on the page.

    src/pages/PricingPage.tsx:275

    275 |                                 <tr>
    276 |                                     <td className="feat-name">Custom review-pipeline workflows (per repo)</td>
    277 |                                     <XCell /><CheckCell /><CheckCell max />
    278 |                                 </tr>
  • ✅ The comparison table reflects the renamed tiers, updated prices, and updated value propositions consistently with the pricing cards. — Compared the table row-by-row with the cards: headers Personal/Team (231-232); PR reviews 30/120/600 (249-251) matches cards 135/168/204; overage credits X/150/650 (255-257) matches 169/205 and Free's omission; comment-to-review Check/Check/Check (260-261) matches 133/166/202; org-wide auto-review X/X/Check (264-265) matches Free/Personal 'your own PRs' vs Team's org-wide bullet 201; models Standard/Frontier/Frontier matches 136/170/206; onchain bounty Check/Check/Check (293-296) matches 137/172/208; custom workflows X/Check/Check matches 171/207; Linear X/Check/Check matches 173/210. No price row exists in the table, so there is nothing price-related to desync. The one leftover with no table counterpart is the Team-only 'Custom review policies' bullet (209), raised separately as a nit; it does not contradict any table cell.

    src/pages/PricingPage.tsx:253

    253 |                                 <tr>
    254 |                                     <td className="feat-name">Overage credits / month</td>
    255 |                                     <XCell />
    256 |                                     <TextCell>150</TextCell>
    257 |                                     <TextCell max>650</TextCell>
    258 |                                 </tr>
  • ✅ The pricing FAQ content reflects the renamed tiers and updated pricing/value propositions, with no remaining references to the old Pro/Max names or prices. — Walked all six FAQ entries at head. 'Why is Free public-repo only?' now funds the Personal tier (333); 'Which model reviews my PRs?' says Personal and Team (337); a new 'What are overage credits?' entry cites 150/650, matching cards 169/205 (341); the volume question was rewritten to Personal's 120 -> Team's 600 + 650 credits, replacing the old '50 PR reviews'/'removes the cap' copy (344-345); cancellation copy says Personal and Team (349). The only untouched entry ('What counts as a "PR review"?') contains no tier name and no price, so no Pro/Max name or $15/$45 figure remains in the FAQ.

    src/pages/PricingPage.tsx:344

    344 |                                 <summary>What if my team reviews far more than the cap?</summary>
    345 |                                 <div className="da-faq-body"><p>If you're consistently above Personal's 120 reviews a month, Team lifts you to 600 reviews plus 650 overage credits. Most teams that hit Personal's ceiling upgrade within 60 days.</p></div>

Suggestions

Nitpicks

  • Team card lists two overlapping custom-pipeline bullets, one with no compare-table counterpart (src/pages/PricingPage.tsx:209)
    The Team card now advertises both 'Custom workflows — tailor the review pipeline per repository' (line 207, newly added and backed by the compare row at 276-277) and the pre-existing 'Custom review policies per repo & team' (line 209), which describe the same capability at the same granularity and have no distinct row in the compare table. Readers scanning the card see the benefit twice, and the table cannot be reconciled with the second bullet. Either drop line 209 (the diff already supersedes it) or reword it into a genuinely distinct claim (e.g. org-level policy enforcement) and add the matching table row. Copy-only; no functional impact.

    Suggested Change: line 207

    - 209 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Custom review policies</strong> per repo &amp; team</span></div>

Additional Findings

Nitpicks

  • Copy contradiction introduced in the plan cards: the Free card now claims "Auto-reviews… (src/pages/PricingPage.tsx:132)
    Copy contradiction introduced in the plan cards: the Free card now claims "Auto-reviews your own PRs — every PR you open" (line 132) while the same card caps usage at "30 PR reviews / month" (line 135) with no overage credits (the new compare row at lines 253-258 gives Free an XCell for overage credits). The identical unqualified phrasing is repeated on the Personal card (line 165, capped at 120 reviews + 150 overage). As written the cards promise unconditional auto-review of every opened PR while the same cards and the compare table state a hard monthly cap, which is a user-visible pricing-claim inconsistency.

    Suggested Change:

    - 132 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Auto-reviews your own PRs</strong> — every PR you open</span></div>
    + 132 |                                 <div className="da-feat"><span className="circle-check"><Check /></span><span><strong>Auto-reviews your own PRs</strong> — every PR you open, up to your monthly limit</span></div>
Finding dispositions (4)
  • [nit] src/pages/PricingPage.tsx — Analytics plan identifiers still use the retired pro/max naming: retired (Refuted: 'pro'/'max' are internal Statsig/data-attribute identifiers never rendered to users, and the diff now documents them as deliberately frozen for dashboard continuity (lines 40-41).)
  • [nit] src/pages/PricingPage.tsx — The diff repurposes the "Goal-coverage scoring & dashboards" comparison row into "Custom…: retired (Refuted: the repurposed row (lines 275-278) is exactly the removal criterion 6 requires, and no goal-coverage claim remains anywhere at head, so the rename hides no surviving contradiction.)
  • [nit] src/pages/PricingPage.tsx — The Team card bullet was changed from "Unlimited PR reviews · Priority queue" to…: retired (Refuted: no stale 'Unlimited'/'priority queue' claim remains — the compare row now reads 600 (line 251) and the FAQ was rewritten to 600 reviews plus 650 credits (lines 344-345), so the bullet change leaves the page self-consistent.)
  • [nit] src/pages/PricingPage.tsx — The tiers are renamed to Personal/Team in the UI, but the analytics identifiers are…: retired (Refuted (same ground as the earlier "Analytics plan identifiers still use the retired pro/max naming" finding): data-cta/data-plan values are non-rendered analytics identifiers explicitly documented as frozen at lines 40-41; no user-visible tier name uses the old naming.)
📋 Copy Review for AI Agent

Copy the prompt below and paste it into your AI coding assistant to apply all findings.

Apply the following code review findings to the codebase. For each item, make the described change at the specified file and line. Use the fix instruction when provided, otherwise implement the fix based on the issue description.

1. [NIT] src/pages/PricingPage.tsx:209
   Issue: Team card lists two overlapping custom-pipeline bullets, one with no compare-table counterpart — The Team card now advertises both 'Custom workflows — tailor the review pipeline per repository' (line 207, newly added and backed by the compare row at 276-277) and the pre-existing 'Custom review policies per repo & team' (line 209), which describe the same capability at the same granularity and have no distinct row in the compare table. Readers scanning the card see the benefit twice, and the table cannot be reconciled with the second bullet. Either drop line 209 (the diff already supersedes it) or reword it into a genuinely distinct claim (e.g. org-level policy enforcement) and add the matching table row. Copy-only; no functional impact.
   Fix: In src/pages/PricingPage.tsx, remove the redundant Team-card bullet '<strong>Custom review policies</strong> per repo &amp; team' (line 209) since line 207's '<strong>Custom workflows</strong> — tailor the review pipeline per repository' already covers it and is the bullet mirrored by the compare-table row 'Custom review-pipeline workflows (per repo)'. Alternatively, reword line 209 into a distinct org-level policy claim and add a corresponding row to the compare table.

2. [NIT] src/pages/PricingPage.tsx:132
   Issue: Copy contradiction introduced in the plan cards: the Free card now claims "Auto-reviews… — Copy contradiction introduced in the plan cards: the Free card now claims "Auto-reviews your own PRs — every PR you open" (line 132) while the same card caps usage at "30 PR reviews / month" (line 135) with no overage credits (the new compare row at lines 253-258 gives Free an XCell for overage credits). The identical unqualified phrasing is repeated on the Personal card (line 165, capped at 120 reviews + 150 overage). As written the cards promise unconditional auto-review of every opened PR while the same cards and the compare table state a hard monthly cap, which is a user-visible pricing-claim inconsistency.
   Fix: In src/pages/PricingPage.tsx, qualify the 'Auto-reviews your own PRs' bullets on both the Free card (line 132) and the Personal card (line 165) so they do not promise unlimited auto-review, e.g. '— every PR you open, up to your monthly limit'.
📊 Review metadata
  • Processing time: 196s
  • Completed: 2026-08-13T18:39:43.737Z

🤖 This review was generated by AI. While we strive for accuracy, please use your judgment when applying suggestions.

@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
devasign-website Ready Ready Preview Aug 13, 2026 6:36pm

Add comment-to-review to the Team card and a matching compare row,
document the frozen 'pro'/'max' analytics keys, drop the goal-coverage
claim from the Team card to match the removed compare row, and remove
the unbacked priority-capacity-lane line from the FAQ.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@devasign-agent

devasign-agent Bot commented Aug 13, 2026

Copy link
Copy Markdown

DevAsign review — all acceptance criteria met

End goal

The pricing page renames its paid tiers to Personal and Team (from Pro and Max), applies the specified pricing, refreshes per-tier value propositions, and syncs the comparison table and FAQ accordingly.

All 9 acceptance criteria met

Show met criteria
  • 1 — The pricing tier previously named 'Pro' is renamed to 'Personal' and the tier previously named 'Max' is renamed to 'Team'; the 'Free' tier remains.
  • 2 — The Personal tier displays $20 monthly and $16 annual pricing, and the Team tier displays $100 monthly and $80 annual pricing.
  • 3 — Per-tier value propositions are updated to reflect auto-review, comment-to-review, overage credits, model tiers, onchain bounty automation, and custom review-pipeline workflows.
  • 4 — The inline-PR-review bullet is removed from the paid (Personal and Team) tier cards.
  • 5 — The goal-coverage comparison row is removed from the comparison table.
  • 6 — The comparison table and the FAQ are updated to reflect the renamed tiers, new pricing, and revised value propositions.
  • 7 — The Team tier card and the comparison table both include a 'Comment "review" to review any PR' feature, with the comparison row marked as available for the Team tier.
  • 8 — The Team tier card no longer displays the goal-coverage analytics claim.
  • 9 — The FAQ no longer references a 'priority capacity lane' for the Team tier.

New commits since last review

Commit 4864d74 addresses prior review findings: it adds a comment-to-review bullet to the Team card and a matching comparison-table row, replaces the Team card's goal-coverage analytics line with a 'Linear sync' line (aligning with the removed goal-coverage compare row), documents the frozen 'pro'/'max' analytics keys via a comment, and removes the unbacked 'priority capacity lane' phrase from the FAQ. The changes land their stated intent. One caveat: the new compare row marks the feature as available for all three tiers, which may over-state Free-tier availability and should be verified.

Intent check

  • Warn — src/pages/PricingPage.tsx — Commit 4864d74 adds a compare-table row for 'Comment "review" to review any PR' with three cells (<CheckCell /><CheckCell /><CheckCell max />), implying all three tiers (Free, Personal, Team) support it. But the commit message says this feature is being matched to the Team card only. If Free does not support comment-to-review, marking it with a CheckCell is inaccurate. Verify the per-tier availability matches the actual product.

    Prompt for your AI agent:

    Fix: Verify comment-to-review availability per tier in compare table
    
    File: src/pages/PricingPage.tsx
    Symbol: PricingPage (comparison table)
    
    Issue:
    Commit 4864d74 adds a 'Comment "review" to review any PR' compare row rendering CheckCell for all three tiers (Free, Personal, Team). The commit's stated intent was to add comment-to-review to the Team card and a matching row, but marking Free as supporting it may be inaccurate if that feature is paid-only.
    
    Expected behavior:
    The compare row should mark comment-to-review as available only for the tiers that actually support it (e.g. XCell for Free if it is not included).
    
    Suggested approach:
    Confirm whether the Free tier includes comment-to-review; if not, replace the first CheckCell with XCell.
    
    Relevant diff:
    ```diff
    +                                <tr>
    +                                    <td className="feat-name">Comment "review" to review any PR</td>
    +                                    <CheckCell /><CheckCell /><CheckCell max />
    +                                </tr>
    ```
    

One prompt to fix all of this — paste into your AI coding agent
You are helping fix PR "feat(pricing): rebrand tiers to Free/Personal/Team and refresh value props" in devasignhq/website. Automated review surfaced the items below — failed acceptance criteria and review findings. Each item states what was required, what's wrong with the current diff, and how to fix it; the embedded fix blocks include the expected behavior and the relevant diff hunk. Apply each fix so the item is resolved. Items tagged **Blocker** gate approval; the rest are advisory but worth addressing. Don't introduce changes beyond what's listed.

## End goal
The pricing page renames its paid tiers to Personal and Team (from Pro and Max), applies the specified pricing, refreshes per-tier value propositions, and syncs the comparison table and FAQ accordingly.

## Review findings

### 1. [New-commit review · Warn] `src/pages/PricingPage.tsx` — Commit 4864d74 adds a compare-table row for 'Comment "review" to review any PR' with three cells (`<CheckCell /><CheckCell /><CheckCell max />`), implying all three tiers (Free, Personal, Team) support it. But the commit message says this feature is being matched to the Team card only. If Free does not support comment-to-review, marking it with a CheckCell is inaccurate. Verify the per-tier availability matches the actual product.

Fix: Verify comment-to-review availability per tier in compare table

File: src/pages/PricingPage.tsx
Symbol: PricingPage (comparison table)

Issue:
Commit 4864d74 adds a 'Comment "review" to review any PR' compare row rendering CheckCell for all three tiers (Free, Personal, Team). The commit's stated intent was to add comment-to-review to the Team card and a matching row, but marking Free as supporting it may be inaccurate if that feature is paid-only.

Expected behavior:
The compare row should mark comment-to-review as available only for the tiers that actually support it (e.g. XCell for Free if it is not included).

Suggested approach:
Confirm whether the Free tier includes comment-to-review; if not, replace the first CheckCell with XCell.

Relevant diff:
```diff
+                                <tr>
+                                    <td className="feat-name">Comment "review" to review any PR</td>
+                                    <CheckCell /><CheckCell /><CheckCell max />
+                                </tr>
```

## Your task
Work through every item above — the failed acceptance criteria and each review finding. For each one: understand the gap from "What's wrong now", implement the change so the Required behavior holds (each fix block's `Expected behavior` describes the target state), and use the `Relevant diff` hunks as the anchor for where to edit. After each change, re-verify it resolves the item. Treat **Blocker**-tagged items as required (they block approval); address the rest too.

@bishopBethel
bishopBethel merged commit bc66aef into main Aug 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants