{
  "manifest": {
    "format": "atlas-export/1",
    "product": "Atlas — the written-down manual, inside Bisbe",
    "exportedAt": "2026-08-06T07:00:00.000Z",
    "world": {
      "mode": "demo",
      "orgId": "org_atlantica",
      "name": "Atlantica",
      "isDemo": true
    },
    "store": {
      "driver": "file",
      "durable": false,
      "schema": "docs/runbooks/ATLAS-SCHEMA-2026-08-06.sql",
      "tables": 11
    },
    "totals": {
      "tables": 11,
      "rows": 117,
      "fingerprint": "ff96133d2cd3f5645e47e115aba1303b3fdc453b50da667267ba4104e074c7c1"
    },
    "scope": {
      "saw": "all",
      "meaning": "Everything in this business's records. You are the owner of it, or this is the shared demo world, which has no private half.",
      "omitted": []
    },
    "files": [
      {
        "file": "tables/01-atlas_org.json",
        "table": "atlas_org",
        "what": "The business itself — one row. Everything else hangs off its id.",
        "rows": 1,
        "columns": [
          "id",
          "name",
          "owner_name",
          "trade",
          "updated_at"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "4c4769f793fa126cb7e92207e4e6edf6612ea966581507f2ebb14b9e9a456f8c",
        "fencedBy": "it IS the business row"
      },
      {
        "file": "tables/02-atlas_role.json",
        "table": "atlas_role",
        "what": "Who the manual is organised for — owner, rep, office, books, customer, partner.",
        "rows": 6,
        "columns": [
          "org_id",
          "id",
          "label",
          "blurb"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "4bd0b08da56466163cbcb885bd309afa53736785a18bb26ab0ed7229d7c6fe8c",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/03-atlas_procedure.json",
        "table": "atlas_procedure",
        "what": "The manual. One row per written-down procedure, with its body and version.",
        "rows": 20,
        "columns": [
          "org_id",
          "id",
          "title",
          "section",
          "roles",
          "audience",
          "version",
          "confirmed_at",
          "status",
          "body",
          "keywords",
          "covers"
        ],
        "pendingColumns": [
          {
            "column": "audience",
            "runbook": "docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql"
          }
        ],
        "columnsNotCarried": [
          {
            "column": "updated_at",
            "why": "Stamped by the database on write. The app never reads it back into the graph, so a value here would be the moment you pressed download, not the moment the page changed — a plausible-looking number that is not a fact."
          },
          {
            "column": "created_at",
            "why": "Set by the database on insert; never read back into the app, so the export would be inventing it."
          }
        ],
        "fingerprint": "559597cc3d6e05f601f8c6ae877c16bc44dd0740d095358e0bdbb91343d484e7",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/04-atlas_procedure_version.json",
        "table": "atlas_procedure_version",
        "what": "Why each procedure changed, and what taught it. One row per version.",
        "rows": 54,
        "columns": [
          "procedure_id",
          "version",
          "at",
          "note",
          "learned_from_thread_id",
          "from_rule_id"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "12da5d8c1eb93ee31fb4e5051a89383d507942ac06f1a6723b9963ad21842c05",
        "fencedBy": "its parent — atlas_procedure.procedure_id"
      },
      {
        "file": "tables/05-atlas_rule.json",
        "table": "atlas_rule",
        "what": "Rules the owner stated in plain words, and Atlas's read-back of each one.",
        "rows": 0,
        "columns": [
          "org_id",
          "id",
          "said",
          "heard",
          "stated_at",
          "stated_by_role"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/06-atlas_thread.json",
        "table": "atlas_thread",
        "what": "Conversations — somebody asked, and this is where the answer happened.",
        "rows": 8,
        "columns": [
          "org_id",
          "id",
          "channel",
          "asker_name",
          "asker_user_id",
          "about",
          "asker_role",
          "subject",
          "opened_at",
          "state",
          "owner_notified",
          "learned_procedure_id"
        ],
        "pendingColumns": [
          {
            "column": "asker_user_id",
            "runbook": "docs/runbooks/ATLAS-ORG-MEMBERSHIP-2026-08-06.sql"
          },
          {
            "column": "about",
            "runbook": "docs/runbooks/ATLAS-THREAD-ABOUT-2026-08-11.sql"
          }
        ],
        "columnsNotCarried": [],
        "fingerprint": "b8fe91615b27ba3ba624149513425ce413dc8ede769107714783d3f0f5206ece",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/07-atlas_message.json",
        "table": "atlas_message",
        "what": "Every message in every conversation, including Atlas's own, with its receipts.",
        "rows": 18,
        "columns": [
          "thread_id",
          "id",
          "at",
          "from",
          "text",
          "author_name",
          "author_user_id",
          "receipts",
          "escalation_reason"
        ],
        "pendingColumns": [
          {
            "column": "author_name",
            "runbook": "docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql"
          },
          {
            "column": "author_user_id",
            "runbook": "docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql"
          }
        ],
        "columnsNotCarried": [],
        "fingerprint": "036b6295c981f2c110a411357356b622d643d2fba1abb5e4096c8ce77cf04b0e",
        "fencedBy": "its parent — atlas_thread.thread_id"
      },
      {
        "file": "tables/08-atlas_edge.json",
        "table": "atlas_edge",
        "what": "The links — which rule updated which page, which conversation taught which page.",
        "rows": 1,
        "columns": [
          "org_id",
          "from_id",
          "to_id",
          "kind",
          "at"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "d7fda82e6cb4017f90337f9b720414c077cd42328d5e05fe5cc578bbcbaf9bbb",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/09-atlas_release_item.json",
        "table": "atlas_release_item",
        "what": "Changes queued for the owner's say-so. Nothing enters the manual un-released.",
        "rows": 0,
        "columns": [
          "org_id",
          "id",
          "target_procedure_id",
          "target_title",
          "target_section",
          "target_roles",
          "target_audience",
          "change_kind",
          "from_version",
          "to_version",
          "draft_lines",
          "summary",
          "source_kind",
          "source_id",
          "covers_triggers",
          "status",
          "modify_notes",
          "revision",
          "queued_at",
          "released_at"
        ],
        "pendingColumns": [
          {
            "column": "target_audience",
            "runbook": "docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql"
          }
        ],
        "columnsNotCarried": [],
        "fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/10-atlas_notification.json",
        "table": "atlas_notification",
        "what": "What Atlas told somebody, and whether they have read it yet.",
        "rows": 5,
        "columns": [
          "org_id",
          "id",
          "at",
          "audience",
          "kind",
          "thread_id",
          "text",
          "read"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "5b22f243fc29240c04e51110bc73a23a17558ef2e7ddfd5e9d76a2b0ba7ce0d1",
        "fencedBy": "org_id on every row"
      },
      {
        "file": "tables/11-atlas_escalation_trigger.json",
        "table": "atlas_escalation_trigger",
        "what": "Questions that always go to a person, never to an answer. Committed data, not a judgment.",
        "rows": 4,
        "columns": [
          "org_id",
          "id",
          "phrases",
          "reason"
        ],
        "pendingColumns": [],
        "columnsNotCarried": [],
        "fingerprint": "d17ea064636cd7754ce10645615ca08fffab7c9ffff6fb4cd9ccf603b768c59f",
        "fencedBy": "org_id on every row"
      }
    ],
    "notes": [
      "These are the real column names and the real row shapes, straight off the same code that writes them to the database. Nothing here has been tidied up for reading.",
      "One file per table. A conversation's messages are their own table (atlas_message), joined by thread_id — that is how they are stored, so that is how they are here.",
      "Empty values are null, exactly as the database holds them. An empty list is [], not missing.",
      "This world is being served from the \"file\" store — the committed demo register, not the live database. The SHAPE is identical (the same projection writes both); the records are the invented ones.",
      "This is the shared demo world. Everyone looking at the demo is looking at this same one, so anything you typed into it may appear in somebody else's download too. Nothing here is real, and nothing here is private.",
      "Some columns are part of the shape but are still waiting on a schema change the owner has to apply by hand: atlas_procedure.audience (docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql), atlas_thread.asker_user_id (docs/runbooks/ATLAS-ORG-MEMBERSHIP-2026-08-06.sql), atlas_thread.about (docs/runbooks/ATLAS-THREAD-ABOUT-2026-08-11.sql), atlas_message.author_name (docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql), atlas_message.author_user_id (docs/runbooks/ATLAS-MESSAGE-AUTHOR-2026-08-06.sql), atlas_release_item.target_audience (docs/runbooks/ATLAS-PAGE-AUDIENCE-2026-08-09.sql). They are in these files, and they will read as null until that lands.",
      "Customers (the CRM half of Bisbe) has its own records and is not in this download. This is Atlas's world."
    ]
  },
  "tables": {
    "atlas_org": [
      {
        "id": "org_atlantica",
        "name": "Atlantica",
        "owner_name": "Maria",
        "trade": "Resort-wear, wholesale · Punta Cana",
        "updated_at": "2026-08-06T07:00:00.000Z"
      }
    ],
    "atlas_role": [
      {
        "org_id": "org_atlantica",
        "id": "owner",
        "label": "Maria Reyes",
        "blurb": "Answers what the manuals don’t cover, and releases what Atlas learns."
      },
      {
        "org_id": "org_atlantica",
        "id": "rep",
        "label": "Field reps",
        "blurb": "On the road with accounts — visits, quotes, reorders."
      },
      {
        "org_id": "org_atlantica",
        "id": "office",
        "label": "Order desk",
        "blurb": "Orders, ship windows, account admin."
      },
      {
        "org_id": "org_atlantica",
        "id": "books",
        "label": "Finance",
        "blurb": "Terms, invoicing, deposits, chasing."
      },
      {
        "org_id": "org_atlantica",
        "id": "customer",
        "label": "Retail buyer",
        "blurb": "The B2C channel — someone who bought a piece."
      },
      {
        "org_id": "org_atlantica",
        "id": "partner",
        "label": "Wholesale account",
        "blurb": "The B2B channel — a resort, gift shop or concept store that stocks us."
      }
    ],
    "atlas_procedure": [
      {
        "org_id": "org_atlantica",
        "id": "kb-checkin",
        "title": "Checking in at an account",
        "section": "Visits",
        "roles": [
          "rep"
        ],
        "audience": "internal",
        "version": 5,
        "confirmed_at": "2026-07-22",
        "status": "approved",
        "body": [
          "Check in on the app before you walk in, not after you leave.",
          "Ask for the buyer by name. If they’re not there, don’t pitch to whoever is.",
          "Walk the floor before you open the case — see what’s selling and what’s sat there.",
          "Never leave without a next date in the diary."
        ],
        "keywords": [
          "check in",
          "checkin",
          "arrive",
          "arriving",
          "visit",
          "account",
          "do first",
          "first",
          "buyer",
          "walk in",
          "front of house"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-visit-notes",
        "title": "What goes in a visit note",
        "section": "Visits",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 3,
        "confirmed_at": "2026-06-18",
        "status": "approved",
        "body": [
          "Account, who you saw, and what they actually said — in their words, not a summary.",
          "What they’re low on, even if they didn’t order it.",
          "Anything they complained about, however small.",
          "Write it the same day. A note written Friday about Tuesday is a guess."
        ],
        "keywords": [
          "visit note",
          "note",
          "write up",
          "summary",
          "after the visit",
          "record",
          "log"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-draft-order",
        "title": "Turning a visit into a draft order",
        "section": "Orders",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 4,
        "confirmed_at": "2026-07-02",
        "status": "approved",
        "body": [
          "Raise the draft while you’re still in the car park — not that night.",
          "Sizes come from what they told you, never from last season’s split.",
          "Put the ship window on the draft before anyone sees a price.",
          "A draft is not an order. It goes nowhere until it’s approved."
        ],
        "keywords": [
          "draft",
          "draft order",
          "write the order",
          "raise an order",
          "convert",
          "quote to order",
          "sizes",
          "size split"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-approve-order",
        "title": "Who approves an order before it’s sent",
        "section": "Orders",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 3,
        "confirmed_at": "2026-05-11",
        "status": "approved",
        "body": [
          "Anything under twenty thousand, the order desk approves.",
          "Over twenty thousand, or any first order from a new account, comes to Maria.",
          "A changed size split after approval is a new approval, not an edit.",
          "Nothing is sent to the buyer before it is approved. Nothing."
        ],
        "keywords": [
          "approve",
          "approval",
          "sign off",
          "send the order",
          "who approves",
          "authorise"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-reorder-text",
        "title": "Reorders that come in by text",
        "section": "Orders",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 2,
        "confirmed_at": "2026-01-27",
        "status": "needs-confirming",
        "body": [
          "A text is a request, not an order. It gets raised as a draft like anything else.",
          "Read the sizes back to them before you raise it.",
          "If they say “same as last time”, say what last time was in the reply.",
          "Never take a reorder from anyone but the named buyer."
        ],
        "keywords": [
          "reorder",
          "text",
          "whatsapp",
          "message",
          "repeat order",
          "same again",
          "quick order"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-tiers",
        "title": "Pricing tiers — who gets which",
        "section": "Pricing & terms",
        "roles": [
          "rep",
          "office",
          "books"
        ],
        "audience": "internal",
        "version": 6,
        "confirmed_at": "2026-06-30",
        "status": "approved",
        "body": [
          "Resorts and clubs sit on the resort tier. Gift shops and concept stores do not.",
          "A tier is set when the account opens and doesn’t move because someone asked nicely.",
          "Moving an account up a tier is Maria’s, and it needs a reason written down.",
          "Never quote a tier price to an account that isn’t on that tier — not even as an example."
        ],
        "keywords": [
          "tier",
          "tiers",
          "pricing",
          "price",
          "wholesale",
          "resort",
          "boutique",
          "which tier",
          "rung"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-discounts",
        "title": "Discounts & what needs Maria",
        "section": "Pricing & terms",
        "roles": [
          "rep",
          "office",
          "books"
        ],
        "audience": "internal",
        "version": 3,
        "confirmed_at": "2026-03-02",
        "status": "approved",
        "body": [
          "The tier is the discount. There isn’t a second one on top of it.",
          "Freight can be thrown in on an order over twenty thousand — that’s the only lever a rep has.",
          "Anything past that is Maria’s, and she wants to hear it before the buyer does.",
          "Never discount to close in the room."
        ],
        "keywords": [
          "discount",
          "discounts",
          "percent",
          "off",
          "reduction",
          "deal",
          "match",
          "beat"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-terms",
        "title": "Payment terms & freight",
        "section": "Pricing & terms",
        "roles": [
          "office",
          "books"
        ],
        "audience": "internal",
        "version": 4,
        "confirmed_at": "2026-07-09",
        "status": "approved",
        "body": [
          "Net 30 is the standard. Net 60 exists and is Maria’s to give.",
          "Freight is included on the resort tier and quoted separately on everything else.",
          "Terms live on the account, not on the order — if they differ, the account wins.",
          "A term agreed in a room and not written on the account did not happen."
        ],
        "keywords": [
          "terms",
          "net 30",
          "payment terms",
          "freight",
          "shipping cost",
          "carriage",
          "pay"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-deposits",
        "title": "Deposits on a first order",
        "section": "Pricing & terms",
        "roles": [
          "office",
          "books"
        ],
        "audience": "internal",
        "version": 2,
        "confirmed_at": "2025-10-08",
        "status": "needs-confirming",
        "body": [
          "A new account pays half up front on its first order.",
          "The deposit covers the make, not the freight.",
          "No deposit, nothing goes into the run — however good the meeting was."
        ],
        "keywords": [
          "deposit",
          "deposits",
          "first order",
          "new account",
          "up front",
          "prepay"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-invoicing",
        "title": "Invoicing & chasing",
        "section": "Pricing & terms",
        "roles": [
          "books"
        ],
        "audience": "internal",
        "version": 5,
        "confirmed_at": "2026-07-09",
        "status": "approved",
        "body": [
          "Invoice goes out the day the shipment leaves, not the day it lands.",
          "First reminder at fourteen days, second at twenty-one.",
          "A disputed line is held, not chased — that comes to Maria.",
          "Nothing goes to a collector without Maria saying so."
        ],
        "keywords": [
          "invoice",
          "invoicing",
          "chase",
          "chasing",
          "reminder",
          "overdue",
          "disputed",
          "collector",
          "unpaid"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-ship-window",
        "title": "Ship windows & what we promise",
        "section": "Shipping",
        "roles": [
          "rep",
          "office",
          "partner"
        ],
        "audience": "internal",
        "version": 7,
        "confirmed_at": "2026-07-28",
        "status": "approved",
        "body": [
          "We promise the window on the batch, never a date.",
          "The window is the batch date plus ten working days to the island.",
          "If the batch moves, the account hears it from us the same day — not from the tracking.",
          "Never promise a window that isn’t on the batch board."
        ],
        "keywords": [
          "ship",
          "ship window",
          "shipping",
          "delivery",
          "when will it arrive",
          "lead time",
          "batch",
          "run"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-short-batch",
        "title": "When a batch runs short",
        "section": "Shipping",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 3,
        "confirmed_at": "2026-06-02",
        "status": "approved",
        "body": [
          "Tell the account before they notice it on the packing list.",
          "Whoever ordered first gets the units — not whoever shouts loudest.",
          "Offer the next batch date, in writing, in the same message.",
          "Never split an account’s size run to make the numbers work."
        ],
        "keywords": [
          "short",
          "shortfall",
          "runs short",
          "not enough",
          "allocation",
          "split the shipment",
          "backorder",
          "partial"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-returns",
        "title": "Returns from a wholesale account",
        "section": "Shipping",
        "roles": [
          "office",
          "books",
          "partner"
        ],
        "audience": "internal",
        "version": 4,
        "confirmed_at": "2026-04-16",
        "status": "approved",
        "body": [
          "A mispick or a transit damage goes back at our cost, and we don’t argue about it.",
          "Anything else needs Maria before a label is sent.",
          "Photograph the carton and the piece before it moves.",
          "A return is not a credit. The credit is a separate decision."
        ],
        "keywords": [
          "return",
          "returns",
          "send back",
          "wrong item",
          "mispick",
          "damaged in transit",
          "rma"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-quality",
        "title": "Quality claims — what’s covered",
        "section": "Quality",
        "roles": [
          "rep",
          "office",
          "customer",
          "partner"
        ],
        "audience": "public",
        "version": 3,
        "confirmed_at": "2026-02-06",
        "status": "approved",
        "body": [
          "A seam or a stitch that fails inside a year is ours — replaced, not repaired.",
          "Colour fade from sun or chlorine is not a fault; it’s in the care label.",
          "Shrinkage over one size after a cold wash is ours.",
          "What’s covered is a rule. What someone bought and when is a record — look it up, never guess it."
        ],
        "keywords": [
          "quality",
          "covered",
          "warranty",
          "guarantee",
          "fault",
          "faulty",
          "stitching",
          "come away",
          "coming apart",
          "shoulder",
          "unstitched",
          "split seam",
          "seam",
          "colour",
          "fade",
          "shrink",
          "defect",
          "replaced"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-fault-evidence",
        "title": "Reporting a fault — what to send",
        "section": "Quality",
        "roles": [
          "rep",
          "office",
          "customer",
          "partner"
        ],
        "audience": "public",
        "version": 2,
        "confirmed_at": "2026-03-18",
        "status": "approved",
        "body": [
          "Photograph the piece flat, in daylight, with the fault in frame — not a close-up on its own, we need to see where on the garment it sits.",
          "Send the lot ticket sewn inside the side pocket. Without it we are guessing which run it came from.",
          "Say what happened before it failed: worn, washed, still in the box. It changes nothing about what is covered — it tells the factory where to look.",
          "Keep the piece until you hear back. Nothing goes in the bin while a claim is open.",
          "This page is what to SEND. What is covered is its own page, and what happens next is the order desk's to tell you."
        ],
        "keywords": [
          "report a fault",
          "what to send",
          "photo",
          "photos",
          "picture",
          "evidence",
          "lot ticket",
          "care label",
          "faulty piece",
          "how do i report"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-new-account",
        "title": "Opening a new wholesale account",
        "section": "Partners",
        "roles": [
          "rep",
          "office",
          "books",
          "partner"
        ],
        "audience": "public",
        "version": 3,
        "confirmed_at": "2026-05-21",
        "status": "approved",
        "body": [
          "A shop becomes an account when Maria has met them or walked the floor herself. A rep can start it; she finishes it.",
          "Take the trading name, the tax number, the delivery address and the person who actually signs off orders — that last one is the one people forget.",
          "First order is on deposit terms until three orders have been paid on time. That is not a judgement of anybody; it is the same for everyone.",
          "Set the tier at opening. Moving somebody up later is easy and moving them down is not, so start where the volume actually is.",
          "Send the lookbook and the current ship windows the same day. An account that waits a week for a lookbook has already met somebody else's rep."
        ],
        "keywords": [
          "new account",
          "open an account",
          "new stockist",
          "new boutique",
          "sign up a shop",
          "first order",
          "trading terms",
          "onboard"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-samples",
        "title": "Sample requests",
        "section": "Samples",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 2,
        "confirmed_at": "2026-06-12",
        "status": "approved",
        "body": [
          "Samples go to a named buyer at a named account, never to a person.",
          "Two pieces per account per season, and they’re logged like an order.",
          "A sample that isn’t logged is stock that walked.",
          "Anything past two is Maria’s call."
        ],
        "keywords": [
          "sample",
          "samples",
          "sample request",
          "send one",
          "try it",
          "showroom piece",
          "sales sample"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-partner-ordering",
        "title": "How an account orders for itself",
        "section": "Partners",
        "roles": [
          "office",
          "partner"
        ],
        "audience": "public",
        "version": 2,
        "confirmed_at": "2026-04-09",
        "status": "approved",
        "body": [
          "Send the reorder in here and it lands on the order desk the same hour.",
          "Piece, colourway, sizes and the ship window you need — all four.",
          "Anything sent after 4pm island time is next working day.",
          "Your rep sees it too, so you never have to send it twice."
        ],
        "keywords": [
          "order yourself",
          "place an order",
          "portal",
          "reorder ourselves",
          "account login",
          "self serve",
          "how do we order"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-stock-check",
        "title": "Checking stock before you promise it",
        "section": "Systems",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 4,
        "confirmed_at": "2026-07-15",
        "status": "approved",
        "body": [
          "Check on hand AND reserved. On hand alone has sold pieces in it.",
          "A number older than an hour is not a number — refresh it.",
          "Reserve it as you promise it, in the same minute.",
          "If it isn’t reserved, you didn’t promise it — you hoped."
        ],
        "keywords": [
          "stock",
          "on hand",
          "availability",
          "available",
          "check stock",
          "how many",
          "units",
          "reserved",
          "inventory"
        ],
        "covers": []
      },
      {
        "org_id": "org_atlantica",
        "id": "kb-conditional",
        "title": "What “conditional” means on a piece",
        "section": "Systems",
        "roles": [
          "rep",
          "office"
        ],
        "audience": "internal",
        "version": 2,
        "confirmed_at": "2026-05-30",
        "status": "approved",
        "body": [
          "Available means you can sell it today.",
          "Restock means it’s coming and the batch date is the promise, not the piece.",
          "Conditional means it only runs if the season’s minimum is hit — so you may show it, you may not promise it.",
          "If you’ve shown a conditional piece, say the word “conditional” out loud in the room."
        ],
        "keywords": [
          "conditional",
          "restock",
          "status",
          "available",
          "discontinued",
          "what does conditional mean",
          "piece status"
        ],
        "covers": []
      }
    ],
    "atlas_procedure_version": [
      {
        "procedure_id": "kb-checkin",
        "version": 5,
        "at": "2026-07-22",
        "note": "Maria added “never leave without a next date”.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-checkin",
        "version": 4,
        "at": "2026-03-30",
        "note": "Added walking the floor before opening the case.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-checkin",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-visit-notes",
        "version": 3,
        "at": "2026-06-18",
        "note": "Maria added “write it the same day”.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-visit-notes",
        "version": 2,
        "at": "2026-01-15",
        "note": "Added recording what they’re low on even without an order.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-visit-notes",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-draft-order",
        "version": 4,
        "at": "2026-07-02",
        "note": "Maria added the ship window before price.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-draft-order",
        "version": 3,
        "at": "2026-02-20",
        "note": "Sizes come from the buyer, not last season.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-draft-order",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-approve-order",
        "version": 3,
        "at": "2026-05-11",
        "note": "Maria set the twenty-thousand line and named new accounts.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-approve-order",
        "version": 2,
        "at": "2025-12-02",
        "note": "Added that a changed split needs re-approval.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-approve-order",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-reorder-text",
        "version": 2,
        "at": "2026-01-27",
        "note": "Maria added reading the sizes back.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-reorder-text",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-tiers",
        "version": 6,
        "at": "2026-06-30",
        "note": "Maria banned quoting another tier’s price as an example.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-tiers",
        "version": 5,
        "at": "2026-02-14",
        "note": "Added that a tier move needs a written reason.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-tiers",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-discounts",
        "version": 3,
        "at": "2026-03-02",
        "note": "Maria listed what always needs her OK before it’s offered.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-discounts",
        "version": 2,
        "at": "2025-11-12",
        "note": "Freight named as the one lever a rep holds.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-discounts",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-terms",
        "version": 4,
        "at": "2026-07-09",
        "note": "Maria added “if they differ, the account wins”.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-terms",
        "version": 3,
        "at": "2026-03-03",
        "note": "Freight split by tier.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-terms",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-deposits",
        "version": 2,
        "at": "2025-10-08",
        "note": "Maria set half up front on a first order.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-deposits",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-invoicing",
        "version": 5,
        "at": "2026-07-09",
        "note": "Maria changed how long we wait before the second reminder.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-invoicing",
        "version": 4,
        "at": "2026-04-03",
        "note": "Added what to do when an account disputes a line.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-invoicing",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-ship-window",
        "version": 7,
        "at": "2026-07-28",
        "note": "Maria added “they hear it from us the same day”.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-ship-window",
        "version": 6,
        "at": "2026-05-15",
        "note": "Ten working days to the island written in.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-ship-window",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-short-batch",
        "version": 3,
        "at": "2026-06-02",
        "note": "Maria added never splitting a size run.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-short-batch",
        "version": 2,
        "at": "2026-01-09",
        "note": "First-ordered-first-served written down after the Batch 05 week.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-short-batch",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-returns",
        "version": 4,
        "at": "2026-04-16",
        "note": "Maria separated the return from the credit.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-returns",
        "version": 3,
        "at": "2025-12-20",
        "note": "Added photographing the carton.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-returns",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-quality",
        "version": 3,
        "at": "2026-02-06",
        "note": "Maria wrote out what’s covered and for how long, after the Batch 03 seams.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-quality",
        "version": 2,
        "at": "2025-11-08",
        "note": "Added the one-year line.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-quality",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-fault-evidence",
        "version": 2,
        "at": "2026-03-18",
        "note": "Maria added the lot ticket after two claims arrived with no way to trace the run.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-fault-evidence",
        "version": 1,
        "at": "2025-10-02",
        "note": "Written after the first season of claims came in as text messages with no photos.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-new-account",
        "version": 3,
        "at": "2026-05-21",
        "note": "Maria added the signs-off-orders contact after a season of orders bouncing at the wrong desk.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-new-account",
        "version": 2,
        "at": "2026-01-15",
        "note": "Deposit terms written down instead of decided case by case.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-new-account",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-samples",
        "version": 2,
        "at": "2026-06-12",
        "note": "Learned from Ana’s question — Maria set the two-per-season limit and the logging rule.",
        "learned_from_thread_id": "th-ana-samples",
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-samples",
        "version": 1,
        "at": "2025-10-20",
        "note": "Written from what Maria told the order desk on the phone.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-partner-ordering",
        "version": 2,
        "at": "2026-04-09",
        "note": "Maria set the 4pm cut-off and what has to be on the request.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-partner-ordering",
        "version": 1,
        "at": "2026-01-16",
        "note": "Written after the first self-serve reorder week.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-stock-check",
        "version": 4,
        "at": "2026-07-15",
        "note": "Maria added “reserve it as you promise it”.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-stock-check",
        "version": 3,
        "at": "2026-02-28",
        "note": "Added the one-hour freshness line.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-stock-check",
        "version": 1,
        "at": "2025-09-04",
        "note": "Written from Maria’s ten-question interview.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-conditional",
        "version": 2,
        "at": "2026-05-30",
        "note": "Maria added saying the word out loud in the room.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      },
      {
        "procedure_id": "kb-conditional",
        "version": 1,
        "at": "2026-02-01",
        "note": "Written after the Wave-script Overshirt confusion.",
        "learned_from_thread_id": null,
        "from_rule_id": null
      }
    ],
    "atlas_rule": [],
    "atlas_thread": [
      {
        "org_id": "org_atlantica",
        "id": "th-james-checkin",
        "channel": "internal",
        "asker_name": "James Tate",
        "asker_user_id": null,
        "about": null,
        "asker_role": "rep",
        "subject": "What do I do first when I get to an account?",
        "opened_at": "2026-08-05T13:12:00.000Z",
        "state": "answered-by-atlas",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-ravi-reorder",
        "channel": "internal",
        "asker_name": "Ravi Patel",
        "asker_user_id": null,
        "about": null,
        "asker_role": "rep",
        "subject": "A buyer just texted me a reorder — do I need anything else from her?",
        "opened_at": "2026-08-05T16:40:00.000Z",
        "state": "answered-by-atlas",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-james-refund",
        "channel": "internal",
        "asker_name": "James Tate",
        "asker_user_id": null,
        "about": null,
        "asker_role": "rep",
        "subject": "Casa Marejada wants a refund on the overshirts that came in wrong. What do I tell them?",
        "opened_at": "2026-08-06T09:02:00.000Z",
        "state": "waiting-on-owner",
        "owner_notified": false,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-lucia-quality",
        "channel": "b2c",
        "asker_name": "Lucía Ferrer",
        "asker_user_id": null,
        "about": null,
        "asker_role": "customer",
        "subject": "The stitching on the Wave Overshirt I bought has come away at the shoulder. Is that covered?",
        "opened_at": "2026-08-06T08:15:00.000Z",
        "state": "answered-by-atlas",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-casamareas-ordering",
        "channel": "b2b",
        "asker_name": "Elena Duarte · Casa Mareas",
        "asker_user_id": null,
        "about": {
          "type": "account",
          "id": "acct_5592"
        },
        "asker_role": "partner",
        "subject": "How do we place a reorder ourselves instead of waiting for the rep?",
        "opened_at": "2026-08-04T17:30:00.000Z",
        "state": "answered-by-atlas",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-marisol-batch-claim",
        "channel": "b2b",
        "asker_name": "Marisol Vega · Marisol’s Beachwear",
        "asker_user_id": null,
        "about": {
          "type": "claim",
          "id": "clm_1042"
        },
        "asker_role": "partner",
        "subject": "Twelve of the Wave Overshirts on our last order have opened at the side seam. What happens on a whole run?",
        "opened_at": "2026-08-06T09:20:00.000Z",
        "state": "waiting-on-owner",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-james-mill-backorder",
        "channel": "internal",
        "asker_name": "James Tate",
        "asker_user_id": null,
        "about": null,
        "asker_role": "rep",
        "subject": "The mill has our replacement dye lot on backorder. How do we chase a supplier for a late lot?",
        "opened_at": "2026-08-06T10:05:00.000Z",
        "state": "waiting-on-owner",
        "owner_notified": true,
        "learned_procedure_id": null
      },
      {
        "org_id": "org_atlantica",
        "id": "th-ana-samples",
        "channel": "internal",
        "asker_name": "Ana López",
        "asker_user_id": null,
        "about": null,
        "asker_role": "rep",
        "subject": "Can I leave a couple of samples with a buyer who hasn’t ordered yet?",
        "opened_at": "2026-06-12T15:02:00.000Z",
        "state": "learned",
        "owner_notified": true,
        "learned_procedure_id": "kb-samples"
      }
    ],
    "atlas_message": [
      {
        "thread_id": "th-james-checkin",
        "id": "m-james-checkin-1",
        "at": "2026-08-05T13:12:00.000Z",
        "from": "asker",
        "text": "What do I do first when I get to an account?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-james-checkin",
        "id": "m-james-checkin-2",
        "at": "2026-08-05T13:12:03.000Z",
        "from": "atlas",
        "text": "Maria wrote this down. Word for word:\n\n“Check in on the app before you walk in, not after you leave.”\n“Ask for the buyer by name. If they’re not there, don’t pitch to whoever is.”\n“Walk the floor before you open the case — see what’s selling and what’s sat there.”",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-checkin",
            "title": "Checking in at an account",
            "version": 5,
            "confirmedAt": "2026-07-22",
            "stale": false
          }
        ],
        "escalation_reason": null
      },
      {
        "thread_id": "th-ravi-reorder",
        "id": "m-ravi-reorder-1",
        "at": "2026-08-05T16:40:00.000Z",
        "from": "asker",
        "text": "A buyer just texted me a reorder — do I need anything else from her?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-ravi-reorder",
        "id": "m-ravi-reorder-2",
        "at": "2026-08-05T16:40:04.000Z",
        "from": "atlas",
        "text": "Maria wrote this down. Word for word:\n\n“A text is a request, not an order. It gets raised as a draft like anything else.”\n“Read the sizes back to them before you raise it.”\n“If they say ‘same as last time’, say what last time was in the reply.”\n\nOne straight thing: nobody has confirmed that page since 27 Jan 2026, so I’ve flagged it for Maria to check. Still Maria’s words — just not recently checked.",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-reorder-text",
            "title": "Reorders that come in by text",
            "version": 2,
            "confirmedAt": "2026-01-27",
            "stale": true
          }
        ],
        "escalation_reason": null
      },
      {
        "thread_id": "th-james-refund",
        "id": "m-james-refund-1",
        "at": "2026-08-06T09:02:00.000Z",
        "from": "asker",
        "text": "Casa Marejada wants a refund on the overshirts that came in wrong. What do I tell them?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-james-refund",
        "id": "m-james-refund-2",
        "at": "2026-08-06T09:02:02.000Z",
        "from": "atlas",
        "text": "I’m not going to guess at this one. It’s with Maria now, and her answer comes straight back to you here. Everything you say next stays in this conversation, so nothing gets lost.",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": "Money going back after a shipment always goes to Maria — no procedure decides that one."
      },
      {
        "thread_id": "th-lucia-quality",
        "id": "m-lucia-1",
        "at": "2026-08-06T08:15:00.000Z",
        "from": "asker",
        "text": "The stitching on the Wave Overshirt I bought has come away at the shoulder. Is that covered?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-lucia-quality",
        "id": "m-lucia-2",
        "at": "2026-08-06T08:15:05.000Z",
        "from": "atlas",
        "text": "Maria wrote this down. Word for word:\n\n“A seam or a stitch that fails inside a year is ours — replaced, not repaired.”\n“What’s covered is a rule. What someone bought and when is a record — look it up, never guess it.”\n\nSo the rule covers you. What I won’t do is tell you your own purchase date or whether your size is on the shelf — that’s Atlantica’s record, not a procedure, and I’ve passed it to the order desk with what I have.",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-quality",
            "title": "Quality claims — what’s covered",
            "version": 3,
            "confirmedAt": "2026-02-06",
            "stale": false
          }
        ],
        "escalation_reason": null
      },
      {
        "thread_id": "th-casamareas-ordering",
        "id": "m-casa-1",
        "at": "2026-08-04T17:30:00.000Z",
        "from": "asker",
        "text": "How do we place a reorder ourselves instead of waiting for the rep?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-casamareas-ordering",
        "id": "m-casa-2",
        "at": "2026-08-04T17:30:04.000Z",
        "from": "atlas",
        "text": "Maria wrote this down. Word for word:\n\n“Send the reorder in here and it lands on the order desk the same hour.”\n“Piece, colourway, sizes and the ship window you need — all four.”\n“Anything sent after 4pm island time is next working day.”\n“Your rep sees it too, so you never have to send it twice.”",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-partner-ordering",
            "title": "How an account orders for itself",
            "version": 2,
            "confirmedAt": "2026-04-09",
            "stale": false
          }
        ],
        "escalation_reason": null
      },
      {
        "thread_id": "th-marisol-batch-claim",
        "id": "m-marisol-1",
        "at": "2026-08-06T09:20:00.000Z",
        "from": "asker",
        "text": "Twelve of the Wave Overshirts on our last order have opened at the side seam — same place on every one, so it isn’t the customers. We’ve pulled them off the floor in Higüey. The order desk filed it as claim 1042 when I rang, but nobody could tell me what happens when it’s a whole run rather than one piece. Do we send them back, and are we invoiced for the replacements?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-marisol-batch-claim",
        "id": "m-marisol-2",
        "at": "2026-08-06T09:20:06.000Z",
        "from": "atlas",
        "text": "Maria wrote this down. Word for word:\n\n“A seam or a stitch that fails inside a year is ours — replaced, not repaired.”\n“What’s covered is a rule. What someone bought and when is a record — look it up, never guess it.”\n\nSo each of those pieces is covered. Two things I won’t answer: what was on your last order is Atlantica’s record, not a procedure — and nothing written down says how a whole run is handled on a wholesale account rather than one garment. That part is with Maria.",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-quality",
            "title": "Quality claims — what’s covered",
            "version": 3,
            "confirmedAt": "2026-02-06",
            "stale": false
          }
        ],
        "escalation_reason": "The page covers a single piece. A whole run on a wholesale account — whether it ships back, and who carries the replacements — is not written down."
      },
      {
        "thread_id": "th-james-mill-backorder",
        "id": "m-james-mill-1",
        "at": "2026-08-06T10:05:00.000Z",
        "from": "asker",
        "text": "I rang the mill about the replacement run for claim 1042 and they have the whole dye lot on backorder — they wouldn’t give me a date on the phone. Is there anything written down about chasing a supplier for a late lot, and what am I allowed to promise the account while we wait?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-james-mill-backorder",
        "id": "m-james-mill-2",
        "at": "2026-08-06T10:05:04.000Z",
        "from": "atlas",
        "text": "Two halves, and I can only answer one of them.\n\nChasing a supplier: nothing written down covers it. Atlantica’s manual is about how you serve your accounts — there is no page about suppliers at all, so I’m not going to guess. It’s with Maria now.\n\nWhat you may tell the account IS written down. Maria’s words:\n\n“Tell the account before they notice it on the packing list.”\n“Offer the next batch date, in writing, in the same message.”\n\nSo the short-batch page carries the half you can act on today, and the mill half is with Maria.",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-short-batch",
            "title": "When a batch runs short",
            "version": 3,
            "confirmedAt": "2026-06-02",
            "stale": false
          }
        ],
        "escalation_reason": "Nothing written down covers chasing a supplier — the manual has no supplier pages, and the mill conversation happened on the phone, outside Bisbe entirely."
      },
      {
        "thread_id": "th-ana-samples",
        "id": "m-ana-1",
        "at": "2026-06-12T15:02:00.000Z",
        "from": "asker",
        "text": "Can I leave a couple of samples with a buyer who hasn’t ordered yet?",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-ana-samples",
        "id": "m-ana-2",
        "at": "2026-06-12T15:02:02.000Z",
        "from": "atlas",
        "text": "Nothing written down covers leaving samples with a buyer who hasn’t ordered. It’s with Maria.",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": "No procedure covered where samples can go."
      },
      {
        "thread_id": "th-ana-samples",
        "id": "m-ana-3",
        "at": "2026-06-12T15:19:00.000Z",
        "from": "owner",
        "text": "Two pieces per account per season, and they’re logged like an order. A sample that isn’t logged is stock that walked. Anything past two is my call.",
        "author_name": null,
        "author_user_id": null,
        "receipts": null,
        "escalation_reason": null
      },
      {
        "thread_id": "th-ana-samples",
        "id": "m-ana-4",
        "at": "2026-06-12T15:41:00.000Z",
        "from": "atlas",
        "text": "That’s in the manual now — Sample requests, v2. Next time somebody asks, I answer it myself.",
        "author_name": null,
        "author_user_id": null,
        "receipts": [
          {
            "procedureId": "kb-samples",
            "title": "Sample requests",
            "version": 2,
            "confirmedAt": "2026-06-12",
            "stale": false
          }
        ],
        "escalation_reason": null
      }
    ],
    "atlas_edge": [
      {
        "org_id": "org_atlantica",
        "from_id": "th-ana-samples",
        "to_id": "kb-samples",
        "kind": "thread-taught-doc",
        "at": "2026-06-12"
      }
    ],
    "atlas_release_item": [],
    "atlas_notification": [
      {
        "org_id": "org_atlantica",
        "id": "n-seed-5",
        "at": "2026-08-06T10:05:04.000Z",
        "audience": "owner",
        "kind": "question-waiting",
        "thread_id": "th-james-mill-backorder",
        "text": "James rang the mill about the replacement lot for claim 1042 and it’s on backorder with no date. He asked how we chase a supplier — there is no supplier page in the manual at all, so that half is waiting on you. He has the short-batch page for what to tell the account meanwhile.",
        "read": false
      },
      {
        "org_id": "org_atlantica",
        "id": "n-seed-4",
        "at": "2026-08-06T09:20:06.000Z",
        "audience": "owner",
        "kind": "question-waiting",
        "thread_id": "th-marisol-batch-claim",
        "text": "Marisol asked what happens when a whole run fails, not one piece — twelve Wave Overshirts, same side seam, claim 1042. The quality page only covers a single garment, so it’s waiting on you.",
        "read": false
      },
      {
        "org_id": "org_atlantica",
        "id": "n-seed-1",
        "at": "2026-08-06T09:02:02.000Z",
        "audience": "owner",
        "kind": "question-waiting",
        "thread_id": "th-james-refund",
        "text": "James asked what to tell Casa Marejada about a refund on the overshirts. Nothing written down covers it — it’s waiting on you.",
        "read": false
      },
      {
        "org_id": "org_atlantica",
        "id": "n-seed-2",
        "at": "2026-08-06T08:15:05.000Z",
        "audience": "owner",
        "kind": "atlas-answered",
        "thread_id": "th-lucia-quality",
        "text": "Lucía asked whether failed stitching is covered. I gave her Quality claims — what’s covered, v3, in your words, and stopped short of her purchase record. Nothing needed from you.",
        "read": false
      },
      {
        "org_id": "org_atlantica",
        "id": "n-seed-3",
        "at": "2026-08-05T16:40:04.000Z",
        "audience": "owner",
        "kind": "atlas-answered",
        "thread_id": "th-ravi-reorder",
        "text": "Ravi asked about a texted reorder. I gave him Reorders that come in by text, v2 — and said out loud that nobody has confirmed it since January.",
        "read": false
      }
    ],
    "atlas_escalation_trigger": [
      {
        "org_id": "org_atlantica",
        "id": "org_atlantica--esc-money-back",
        "phrases": [
          "refund",
          "money back",
          "refunded",
          "credit note",
          "credit them",
          "write it off",
          "give them their money"
        ],
        "reason": "Money going back after a shipment always goes to Maria — no procedure decides that one."
      },
      {
        "org_id": "org_atlantica",
        "id": "org_atlantica--esc-appointment",
        "phrases": [
          "can someone come",
          "can you come",
          "what time can",
          "are you free",
          "can you visit",
          "come out on",
          "fit us in",
          "book a visit for"
        ],
        "reason": "A promise of a specific day or time is Maria’s diary, not something a procedure can promise."
      },
      {
        "org_id": "org_atlantica",
        "id": "org_atlantica--esc-own-record",
        "phrases": [
          "my order",
          "our order",
          "my invoice",
          "our invoice",
          "when did i order",
          "when did we order",
          "what did we pay",
          "our last order",
          "my purchase"
        ],
        "reason": "Somebody’s own record — what they ordered, when, what they paid — is Atlantica’s system, not a written procedure."
      },
      {
        "org_id": "org_atlantica",
        "id": "org_atlantica--esc-price-authorisation",
        "phrases": [
          "beat that price",
          "match their price",
          "bigger discount",
          "extra discount",
          "more off",
          "better than the tier"
        ],
        "reason": "Anything past the tier price is Maria’s call, and she wants to hear it before the buyer does."
      }
    ]
  }
}