{
 "id": "2.3",
 "title": "v2 PRD",
 "department": "Product",
 "department_slug": "product",
 "direction": null,
 "branded": false,
 "status": "draft",
 "owner": "Param",
 "last_verified": "Mon Oct 26",
 "holds": "Workflows, posting and scheduling after a yes, permissions, caps",
 "urls": {
  "html": "https://handbook.joinsquareup.com/product/v2-prd",
  "markdown": "https://handbook.joinsquareup.com/product/v2-prd.md",
  "json": "https://handbook.joinsquareup.com/product/v2-prd.json"
 },
 "other_directions": [],
 "tldr": {
  "headline": "v2 adds posting and scheduling, but only after a person says yes",
  "points": [
   {
    "icon": "check",
    "text": "Nothing posts without a Yes, and a scheduled post can be cancelled until it goes out."
   },
   {
    "icon": "gear",
    "text": "Saved workflows start a Play on a trigger and always stop for a yes."
   },
   {
    "icon": "warn",
    "text": "Meta, Shopify and Klaviyo hold read only access, so posting needs fresh reviews."
   },
   {
    "icon": "lock",
    "text": "Every brand starts at Suggest on the dial, and every workflow starts off."
   },
   {
    "icon": "money",
    "text": "Working price is $119 or ₹7,999 a month, still a proposal."
   }
  ],
  "stat": {
   "value": "20",
   "label": "workflow templates, not built"
  },
  "decide": "Which channel posts first? Proposal: Instagram and Facebook Page posts through Meta.",
  "mood": "building"
 },
 "sources": [
  "brew origin/main b91e364: SCOPE.md:14, SCOPE.md:36-38, docs/connectors-approvals.md",
  "brew origin/main: public/post-open.js:43, slack-routes.js:2, brief-status.js:8",
  "brand-directions/docs2/content/pages.mjs:200-229, 262-280, 312-360; decisions.mjs:8; inventory.mjs ENDS",
  "brand-directions/BRIEF.md section 3.6",
  "brand-directions/_shared/product-model.md:56-58, 110",
  "brand-directions/book/content/a.js a-5 v2; c1.js c-3 approvals-later, c-4 dial, versions, exits, per-area, groundwork; d1.js d-4 j-post-schedule",
  "brew working tree docs/pricing.md:17-22, not on origin/main",
  "memory: brew-meta-app-review, brew-google-oauth-scopes, brew-shopify-app-review, brew-real-connectors, brew-copy-and-open, brew-jam-v2, brew-name-and-scope"
 ],
 "open_questions": [
  "**Which channel posts first?** Proposal: Instagram and Facebook Page posts through Meta, because the Meta app and business verification are already in progress.",
  "**Who may approve a post?** Proposal: admins and members both may approve, only admins may turn the dial up.",
  "**Which three workflows ship first?** Proposal: Answer a new question about you, Get ready for a festival, Brief your agency on a heart, since each can end in a brief before posting exists.",
  "**Does Prepare need write access?** Proposal: yes, so Prepare and Schedule ship together per channel.",
  "**v2 price.** Proposal: keep $119 or ₹7,999 as the working number and decide with Sai after the partnership."
 ],
 "parts": {
  "Answer": "v2 adds one power on top of v1: after a person's yes, Brew posts or schedules the finished piece on the brand's own connected accounts, and saved workflows start a Play when something happens, always stopping for that yes.",
  "Today": "### What exists that v2 builds on\n\n| Piece | State today | Source |\n|---|---|---|\n| Posting | Brew posts nothing anywhere except the brand's own Slack thread | [src: SCOPE.md:14] [src: SCOPE.md:36-37] |\n| Copy and open | The manual post: copies the words and opens the exact place to post, prefilled on Reddit, X, LinkedIn and Pinterest | [src: public/post-open.js:43] [src: memory brew-copy-and-open] |\n| Publish pack | Every size, the words, links and a readme saying where each part goes | [src: brand-directions/docs2/content/inventory.mjs ENDS] |\n| Post or schedule for you | Listed as Off, New, v2 in today's inventory | [src: brand-directions/docs2/content/inventory.mjs ENDS] |\n| Workflows | 20 templates in five groups, documented and specified, not built; every template starts off and every run stops for a yes | [src: brand-directions/docs2/content/pages.mjs:338-360] [src: brand-directions/docs2/content/decisions.mjs:8] |\n| Workflow rules | Starts off, every run makes a card, a post or spend waits for a yes, a weekly cap, pause, undo and history on every run | [src: brand-directions/docs2/content/pages.mjs:215-221] |\n| Workflow states | Off, On, Waiting, Paused | [src: brand-directions/docs2/content/pages.mjs:222-227] |\n| Slack | Posts cards and jams to the picked channel; a change or paid make from Slack is a proposal that runs only on a yes | [src: SCOPE.md:14] [src: slack-routes.js:2] |\n| Scheduling slots | The retired Jam v2 had a \"pick a day\" slot picker | [src: memory brew-jam-v2] |\n\n### What blocks posting\n\n| Platform | Access held today | What posting needs | Source |\n|---|---|---|---|\n| Meta | App Review asks only ads_read, business_management, public_profile; ads_management and Pages, Threads and WhatsApp permissions were removed; business verification in review | Publishing permissions and a fresh App Review | [src: memory brew-meta-app-review] |\n| Google | Verified for adwords and analytics.readonly on 21 Oct; any new scope triggers review again | No organic posting surface needed for v2 | [src: memory brew-google-oauth-scopes] |\n| Shopify | Read scopes only; public app submitted 21 Oct | Write scopes for any page or product change | [src: docs/connectors-approvals.md] [src: memory brew-shopify-app-review] |\n| Klaviyo | Read only private key | A write key for drafts or sends | [src: docs/connectors-approvals.md] |\n\n### Price proposal\n\nv2 plan at $119 or ₹7,999 a month, $18 or ₹1,500 into the wallet, still a proposal [src: brew working tree docs/pricing.md:17-22].",
  "Tomorrow": "| Item | Version | Tag | What it is |\n|---|---|---|---|\n| Schedule it, the second exit | v2 | New | Beside Hand it off in the one sheet behind Make it; shows only where the dial and the connection allow it [src: book c1.js c-4 exits] |\n| Prepare | v2 | New | Files ready per channel, posted with one tap from a connected account [src: brand-directions/BRIEF.md 3.6] |\n| Need your yes as the control centre | v2 | Changes | Every post and schedule asks here: one question, what happens either way, Yes and Not now, undo until it goes out [src: brand-directions/_shared/product-model.md:56-58] |\n| Work columns Scheduled and Live | v2 | New | After Handed off [src: brand-directions/_shared/product-model.md:110] |\n| The dial per area and channel | v2 | New | Suggest, Prepare, Schedule; every brand starts at Suggest; turning down is always allowed |\n| Workflows | v2 | New | A saved Play with a trigger, what it reads, the jam it makes and how it ends; until posting ships for a channel it ends in a brief or a pack |\n| Workflow cap | v2 | New | A weekly cap per workflow so a busy trigger cannot run up a bill |\n| Hand it off | v2 | Stays | Never goes away |\n| Copy and open | v2 | Stays | Still the way to post where Brew has no write access |\n\n### Requirements with acceptance\n\n| Requirement | Acceptance |\n|---|---|\n| Nothing posts without a yes | A post or schedule exists only after a Yes in Need your yes from a person allowed to give it |\n| Undo until it goes out | A scheduled post can be cancelled until its time; the cancel leaves a line in the jam |\n| The post is the approved version | What goes out matches the version, words, link and size that were approved, byte for byte |\n| A failed post says so | A refused or failed post shows the platform's reason and never reads as posted |\n| Every run makes a card | Each workflow run lands in the feed or Need your yes, with what it read and what it made |\n| Starts off | Every workflow template is off until an admin turns it on |\n| Cap holds | A workflow that hits its weekly cap moves to Paused and says why |\n| Read only stays the default | A connection without write access never shows Schedule it |\n\n### Groundwork v2 needs from v1\n\nEach pick stores its destination channel, the brief is saved as structured data, a decision log of hearted, made and handed off, and one status field that can grow [src: book a.js a-5 v1].\n\n### Workflow templates, first set\n\nAll 20 are listed in [workflows spec](workflows-spec.md). The groups are Listen, Catalog, Ads and site, Calendar, and Briefs and posting [src: brand-directions/docs2/content/pages.mjs:360].",
  "How we do it": "1. Pick the first channel and request only its publishing permission; do not bundle scopes.\n2. Build the groundwork in v1 first, behind switches.\n3. Add Schedule it behind a per brand switch; turn it on for one partner.\n4. Record the platform review screencast on a test brand, never on Arata [src: memory never-disconnect-arata-meta].\n5. Turn on one workflow template at a time, starting off for every brand.",
  "Numbers": "| Metric | Definition | Where measured | Status |\n|---|---|---|---|\n| Approved post rate | Share of hand-offs that become an approved scheduled post | Decision log | Proposed |\n| Undo before send | Share of scheduled posts cancelled before their time | Decision log | Proposed |\n| Post failures | Posts the platform refused, per week | Post log | Proposed |\n| Workflow yes rate | Share of workflow runs that get a Yes | Need your yes log | Proposed |",
  "Open": "1. **Which channel posts first?** Proposal: Instagram and Facebook Page posts through Meta, because the Meta app and business verification are already in progress.\n2. **Who may approve a post?** Proposal: admins and members both may approve, only admins may turn the dial up.\n3. **Which three workflows ship first?** Proposal: Answer a new question about you, Get ready for a festival, Brief your agency on a heart, since each can end in a brief before posting exists.\n4. **Does Prepare need write access?** Proposal: yes, so Prepare and Schedule ship together per channel.\n5. **v2 price.** Proposal: keep $119 or ₹7,999 as the working number and decide with Sai after the partnership."
 }
}