{
 "id": "12.5",
 "title": "Partner health",
 "department": "Customer success and support",
 "department_slug": "customer-success-and-support",
 "direction": null,
 "branded": false,
 "status": "needs-you",
 "owner": "Param",
 "last_verified": "2026-10-26",
 "holds": "Signals that a partner is thriving or slipping",
 "urls": {
  "html": "https://handbook.joinsquareup.com/customer-success-and-support/partner-health",
  "markdown": "https://handbook.joinsquareup.com/customer-success-and-support/partner-health.md",
  "json": "https://handbook.joinsquareup.com/customer-success-and-support/partner-health.json"
 },
 "other_directions": [],
 "tldr": {
  "headline": "No partner health score exists, so we sketched green, amber, red",
  "points": [
   {
    "icon": "eye",
    "text": "Today we only have records: who opened the brand, digests, briefs, connections."
   },
   {
    "icon": "check",
    "text": "Thriving means an open in 7 days, one jam moved and every connection fresh."
   },
   {
    "icon": "warn",
    "text": "Slipping means no open in 7 days, a stale connection or a brief needing info."
   },
   {
    "icon": "flag",
    "text": "Red means no open in 14 days, or Arata's protected connections not reading."
   },
   {
    "icon": "heart",
    "text": "Every amber or red gets a personal note from the partner's owner that week."
   }
  ],
  "stat": {
   "value": "72",
   "label": "hours to stale"
  },
  "decide": "Score partner health by hand every Monday for the first four weeks?",
  "mood": "waiting"
 },
 "sources": [
  "brew/server.js:657-666",
  "brew/digest.js:8, 192",
  "brew/build.js:996-1003",
  "brew/brief-status.js:32-37",
  "brew/connectors/index.js:53, 474-493",
  "brew/confirm-remind.js:21-34",
  "brew/jam-mail.js:14, 23-25",
  "memory brew-access-rules, brew-live-stores, brew-prod-backend"
 ],
 "open_questions": [
  "Do we score health at all during the design partnership? Proposal: yes, a weekly green, amber or red line per partner, by hand, for the first four weeks.",
  "What counts as thriving? Proposal: an open in 7 days, one jam moved and every connection fresh, as written in Tomorrow.",
  "Who reviews it? Proposal: Param, every Monday, with each partner's owner.",
  "Does a partner ever see its own health? Proposal: no; it is our working view only."
 ],
 "parts": {
  "Answer": "The signals that tell us a design partner is thriving or slipping; no health score exists in any source, so the signals below are drawn from what the code already records and the thresholds are proposals for Param.",
  "Today": "No health score, dashboard or review exists. These records already exist and could feed one.\n\n| Signal | What is recorded | Source |\n|---|---|---|\n| Who opened the brand | One row per brand and email with first seen, last seen and a count, on Postgres, since 23 Oct | [src: brew/server.js:657-666; memory brew-access-rules] |\n| Weekly digest | When it last went, to whom, and whether Slack got it | [src: brew/digest.js:8, 192] |\n| Plays emails | Which ready and update emails each person got | [src: brew/build.js:996-1003] |\n| Briefs with our team | Briefs sent and not delivered, and how many need info from the brand | [src: brew/brief-status.js:32-37] |\n| Connections | Last good read, stale after 72 hours or 3 failed reads, and sign in expiry | [src: brew/connectors/index.js:53, 474-493] |\n| Waiting on the brand | A read waiting for its check, or Plays waiting for the first feed open | [src: brew/confirm-remind.js:21-34] |\n| Emails turned off | Per person mail settings: all, tags only or off | [src: brew/jam-mail.js:14, 23-25] |\n\nThe five partners are Arata, Nutrova, Mana, Puma India and Scrubroom, all on production. [src: memory brew-live-stores, brew-prod-backend]",
  "Tomorrow": "| Version | Tag | Item |\n|---|---|---|\n| v1 | New | A weekly health line per partner: green, amber or red, from the signals below, reviewed every Monday. |\n| v1 | New | Thriving: someone on the team opened the brand in the last 7 days, at least one jam moved, and every connection read in the last 72 hours. |\n| v1 | New | Slipping: no open in 7 days, or a check or feed open waiting more than a day, or a connection stale, or a brief needing info for more than 2 days, or emails turned off by the admin. |\n| v1 | New | Red: no open in 14 days, or Arata's protected connections not reading. |\n| v2 | New | The same line shown to our team in the staff view, built from the records above. |",
  "How we do it": "These are proposals until Param accepts them.\n\n1. Every Monday, list each partner's last open from the visitors record.\n\n   ```text\n   GET /api/admin/visitors?slug=<slug>\n   ```\n\n2. Run the status job and read each partner's connection states.\n\n   ```bash\n   gcloud run jobs execute brew-ops --region=asia-south1 --wait\n   ```\n\n3. Read the brief pill for each partner: anything sent and not delivered, and anything needing info.\n4. Mark each partner green, amber or red with the rules in Tomorrow, and write one line on why.\n5. For every amber or red, the partner's owner writes to them that week, as a person, with one concrete next step.",
  "Numbers": "| Metric | Definition | Where measured | State |\n|---|---|---|---|\n| Weekly active partners | Partners with at least one team open in the last 7 days | access_log | Proposed |\n| Active people per partner | Distinct team emails that opened the brand in 7 days | access_log | Proposed |\n| Briefs shared per partner per week | Briefs shared to their team or ours | jam `jamBrief.sharedAt` | Proposed |\n| Stale connections | Connections with no good read in 72 hours | connections, `stale` flag | Proposed |\n| Days waiting on the brand | Days a check or a feed open has waited | status.json waitingSince and feedWaitSince | Proposed |",
  "Open": "1. Do we score health at all during the design partnership? Proposal: yes, a weekly green, amber or red line per partner, by hand, for the first four weeks.\n2. What counts as thriving? Proposal: an open in 7 days, one jam moved and every connection fresh, as written in Tomorrow.\n3. Who reviews it? Proposal: Param, every Monday, with each partner's owner.\n4. Does a partner ever see its own health? Proposal: no; it is our working view only."
 }
}