{
 "id": "12.7",
 "title": "Notices to customers",
 "department": "Customer success and support",
 "department_slug": "customer-success-and-support",
 "direction": {
  "id": "cooker",
  "name": "Seeti"
 },
 "branded": true,
 "status": "draft",
 "owner": "Param",
 "last_verified": "2026-10-26",
 "holds": "Incident, maintenance and change notices",
 "urls": {
  "html": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/cooker",
  "markdown": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/cooker.md",
  "json": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/cooker.json"
 },
 "other_directions": [
  {
   "id": "dog",
   "name": "Fetch",
   "json": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/dog.json"
  },
  {
   "id": "bee",
   "name": "Buzz",
   "json": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/bee.json"
  },
  {
   "id": "raccoon",
   "name": "Scoop",
   "json": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/raccoon.json"
  },
  {
   "id": "octopus",
   "name": "Ocho",
   "json": "https://handbook.joinsquareup.com/customer-success-and-support/notices-to-customers/octopus.json"
  }
 ],
 "tldr": {
  "headline": "No notice system yet: six templates, and Seeti stays off bad news",
  "points": [
   {
    "icon": "warn",
    "text": "No notice system exists; alerts reach only us, never the brands."
   },
   {
    "icon": "chat",
    "text": "Six templates: incident, resolved, maintenance, connection lost, change, policy change."
   },
   {
    "icon": "clock",
    "text": "Incidents over 30 minutes or touching data get a notice; maintenance gets 2 working days."
   },
   {
    "icon": "lock",
    "text": "Seeti stays out of incidents, maintenance, connections and policy notices."
   },
   {
    "icon": "heart",
    "text": "Seeti gets one line only: ready in a few whistles, as a change sign off."
   }
  ],
  "stat": {
   "value": "30",
   "label": "minutes before a notice"
  },
  "decide": "May Seeti appear in change notices, only as the sign off line?",
  "mood": "building"
 },
 "sources": [
  "brew/public/app.js:1609-1615, 2966-2967",
  "brew/connectors/index.js:53, 474-493",
  "brew/alerts.js:1-12",
  "brew/docs/production.md:114-115",
  "brew/tools/promote.sh:1-9",
  "brew/legal-pages.js:6, 18-19, 35-36",
  "memory brew-qa-round2-2026-10-24, brew-prod-backend",
  "brand-directions/docs2/data/dirs.json",
  "brand-directions/cooker/system.md",
  "brand-directions/book/content/g.js g-3, checked against the code"
 ],
 "open_questions": [
  "What counts as an incident worth a notice? Proposal: more than 30 minutes down, or anything that touches a brand's data or connections.",
  "Who sends notices? Proposal: Param during the design partnership, from hello@joinsquareup.com, signed with his first name.",
  "Do we pick a fixed maintenance window? Proposal: no fixed window; releases already roll back on their own, and planned downtime gets 2 working days notice.",
  "May Seeti appear in change notices? Proposal: only as the sign off line in the table, never in incidents, maintenance, connections or policy."
 ],
 "parts": {
  "Answer": "How we tell brands about an incident, planned maintenance, a lost connection, a change or a policy change, and the one place Seeti may appear in them.",
  "Today": "No notice system exists. Nothing tells a brand about an incident, maintenance or a change except what is below.\n\n| What exists | Detail | Source |\n|---|---|---|\n| Writing paused | A one time toast when AI writing is paused: `Our writing is paused for a while. Everything here still opens; new replies, drafts and rewrites wait until it’s back.` | [src: brew/public/app.js:2966-2967] |\n| Plays paused | The feed's paused card: `The plays are paused` with how many Plays are written | [src: brew/public/app.js:1609-1615] |\n| A sign in running out | An email to admins 7 days ahead and when it runs out | [src: brew/connectors/index.js:53, 480-493] |\n| A stale connection | Last numbers are marked stale after 72 hours or 3 failed reads | [src: brew/connectors/index.js:53, 474-478] |\n| Alerts to us only | Billing, quota, AI pause, treg, server errors, Sloosh, worker and queue alerts go to our inbox, never to brands | [src: brew/alerts.js:1-12] |\n| Monitoring to us only | Uptime and alert policies email param@ and hello@ | [src: brew/docs/production.md:114-115] |\n| Releases | Each release promotes staging's exact image and rolls back on a failed check | [src: brew/tools/promote.sh:1-9] |\n| Policy | Privacy and Terms are preview pages dated 19 October 2026. A full policy comes before the product opens to everyone. | [src: brew/legal-pages.js:6, 18-19, 35-36] |\n| Known after a release | The first load after a release is slow. Noted 25 Oct. | [src: memory brew-qa-round2-2026-10-24] |",
  "Tomorrow": "| Version | Tag | Item |\n|---|---|---|\n| v1 | New | Six notice templates, below, sent by a named person for anything on our side. |\n| v1 | New | Incidents that last more than 30 minutes or touch a brand's data get a notice. Shorter blips do not. Proposed. |\n| v1 | Changes | The writing paused toast and the paused card drop the product name and say Plays. |\n| v1 | Changes | Stale connections tell the admins by email the same day, as sign in expiry already does. |\n| v1 | Stays | Alerts and monitoring stay with our team. Brands hear from a person, never from an alert. |\n| v2 | New | A status line in the product while an incident is open. |\n\n### The templates\n\n| Notice | When | Plain words | Who and how | Seeti |\n|---|---|---|---|---|\n| Incident | Something on our side stopped working for you | `<What broke>, since <time>. Your <feed, jams, briefs> are safe. We are fixing it and will write again by <time>.` | A named person, email, within the hour of knowing | None |\n| Incident resolved | It is fixed | `<What broke> is fixed since <time>. <What you may need to do, or nothing>. Sorry for the trouble.` | The same person, email | None |\n| Maintenance | Planned downtime | `On <day> from <time> to <time>, <brand> may not open. Nothing is lost. Reads and drafts wait until it is back.` | Email, 2 working days ahead | None |\n| Connection lost | A tool stopped reading | `<Tool> stopped reading for <brand> on <day>. Its last numbers are marked stale. Connect it again to bring them back.` | Admins, email, the same day | None |\n| Change | Something new or different in the product | `New: <one sentence on what changed>. <Where to find it>.` | In the product, once, and in the weekly founder note | One line allowed: “This week's marketing, ready in a few whistles.” as a sign off, never in the change itself |\n| Policy change | Privacy or terms change | `Our <privacy page or terms> change on <date>. What changes: <one line>. Read it here.` | Email to admins, 14 days ahead | None |\n\n### Seeti's rules for these lines\n\n- Short sentences, often two words. Never more than two sentences per line.\n- One kitchen word per line at most.\n- Seeti calls the founder boss, at most once a week.\n- The explanation of the whistle appears once, on the first read.\n- People write apologies, privacy answers, money talk and support. Seeti stays out.\n\n[src: brand-directions/docs2/data/dirs.json; brand-directions/cooker/system.md]\n\nIn a notice that rule means Seeti stays out of every incident, maintenance, connection and policy notice. Those are errors on our side, access or something a person must agree to.\n\nLines Seeti never says, in any of these:\n\n- “I posted it for you.”\n- “Your sales went up 30 percent.”\n- “You missed a week. Shame.”\n- “Hurry, only two hours left.”\n- “Connect your accounts and I will run your ads.”\n\n[src: brand-directions/docs2/data/dirs.json]",
  "How we do it": "1. When an alert or a partner shows something broke, the reader of the day decides within the hour: does it last more than 30 minutes or touch data. If yes, it gets a notice.\n2. Find who is affected: the brands on production, and their admins.\n\n   ```bash\n   gcloud run jobs execute brew-ops --region=asia-south1 --wait\n   ```\n\n3. Send the incident template from hello@joinsquareup.com, signed by a first name, to each affected brand's admins.\n4. Write again when it is fixed, with the resolved template, the same day.\n5. For maintenance, send the template 2 working days ahead, and pick a time outside the brands' working hours.\n6. For a policy change, update the date on the page and email admins 14 days before it takes effect.\n7. Add a row to known issues for anything a brand may still see after the fix.",
  "Numbers": "| Metric | Definition | Where measured | State |\n|---|---|---|---|\n| Time to first notice | Minutes from our first alert to the first notice sent | alert email time against the notice | Proposed |\n| Incidents per month | Incidents that got a notice | hello@ sent, label incident | Proposed |\n| Notices resolved same day | Share of incident notices followed by a resolved notice the same day | hello@ sent | Proposed |",
  "Open": "1. What counts as an incident worth a notice? Proposal: more than 30 minutes down, or anything that touches a brand's data or connections.\n2. Who sends notices? Proposal: Param during the design partnership, from hello@joinsquareup.com, signed with his first name.\n3. Do we pick a fixed maintenance window? Proposal: no fixed window; releases already roll back on their own, and planned downtime gets 2 working days notice.\n4. May Seeti appear in change notices? Proposal: only as the sign off line in the table, never in incidents, maintenance, connections or policy."
 }
}