---
id: "2.5"
title: "v4 PRD"
dept: product
status: needs-you
owner: Param
branded: false
last_verified: 2026-10-26
sources:
  - "brew origin/main b91e364: SCOPE.md:36-37"
  - "brew origin/main: docs/connectors-approvals.md"
  - "brand-directions/BRIEF.md section 3.6"
  - "brand-directions/docs2/content/pages.mjs:262-280, 343, 347, 351; inventory.mjs LEARN"
  - "brand-directions/book/content/a.js a-5 v4; c1.js c-3 approvals-later, c-4 run-within-rules; c2.js c-7 rule-money, rule-safety"
  - "brew working tree docs/pricing.md:14, 22"
  - "memory: brew-meta-app-review, brew-meta-connector-qa, brew-name-and-scope, feed-measurement-engine"
---

# v4 PRD

## Answer

v4 lets Brew launch and tune ads inside a budget and rules the brand sets, with every action logged and undoable; almost nothing about it is decided, so this document is proposals for Param.

## Today

| Fact | Source |
|---|---|
| Brew never launches, pauses or moves budget; Do it now, the safety policy, the stop rule, auto undo and the weekly spend limit were cut | [src: SCOPE.md:36-37] |
| Meta access requested is ads_read and business_management only; ads_management was removed from the App Review | [src: memory brew-meta-app-review] |
| The Meta budget card ranks only active campaigns older than 14 days and says when attribution is mixed | [src: memory brew-meta-connector-qa] |
| Workflow templates already name ad actions after a yes: pause ads for a sold out product, refresh a tired ad, Monday budget check | [src: brand-directions/docs2/content/pages.mjs:343] [src: brand-directions/docs2/content/pages.mjs:347] [src: brand-directions/docs2/content/pages.mjs:350] |
| The old SquareUp codebase has patterns to borrow: risk tiers, propose, confirm, run, never automatic sends or spends | [src: memory brew-name-and-scope] |
| A trust ladder is planned: wins and undos move each kind of work up, never touching money | [src: brand-directions/docs2/content/inventory.mjs LEARN] |
| Price proposal: Autopilot at 3 percent of the ad spend Brew runs, minimum $149 or ₹9,999 a month, from the wallet | [src: brew working tree docs/pricing.md:14] |
| The brief names v4 as Run within rules: acts inside budget caps, topics and approval windows, undo always available | [src: brand-directions/BRIEF.md section 3.6] |

No source sets the platforms, the default limits, the rule language or what undo means for money already spent.

## Tomorrow

Everything here is a proposal.

| Item | Version | Tag | Proposal |
|---|---|---|---|
| Let it run, the third exit | v4 | New | Shows in the Hand it off sheet only where the dial for that area and channel is at Run within rules |
| Run within rules on the dial | v4 | New | Off for every area and channel at start; only an admin turns it on; anyone may turn it down |
| Need your yes | v4 | Changes | Every action outside the rules asks here, written by people in plain words |
| Pause everything | v4 | New | One tap stops every running rule for the brand |
| Undo | v4 | New | Every action has an undo that restores the last setting; money spent is never called undone |
| Action log | v4 | New | Every action with what it read, the rule that allowed it, the before and after, and who can undo it |
| Ads only | v4 | New | Website and AI search stay at Suggest |

### The rule language, proposed

A rule is one line a founder can read, built from a fixed set of parts.

| Part | Example | Notes |
|---|---|---|
| Scope | On Meta, campaigns named Prospecting | One platform and a campaign set |
| Allowed action | May pause an ad, raise or lower a budget, swap a creative | Only actions from this list |
| Budget cap | At most ₹5,000 a day, ₹25,000 a week, Sample | Hard cap; nothing goes over |
| Step limit | No budget change above 20 percent at once, Sample | Limits the size of one action |
| Trigger | When cost per first order is 2 times the target for 3 days, Sample | Built from the v3 families |
| Approval window | Ask first between 10 pm and 8 am, Sample | Outside the window it acts and tells |
| Topics | Never say a never say word; only approved claims | From the Brand Book |
| Stop rule | Stop if spend reaches 2 times target cost with 0 orders, Sample | Stops and asks |

Sample numbers are illustrations only, not defaults.

### Requirements with acceptance, proposed

| Requirement | Acceptance |
|---|---|
| Never over the cap | Total spend changes Brew made never push a rule's scope above its cap |
| Every action logged | No action runs without a log row naming the rule |
| Undo works | Undo restores the previous setting within one minute |
| Pause everything | One tap stops every rule within one minute |
| Measured first | A rule may run only for an action kind with A or B graded results from v3 |

## How we do it

1. Ship v3 first; v4 needs graded results to set triggers and to earn trust.
2. Request Meta ads_management in its own App Review after v2's review is done.
3. Start with pause and resume only, on one partner, with Param's yes on each rule.
4. Add budget changes only after a month with no undo needed.

## Numbers

| Metric | Definition | Where measured | Status |
|---|---|---|---|
| Rules kept | Share of ad runs that stay inside the rules with no undo needed | Action log | Proposed |
| Undo rate | Share of actions undone within 24 hours | Action log | Proposed |
| Spend under rules | Ad spend Brew ran per brand per month, the base for the 3 percent | Action log and Meta | Proposed |

## Open

1. **Which ad platform first?** Proposal: Meta, since the connector and App Review work already exist.
2. **Default limits.** Proposal: no defaults; the founder types the cap and step limit before any rule saves.
3. **What undo means for money spent.** Proposal: undo restores settings only, and the log states the spend that already happened.
4. **Who may change the rules?** Proposal: admins only, members may pause.
5. **Autopilot as a percent of spend or flat bands?** Proposal: keep 3 percent with the $149 minimum as the working number until partners run it.
6. **Can an agency set rules per client?** Proposal: yes, once the brand switcher exists, and the brand's admin can lock them.
