@rubytech/create-siteoffice-code 0.1.264 → 0.1.265

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  3. package/payload/platform/plugins/admin/PLUGIN.md +7 -2
  4. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.d.ts +2 -0
  5. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.d.ts.map +1 -0
  6. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js +106 -0
  7. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js.map +1 -0
  8. package/payload/platform/plugins/admin/mcp/dist/index.js +37 -2
  9. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  10. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts +12 -0
  11. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -1
  12. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +175 -1
  13. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -1
  14. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +239 -239
  15. package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +3 -3
  16. package/payload/platform/plugins/admin/skills/upgrade/SKILL.md +2 -2
  17. package/payload/platform/plugins/cloudflare/PLUGIN.md +1 -1
  18. package/payload/platform/plugins/cloudflare/references/manual-setup.md +10 -10
  19. package/payload/platform/plugins/cloudflare/references/reset-guide.md +1 -1
  20. package/payload/platform/plugins/docs/.claude-plugin/plugin.json +1 -1
  21. package/payload/platform/plugins/docs/PLUGIN.md +6 -6
  22. package/payload/platform/plugins/docs/references/admin-session.md +1 -1
  23. package/payload/platform/plugins/docs/references/admin-ui.md +2 -2
  24. package/payload/platform/plugins/docs/references/cloudflare.md +1 -1
  25. package/payload/platform/plugins/docs/references/deployment.md +7 -7
  26. package/payload/platform/plugins/docs/references/linkedin-extension.md +4 -4
  27. package/payload/platform/plugins/docs/references/memory-guide.md +2 -2
  28. package/payload/platform/plugins/docs/references/neo4j.md +1 -1
  29. package/payload/platform/plugins/docs/references/outlook-guide.md +1 -1
  30. package/payload/platform/plugins/docs/references/platform.md +2 -2
  31. package/payload/platform/plugins/docs/references/plugins-guide.md +6 -6
  32. package/payload/platform/plugins/docs/references/troubleshooting.md +1 -1
  33. package/payload/platform/plugins/linkedin-extension/.claude-plugin/plugin.json +1 -1
  34. package/payload/platform/plugins/linkedin-extension/PLUGIN.md +1 -1
  35. package/payload/platform/plugins/linkedin-extension/extension/README.md +4 -4
  36. package/payload/platform/plugins/linkedin-extension/extension/assets/pill.css +1 -1
  37. package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +2 -2
  38. package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +2 -2
  39. package/payload/platform/plugins/linkedin-extension/extension/manifest.json +3 -3
  40. package/payload/platform/plugins/linkedin-extension/extension/options/options.html +3 -3
  41. package/payload/platform/plugins/linkedin-import/.claude-plugin/plugin.json +1 -1
  42. package/payload/platform/plugins/linkedin-import/PLUGIN.md +2 -2
  43. package/payload/platform/plugins/memory/references/graph-primitives.md +1 -1
  44. package/payload/platform/plugins/memory/references/schema-base.md +1 -1
  45. package/payload/platform/plugins/memory/references/schema-construction.md +1 -1
  46. package/payload/platform/plugins/memory/skills/conversation-archive-mcp/SKILL.md +2 -2
  47. package/payload/platform/plugins/notion-import/.claude-plugin/plugin.json +1 -1
  48. package/payload/platform/plugins/notion-import/PLUGIN.md +2 -2
  49. package/payload/platform/plugins/obsidian-import/.claude-plugin/plugin.json +1 -1
  50. package/payload/platform/plugins/obsidian-import/PLUGIN.md +2 -2
  51. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +1 -1
  52. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/attachments.md +1 -1
  53. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +1 -1
  54. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/vault-structure.md +1 -1
  55. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/wikilinks.md +1 -1
  56. package/payload/platform/plugins/outlook/mcp/dist/index.js +1 -1
  57. package/payload/platform/plugins/outlook/references/auth.md +2 -2
  58. package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +1 -1
  59. package/payload/platform/plugins/sales/.claude-plugin/plugin.json +1 -1
  60. package/payload/platform/plugins/sales/PLUGIN.md +8 -8
  61. package/payload/platform/plugins/sales/references/comparisons.md +18 -18
  62. package/payload/platform/plugins/sales/references/competitive-positioning.md +5 -5
  63. package/payload/platform/plugins/sales/references/faq.md +22 -22
  64. package/payload/platform/plugins/sales/references/objection-handling.md +3 -3
  65. package/payload/platform/plugins/sales/references/pricing.md +16 -16
  66. package/payload/platform/plugins/slides/PROVENANCE.md +1 -1
  67. package/payload/platform/plugins/substack-import/.claude-plugin/plugin.json +1 -1
  68. package/payload/platform/plugins/substack-import/PLUGIN.md +2 -2
  69. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.d.ts +2 -0
  70. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.d.ts.map +1 -0
  71. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.js +16 -0
  72. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/format-login-start.test.js.map +1 -0
  73. package/payload/platform/plugins/whatsapp/mcp/dist/format.d.ts +7 -0
  74. package/payload/platform/plugins/whatsapp/mcp/dist/format.d.ts.map +1 -0
  75. package/payload/platform/plugins/whatsapp/mcp/dist/format.js +21 -0
  76. package/payload/platform/plugins/whatsapp/mcp/dist/format.js.map +1 -0
  77. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +11 -19
  78. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  79. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +1 -1
  80. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +15 -13
  81. package/payload/platform/plugins/x-import/.claude-plugin/plugin.json +1 -1
  82. package/payload/platform/plugins/x-import/PLUGIN.md +2 -2
  83. package/payload/platform/scripts/check-skill-frontmatter.mjs +8 -5
  84. package/payload/platform/scripts/wifi-provision-server/server.js +1 -1
  85. package/payload/platform/scripts/wifi-provision.sh +1 -1
  86. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  87. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  88. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  89. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  90. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +15 -15
  91. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  92. package/payload/platform/templates/agents/admin/IDENTITY.md +3 -3
  93. package/payload/platform/templates/specialists/.claude-plugin/plugin.json +1 -1
  94. package/payload/premium-plugins/venture-studio/skills/prototype-host/SKILL.md +1 -1
  95. package/payload/server/{adminuser-self-heal-YC47O34W.js → adminuser-self-heal-LC7HZAC6.js} +17 -9
  96. package/payload/server/{chunk-HYQNUVGO.js → chunk-PFF6I7KP.js} +1 -8
  97. package/payload/server/{chunk-ZC63DFWF.js → chunk-SOLVVUST.js} +1 -1
  98. package/payload/server/maxy-edge.js +2 -2
  99. package/payload/server/public/assets/{AdminShell-8JLQM1Mz.js → AdminShell-BcHJy_Y2.js} +1 -1
  100. package/payload/server/public/assets/{Checkbox-CuFJh7lI.js → Checkbox-BY2lndUH.js} +1 -1
  101. package/payload/server/public/assets/{admin-D4nsdmKU.js → admin-C364q_-g.js} +1 -1
  102. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-D-ODjJS5.js → architectureDiagram-Q4EWVU46-B9ik0JyO.js} +1 -1
  103. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DFuVe8f9.js → blockDiagram-DXYQGD6D-C-w-AMRJ.js} +1 -1
  104. package/payload/server/public/assets/{browser-DIKmvDl5.js → browser-D66JrDpx.js} +1 -1
  105. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CeVLfznT.js → c4Diagram-AHTNJAMY-BH-b0NZ1.js} +1 -1
  106. package/payload/server/public/assets/channel-5xoW3jfU.js +1 -0
  107. package/payload/server/public/assets/{chunk-336JU56O-BTaLfR3a.js → chunk-336JU56O-CZHLbmJj.js} +2 -2
  108. package/payload/server/public/assets/{chunk-426QAEUC-BzTbm4pP.js → chunk-426QAEUC-Qx6Ggp9s.js} +1 -1
  109. package/payload/server/public/assets/{chunk-4TB4RGXK-SiUyOXVG.js → chunk-4TB4RGXK-J1Raz9l0.js} +1 -1
  110. package/payload/server/public/assets/{chunk-5FUZZQ4R-BcQ33LnT.js → chunk-5FUZZQ4R-D6TFnJVF.js} +1 -1
  111. package/payload/server/public/assets/{chunk-5PVQY5BW-CT7C1Tik.js → chunk-5PVQY5BW-CC5aEdzK.js} +1 -1
  112. package/payload/server/public/assets/{chunk-EDXVE4YY-CK3uI2u6.js → chunk-EDXVE4YY-Bfbcdcbt.js} +1 -1
  113. package/payload/server/public/assets/{chunk-ENJZ2VHE-Ddp8Otnw.js → chunk-ENJZ2VHE-7EKi84Dw.js} +1 -1
  114. package/payload/server/public/assets/{chunk-ICPOFSXX-DHTxymk_.js → chunk-ICPOFSXX-DIH1FT8n.js} +1 -1
  115. package/payload/server/public/assets/{chunk-OYMX7WX6-Heg3hegz.js → chunk-OYMX7WX6-MgP02n7p.js} +1 -1
  116. package/payload/server/public/assets/{chunk-U2HBQHQK-Cw2PR7aJ.js → chunk-U2HBQHQK-Cwmbq3M7.js} +1 -1
  117. package/payload/server/public/assets/{chunk-X2U36JSP-C7vBCAQQ.js → chunk-X2U36JSP-D65N3MkW.js} +1 -1
  118. package/payload/server/public/assets/{chunk-YZCP3GAM-BS8Mybh1.js → chunk-YZCP3GAM-BkCiRhSG.js} +1 -1
  119. package/payload/server/public/assets/{chunk-ZZ45TVLE-DmnbQp47.js → chunk-ZZ45TVLE-3BQY1FWN.js} +1 -1
  120. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DRSNlIL5.js +1 -0
  121. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CYvRRfMp.js +1 -0
  122. package/payload/server/public/assets/clone-DvQUt_lq.js +1 -0
  123. package/payload/server/public/assets/{dagre-D4i6r8zi.js → dagre-DVhW13RD.js} +1 -1
  124. package/payload/server/public/assets/{dagre-KV5264BT-znWS6Wh2.js → dagre-KV5264BT-CtfjEgDz.js} +1 -1
  125. package/payload/server/public/assets/{data-CHqF4bkS.js → data-uiOcPh8T.js} +1 -1
  126. package/payload/server/public/assets/{diagram-5BDNPKRD-B6tQBN1Y.js → diagram-5BDNPKRD-C8AXEFch.js} +1 -1
  127. package/payload/server/public/assets/{diagram-G4DWMVQ6-t73WpYIY.js → diagram-G4DWMVQ6-B1P8Cwuz.js} +1 -1
  128. package/payload/server/public/assets/{diagram-MMDJMWI5-Cm63UOJm.js → diagram-MMDJMWI5-QBVBnPmO.js} +1 -1
  129. package/payload/server/public/assets/{diagram-TYMM5635-DuTSLjVB.js → diagram-TYMM5635-D2xE8fN8.js} +1 -1
  130. package/payload/server/public/assets/{erDiagram-SMLLAGMA-sbHunitX.js → erDiagram-SMLLAGMA-DMee1Yih.js} +1 -1
  131. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BWOrPuqz.js → flowDiagram-DWJPFMVM-DAd3JjoB.js} +1 -1
  132. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-WaLMGard.js → ganttDiagram-T4ZO3ILL-Bs33CmKo.js} +1 -1
  133. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CsbIgKDn.js → gitGraphDiagram-UUTBAWPF-NXc8aeps.js} +1 -1
  134. package/payload/server/public/assets/{graph-kwyPyf_b.js → graph-BSHyF267.js} +1 -1
  135. package/payload/server/public/assets/{graph-labels-pX3uIQys.js → graph-labels-D5ecmK-Z.js} +1 -1
  136. package/payload/server/public/assets/{graphlib-B8yKFZvc.js → graphlib-DN7sm5nK.js} +1 -1
  137. package/payload/server/public/assets/{infoDiagram-42DDH7IO-Bd55TzsD.js → infoDiagram-42DDH7IO-D2g5STFr.js} +1 -1
  138. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BFdOsA9f.js → ishikawaDiagram-UXIWVN3A-DBgfV-LB.js} +1 -1
  139. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CMQ5XWO9.js → journeyDiagram-VCZTEJTY-Chh9lW9P.js} +1 -1
  140. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-_RpNNRN7.js → kanban-definition-6JOO6SKY-buI2AXpi.js} +1 -1
  141. package/payload/server/public/assets/{line-SkFxjGJ8.js → line-C8OFYjrW.js} +1 -1
  142. package/payload/server/public/assets/{mermaid-parser.core-Ddok2IAe.js → mermaid-parser.core-BI5Ythbv.js} +1 -1
  143. package/payload/server/public/assets/{mermaid.core-CihAjXBG.js → mermaid.core-C4dyl1Xw.js} +3 -3
  144. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CJsq3hrO.js → mindmap-definition-QFDTVHPH-BbXKSpiv.js} +1 -1
  145. package/payload/server/public/assets/{pieDiagram-DEJITSTG-CSgg8lBB.js → pieDiagram-DEJITSTG-C8-OIoUW.js} +1 -1
  146. package/payload/server/public/assets/{public-BA9P-3ZV.js → public-DGlZwbyw.js} +3 -3
  147. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-TtHxMQtS.js → quadrantDiagram-34T5L4WZ-HOEtpu4n.js} +1 -1
  148. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DdYupKtL.js → requirementDiagram-MS252O5E-DLxjohCO.js} +1 -1
  149. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BVfdyUnO.js → sankeyDiagram-XADWPNL6-E_O_HiFL.js} +1 -1
  150. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-aFLOua6n.js → sequenceDiagram-FGHM5R23-C3-hhAup.js} +1 -1
  151. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-_3Ix8SPZ.js → stateDiagram-FHFEXIEX-BhAmQ0XX.js} +1 -1
  152. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Dhrf9hq_.js +1 -0
  153. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-Bs96WqZ7.js → timeline-definition-GMOUNBTQ-DpfZt7xI.js} +1 -1
  154. package/payload/server/public/assets/{useSelectionMode-L9uAHstA.css → useSelectionMode-98jrB9kD.css} +1 -1
  155. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-DE_SxsN2.js → vennDiagram-DHZGUBPP-Ck2Ago5q.js} +1 -1
  156. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DTCdKs6v.js → wardleyDiagram-NUSXRM2D-Dgk8C9kF.js} +1 -1
  157. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CNIrxADs.js → xychartDiagram-5P7HB3ND-BRBSl8ID.js} +1 -1
  158. package/payload/server/public/browser.html +4 -4
  159. package/payload/server/public/data.html +5 -5
  160. package/payload/server/public/graph.html +6 -6
  161. package/payload/server/public/index.html +5 -5
  162. package/payload/server/public/public.html +4 -4
  163. package/payload/server/server.js +607 -5064
  164. package/payload/server/public/assets/channel-Db8J_1Rl.js +0 -1
  165. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DjquNGFr.js +0 -1
  166. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CcE8sWEP.js +0 -1
  167. package/payload/server/public/assets/clone-xa7JZYoY.js +0 -1
  168. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-eVQQEyxx.js +0 -1
  169. /package/payload/server/public/assets/{useSelectionMode-Da9Glxvu.js → useSelectionMode-80iYuGPa.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: linkedin-import
3
- description: "Import a LinkedIn Basic Data Export into the Maxy Neo4j graph. Skill-only plugin owned by the librarian specialist. Opt-in per brand — not enabled by default."
3
+ description: "Import a LinkedIn Basic Data Export into the SiteOffice Neo4j graph. Skill-only plugin owned by the librarian specialist. Opt-in per brand — not enabled by default."
4
4
  tools: []
5
5
  always: false
6
6
  embed: false
@@ -10,7 +10,7 @@ metadata: {"platform":{"optional":true,"pluginKey":"linkedin-import"}}
10
10
 
11
11
  # LinkedIn Import
12
12
 
13
- Ingests a LinkedIn Basic Data Export (unzipped directory of CSVs + subdirectories) into the Maxy Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `specialists:librarian` specialist, which owns foreground archive and document ingestion.
13
+ Ingests a LinkedIn Basic Data Export (unzipped directory of CSVs + subdirectories) into the SiteOffice Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `specialists:librarian` specialist, which owns foreground archive and document ingestion.
14
14
 
15
15
  ## When this applies
16
16
 
@@ -17,7 +17,7 @@ filter in the query.
17
17
 
18
18
  For visual exploration ("can I see this graphically?", "show me the graph"),
19
19
  tell the user to open the **Graph** menu item in the burger menu — it opens
20
- a Maxy-native force-directed view of their own brand's subgraph.
20
+ a SiteOffice-native force-directed view of their own brand's subgraph.
21
21
  Do not build ad-hoc HTML visualizations, do not start a static file server,
22
22
  do not `Write` an `.html` file and navigate Playwright to it. The one-sentence
23
23
  reply ("Open the Graph menu item in the top-right — it opens a visual view
@@ -18,7 +18,7 @@ When loading this reference, confirm which schema files were consulted by noting
18
18
  | Job | `Order` | `schema:Order` + `cdm:Opportunity` | — | `accountId`, `orderNumber`, `customer` (id), `orderStatus` |
19
19
  | Event | `Event` | `schema:Event` | iCalendar (RFC 5545) | `accountId`, `name`, `startDate`, `endDate` |
20
20
  | Invoice | `Invoice` | `schema:Invoice` | UBL 2.1 + PDF/A | `accountId`, `confirmationNumber`, `customer` (id), `totalPaymentDue`, `paymentStatus` |
21
- | Service | `Service` | `schema:Service` | Schema.org JSON-LD | `accountId`, `name`, `description`, `offers` (price) |
21
+ | Service | `Service` | `schema:Service` | Schema.org JSON-LD | `accountId`, `name`, `description` |
22
22
  | PriceRule | `PriceSpecification` | `schema:PriceSpecification` | — | `accountId`, `price`, `priceCurrency` |
23
23
  | Communication | `Message` | `schema:Message` + `cdm:Activity` | — | `accountId`, `sender`, `recipient`, `dateSent`, `channel` |
24
24
  | Document | `DigitalDocument` | `schema:DigitalDocument` | Original format preserved | `accountId`, `name`, `dateCreated`, `encodingFormat` |
@@ -24,7 +24,7 @@ When loading this reference, confirm: "Using schema-base + schema-construction".
24
24
  | SubInvoice | `SubInvoice` | `schema:Invoice` | `accountId`, `subContractorId`, `jobId`, `period`, `days`, `amount`, `status` |
25
25
  | WhatsAppGroup | `WhatsAppGroup` | `cdm:Channel` | `accountId`, `groupId`, `jobId`, `clientName` |
26
26
 
27
- These entities are grounded in real builder job folders (the G.L. Smith & Sons "1845 12 Hickman Close" job: the `Q-1845` quote, the `1845.xlsx` Val/BDS 40+ line-item sheet, supplier invoices, and the per-trade structure). The 40+ `LineItem` rows per `Job` mirror the Val/BDS trade structure: Groundworks, Sub-Structure, Superstructure, Roof, Structural Alterations & Envelope, First Fix, Drylining & Plastering, Floor Screed, 2nd Fixing, Knock Throughs, Windows & Doors, Completion Items, Preliminaries, plus sub-contractor trades (Scaffolding, Roofing, Electrical, Plumbing, Plastering, Tiling, Decorations).
27
+ These entities model a general builder job folder: a `Job` carries many `LineItem` rows organised by trade stage, a generated client `QuoteDocument`, supplier and sub-contractor invoices, and per-trade structure. A residential building job's line items typically span stages such as groundworks, sub-structure, superstructure, roof, structural alterations & envelope, first fix, drylining & plastering, floor screed, second fixing, knock-throughs, windows & doors, completion items and preliminaries, plus sub-contractor trades (scaffolding, roofing, electrical, plumbing, plastering, tiling, decorations). The schema carries no client, job, or pricing data of its own — those are per-account runtime values.
28
28
 
29
29
  ### Distinctions from schema-trades
30
30
 
@@ -7,7 +7,7 @@ description: Operator-initiated, MCP-driven transcript ingest for Granola / Otte
7
7
 
8
8
  **Invoked from `specialists:librarian`** — the admin agent dispatches the librarian when the operator asks to ingest meetings from a transcription provider whose MCP is connected to Claude Code. The librarian loads this skill.
9
9
 
10
- **Sibling of [`conversation-archive`](../conversation-archive/SKILL.md), not a replacement.** The file-drop skill stays the canonical path for sources without an MCP (WhatsApp, Telegram, Signal, Slack, etc.). This skill is the canonical path for the three transcription providers Maxy's ICP pays for — Granola, Otter, Circleback — all of which ship first-class remote MCP servers. One skill fans out across three providers because the operator-facing flow is identical; the per-provider variance (which MCP tool to call, what the returned shape looks like) lives in the per-provider reference docs under [`../../references/transcript-formats/`](../../references/transcript-formats/).
10
+ **Sibling of [`conversation-archive`](../conversation-archive/SKILL.md), not a replacement.** The file-drop skill stays the canonical path for sources without an MCP (WhatsApp, Telegram, Signal, Slack, etc.). This skill is the canonical path for the three transcription providers SiteOffice's ICP pays for — Granola, Otter, Circleback — all of which ship first-class remote MCP servers. One skill fans out across three providers because the operator-facing flow is identical; the per-provider variance (which MCP tool to call, what the returned shape looks like) lives in the per-provider reference docs under [`../../references/transcript-formats/`](../../references/transcript-formats/).
11
11
 
12
12
  **Shared writer surface.** Every meeting ingested through this skill lands as a `:ConversationArchive` indistinguishable in shape from a file-drop ingest of the same meeting:
13
13
 
@@ -151,7 +151,7 @@ For an empty-delta re-import (every meeting already ingested under the same `con
151
151
  - **Operator-initiated only.** No auto-sync, no polling, no scheduled invocation. Every ingest is one explicit operator request.
152
152
  - **Never auto-create a `:Person`.** Email-autoresolve binds to existing nodes only. The operator owns every create.
153
153
  - **One skill, not three.** Per-provider variance lives in the reference docs, not in three near-duplicate skills.
154
- - **Provider OAuth lives in the host.** Maxy never holds a Granola / Otter / Circleback token. The operator runs `claude mcp add` and authorises each provider in the provider's own UI.
154
+ - **Provider OAuth lives in the host.** SiteOffice never holds a Granola / Otter / Circleback token. The operator runs `claude mcp add` and authorises each provider in the provider's own UI.
155
155
  - **`calendarEventId` is the future primary MERGE key.** This skill stamps it; the writer-side MERGE-on-calendar-event change is [Task 408](../../../../.tasks/408-conversation-archive-calendar-merge-key.md). Until then, cross-provider dedup of the same meeting requires the operator to use a single provider per meeting.
156
156
 
157
157
  ## Verification (post-write)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "notion-import",
3
- "description": "Import a Notion workspace export (markdown + CSV directory) into the Maxy Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default.",
3
+ "description": "Import a Notion workspace export (markdown + CSV directory) into the SiteOffice Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: notion-import
3
- description: "Import a Notion workspace export (markdown + CSV directory) into the Maxy Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default."
3
+ description: "Import a Notion workspace export (markdown + CSV directory) into the SiteOffice Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default."
4
4
  tools: []
5
5
  always: false
6
6
  embed: false
@@ -10,7 +10,7 @@ metadata: {"platform":{"optional":true,"pluginKey":"notion-import"}}
10
10
 
11
11
  # Notion Import
12
12
 
13
- Ingests a Notion workspace export (the native "Export all workspace content" markdown + CSV dump) into the Maxy Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under `specialists:database-operator`, which owns graph-write delegation from admin.
13
+ Ingests a Notion workspace export (the native "Export all workspace content" markdown + CSV dump) into the SiteOffice Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under `specialists:database-operator`, which owns graph-write delegation from admin.
14
14
 
15
15
  ## When this applies
16
16
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-import",
3
- "description": "Import an Obsidian vault (extracted directory of markdown notes + assets) into the Maxy Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default.",
3
+ "description": "Import an Obsidian vault (extracted directory of markdown notes + assets) into the SiteOffice Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: obsidian-import
3
- description: "Import an Obsidian vault (extracted directory of markdown notes + assets) into the Maxy Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default."
3
+ description: "Import an Obsidian vault (extracted directory of markdown notes + assets) into the SiteOffice Neo4j graph. Skill-only plugin owned by the database-operator specialist. Opt-in per brand — not enabled by default."
4
4
  tools: []
5
5
  always: false
6
6
  embed: false
@@ -10,7 +10,7 @@ metadata: {"platform":{"optional":true,"pluginKey":"obsidian-import"}}
10
10
 
11
11
  # Obsidian Import
12
12
 
13
- Ingests an extracted Obsidian vault (a directory tree of `.md` notes, frontmatter, wikilinks, tags, and embedded attachments) into the Maxy Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `specialists:database-operator` specialist, which owns external-archive ingestion.
13
+ Ingests an extracted Obsidian vault (a directory tree of `.md` notes, frontmatter, wikilinks, tags, and embedded attachments) into the SiteOffice Neo4j graph. Skill-only plugin — no MCP server, no admin tools added. The skill runs under the `specialists:database-operator` specialist, which owns external-archive ingestion.
14
14
 
15
15
  ## When this applies
16
16
 
@@ -67,7 +67,7 @@ The skill drives filter selection conversationally — not from a hardcoded list
67
67
  - **Natural-edge discipline.** A wikilink `[[X]]` is the operator's statement "this note connects to X". That becomes either `:WIKILINKS_TO` (page-to-page within the vault) or `:MENTIONS` (page-to-entity). A tag `#foo` becomes `:TAGGED_WITH`. An embedded image becomes `:EMBEDDED_IN`. No synthetic edges; every edge corresponds to something the markdown actually expresses.
68
68
  - **No raw Cypher in this skill.** All writes route through `mcp__plugin_memory_memory__obsidian-vault-import`, which internally calls the `memory-archive-write` handler (the agent never invokes archive-write directly — `obsidian-vault-import` is the only tool the agent calls). Bash improvisation against `cypher-shell` is forbidden; if a vault structure the parser doesn't yet handle is needed, file a task to extend the parser library, never paper over it with a script.
69
69
  - **Provenance stamp.** Every node the handler creates carries `source='obsidian'`, `createdByAgent='obsidian-import'`, `createdBySource='obsidian-import'`, `createdBySession=<sessionId>`, `createdAt=datetime()`, plus `scope='admin'` for memory-visibility.
70
- - **Idempotency.** Same vault, same contents, same owner re-imported → `written.createdPages=0`, `mergedPages=0`, all `pagesUnchanged`. Changed pages update in place. No deletions on re-import (operator removes a note from the vault → the corresponding :KnowledgeDocument stays in Maxy until the operator explicitly trashes it).
70
+ - **Idempotency.** Same vault, same contents, same owner re-imported → `written.createdPages=0`, `mergedPages=0`, all `pagesUnchanged`. Changed pages update in place. No deletions on re-import (operator removes a note from the vault → the corresponding :KnowledgeDocument stays in SiteOffice until the operator explicitly trashes it).
71
71
 
72
72
  ## File roster — references
73
73
 
@@ -1,6 +1,6 @@
1
1
  # Attachments
2
2
 
3
- How embedded images, PDFs, and other binary assets in vault pages land in Maxy.
3
+ How embedded images, PDFs, and other binary assets in vault pages land in SiteOffice.
4
4
 
5
5
  ## Syntax surface
6
6
 
@@ -16,7 +16,7 @@ Signals are evaluated in that order; the first match wins. No signal → `noteDa
16
16
 
17
17
  When `noteDate` is non-null, the page's `:KnowledgeDocument` carries `noteDate: date('YYYY-MM-DD')` as a typed Neo4j `date` value. This is queryable: `MATCH (k:KnowledgeDocument) WHERE k.noteDate >= date('2026-01-01') RETURN k` returns every daily note from this year, without needing a separate `:Day` label.
18
18
 
19
- No `:Day` node is created. The brief originally proposed `(:Page)-[:HAS_NOTE]->(:Day {date})`; the Maxy graph encodes the same information as a property on the page itself, mirroring `:Person.birthDate` and `:Event.eventDate`. Date-bearing event semantics live on `:TimelineEvent` (per Task 306), not here — a daily note is a document-at-a-date, not an event-on-a-date.
19
+ No `:Day` node is created. The brief originally proposed `(:Page)-[:HAS_NOTE]->(:Day {date})`; the SiteOffice graph encodes the same information as a property on the page itself, mirroring `:Person.birthDate` and `:Event.eventDate`. Date-bearing event semantics live on `:TimelineEvent` (per Task 306), not here — a daily note is a document-at-a-date, not an event-on-a-date.
20
20
 
21
21
  ## Folder semantics
22
22
 
@@ -30,7 +30,7 @@ Pages without frontmatter are ingested with empty `aliases` and `tags` fields; t
30
30
 
31
31
  ## Title
32
32
 
33
- Title is the filename without `.md`, normalised to NFC unicode form. Folder path is NOT part of the title — only the basename. Two pages can share a title (`Projects/Maxy.md` and `People/Adam.md/Maxy.md`); they MERGE separately because the natural key is the full `obsidianPath`, not the title.
33
+ Title is the filename without `.md`, normalised to NFC unicode form. Folder path is NOT part of the title — only the basename. Two pages can share a title (`Projects/SiteOffice.md` and `People/Adam.md/SiteOffice.md`); they MERGE separately because the natural key is the full `obsidianPath`, not the title.
34
34
 
35
35
  ## Content hash
36
36
 
@@ -9,7 +9,7 @@ The parser recognises four forms:
9
9
  | Form | Components | Example |
10
10
  |------|-----------|---------|
11
11
  | Bare | target | `[[Adam]]` |
12
- | With anchor | target, anchor | `[[Project Maxy#Goals]]` |
12
+ | With anchor | target, anchor | `[[Project SiteOffice#Goals]]` |
13
13
  | With alias | target, alias | `[[Adam Langley\|Adam]]` |
14
14
  | Embed | target (routed to attachments OR page-embed) | `![[Diagram.png]]` |
15
15
 
@@ -58,7 +58,7 @@ function getConfig() {
58
58
  throw new Error("getConfig() called without ACCOUNT_ID — handler guard missing");
59
59
  }
60
60
  if (!OUTLOOK_CLIENT_ID) {
61
- throw new Error("OUTLOOK_CLIENT_ID is not configured. Set it in the operator's Maxy install before using outlook tools.");
61
+ throw new Error("OUTLOOK_CLIENT_ID is not configured. Set it in the operator's SiteOffice install before using outlook tools.");
62
62
  }
63
63
  return {
64
64
  clientId: OUTLOOK_CLIENT_ID,
@@ -25,13 +25,13 @@ To re-vendor at a newer SHA:
25
25
  4. Bump `@maxy/outlook` version.
26
26
  5. Run the test suite.
27
27
 
28
- ## Entra app registration (one-time per Maxy install)
28
+ ## Entra app registration (one-time per SiteOffice install)
29
29
 
30
30
  The plugin requires an Azure AD ("Entra ID") app the operator owns. Steps:
31
31
 
32
32
  1. Sign in to the [Azure portal](https://portal.azure.com) with a Microsoft account.
33
33
  2. Go to **Microsoft Entra ID → App registrations → New registration**.
34
- 3. **Name:** `Maxy Outlook` (or any name the operator prefers).
34
+ 3. **Name:** `SiteOffice Outlook` (or any name the operator prefers).
35
35
  4. **Supported account types:** *Accounts in any organizational directory and personal Microsoft accounts*.
36
36
  5. **Redirect URI** (Platform: *Mobile and desktop applications*): `http://localhost`
37
37
  - **Note:** no port is specified. Microsoft Identity Platform treats native-app loopback redirects with port-flexible matching, allowing the plugin to use an ephemeral port.
@@ -25,7 +25,7 @@ Do **not** activate for:
25
25
 
26
26
  The Outlook plugin needs an **Entra app registration** in the operator's Microsoft tenant. This is a one-time-per-install step (not per-account), documented at [`references/auth.md`](references/auth.md).
27
27
 
28
- Once the Entra app exists and `OUTLOOK_CLIENT_ID` is set in the Maxy installation, run:
28
+ Once the Entra app exists and `OUTLOOK_CLIENT_ID` is set in the SiteOffice installation, run:
29
29
 
30
30
  1. **`outlook-account-register`** — the tool returns an `authUrl`. The operator opens this URL in the VNC browser, signs in with the Microsoft account they want to connect, and consents to the requested scopes (`offline_access`, `User.Read`, `Mail.Read`, `Calendars.Read`, `Contacts.Read`).
31
31
  2. Tool returns `{ status: "registered", graphUserId, scopes, tokenExpSec }` once consent completes.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales",
3
- "description": "Unified sales plugin for Maxy Phase 0. Detects buying signals, closes sales, frames value, handles objections, and captures prospect interest. Combines closing methodology with negotiation strategy for the public agent.",
3
+ "description": "Unified sales plugin for SiteOffice Phase 0. Detects buying signals, closes sales, frames value, handles objections, and captures prospect interest. Combines closing methodology with negotiation strategy for the public agent.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: sales
3
- description: "Unified sales plugin for Maxy Phase 0. Detects buying signals, closes sales, frames value, handles objections, and captures prospect interest. Combines closing methodology with negotiation strategy for the public agent."
3
+ description: "Unified sales plugin for SiteOffice Phase 0. Detects buying signals, closes sales, frames value, handles objections, and captures prospect interest. Combines closing methodology with negotiation strategy for the public agent."
4
4
  metadata: {"platform":{"always":true,"embed":["public"],"pluginKey":"sales","optional":true}}
5
5
  ---
6
6
 
7
7
  # Sales
8
8
 
9
- You are Maxy's sales agent. You detect buying signals, frame value, handle objections, close deals, and capture prospect contact details. You operate on every public agent conversation.
9
+ You are SiteOffice's sales agent. You detect buying signals, frame value, handle objections, close deals, and capture prospect contact details. You operate on every public agent conversation.
10
10
 
11
11
  ## The Golden Rule
12
12
 
@@ -52,7 +52,7 @@ Principles, not scripts. Adapt to the conversation's tone.
52
52
 
53
53
  - **Direct Close** — Ask for commitment directly. Use when signals are strong: "Shall I get you set up?" / "Ready to go ahead?"
54
54
  - **Choice Close** — Present two options, both of which are a "yes": "Would you prefer Solo or Family?"
55
- - **Summary Close** — Recap their needs and what Maxy solves, then close. Use after long conversations with lots of detail shared.
55
+ - **Summary Close** — Recap their needs and what SiteOffice solves, then close. Use after long conversations with lots of detail shared.
56
56
  - **Next-Step Close** — Propose a concrete small step: "The next step is getting your details on file — takes 30 seconds. Shall we do that now?"
57
57
  - **Return Close** — When a prospect returns after a gap, they are ready. Confirm, don't re-sell: "Great to hear from you! Sounds like you're ready — shall we get you signed up?"
58
58
 
@@ -79,13 +79,13 @@ Tone: warm, not pushy. Frame it as keeping them informed, not as a commitment. O
79
79
 
80
80
  You do not write any data. The name and email collected in conversation are persisted by admin-side tooling. If they decline, respect it and continue. Do not re-ask in the same session.
81
81
 
82
- ## Maxy Product Knowledge
82
+ ## SiteOffice Product Knowledge
83
83
 
84
- Maxy is a personal and business AI assistant that runs on a device in your home or office. It connects to your services (calendar, email, WhatsApp, smart home) and acts as a proactive agent — not just a chatbot. It remembers context across conversations and takes action on your behalf.
84
+ SiteOffice is a personal and business AI assistant that runs on a device in your home or office. It connects to your services (calendar, email, WhatsApp, smart home) and acts as a proactive agent — not just a chatbot. It remembers context across conversations and takes action on your behalf.
85
85
 
86
86
  Key differentiators:
87
87
  - **Runs locally** — your data stays on your premises, not in someone else's cloud
88
- - **Proactive** — Maxy reaches out to you, not just responds when asked
88
+ - **Proactive** — SiteOffice reaches out to you, not just responds when asked
89
89
  - **Multi-channel** — works across WhatsApp, voice, web, and smart home
90
90
  - **Plugin-based** — modular capabilities you can add based on what you need
91
91
  - **Family-aware** — one system that knows and supports the whole household
@@ -101,6 +101,6 @@ Load the relevant reference when the situation requires it:
101
101
  - **Objections & pivots** → `references/objection-handling.md` — Feel/Felt/Found, price objections, concession strategy
102
102
  - **Competitive positioning** → `references/competitive-positioning.md` — differentiation without comparison, cheapest-vs-best principle
103
103
  - **Tracking & follow-up** → `references/close-tracking.md` — persisting close attempts to memory, follow-up scheduling, escalation after stalled closes
104
- - **Pricing** → `references/pricing.md` — Maxy plans, hardware, plugin packs, add-ons
105
- - **FAQ** → `references/faq.md` — common questions about Maxy, how it works, privacy, setup, capabilities
104
+ - **Pricing** → `references/pricing.md` — SiteOffice plans, hardware, plugin packs, add-ons
105
+ - **FAQ** → `references/faq.md` — common questions about SiteOffice, how it works, privacy, setup, capabilities
106
106
  - **Comparisons** → `references/comparisons.md` — competitor comparison tables for positioning conversations
@@ -4,7 +4,7 @@ Use these tables for internal positioning only. Never read a comparison table to
4
4
 
5
5
  ## vs ChatGPT / Claude (direct AI chat)
6
6
 
7
- | Dimension | ChatGPT / Claude Chat | Maxy |
7
+ | Dimension | ChatGPT / Claude Chat | SiteOffice |
8
8
  |-----------|----------------------|------|
9
9
  | Mode | Reactive — you ask, it answers | Proactive — reaches out, reminds, acts |
10
10
  | Memory | Limited session context | Persistent memory across all conversations |
@@ -14,11 +14,11 @@ Use these tables for internal positioning only. Never read a comparison table to
14
14
  | Integration | Standalone | Connected to your calendar, email, WhatsApp, smart home |
15
15
  | Family | Individual only | Family-aware with shared context and individual privacy |
16
16
 
17
- **Key talking point:** "ChatGPT is brilliant at answering questions. Maxy is built to take action. It's the difference between a search engine and an assistant."
17
+ **Key talking point:** "ChatGPT is brilliant at answering questions. SiteOffice is built to take action. It's the difference between a search engine and an assistant."
18
18
 
19
19
  ## vs Claude Cowork / AI Productivity Tools
20
20
 
21
- | Dimension | Claude Cowork | Maxy |
21
+ | Dimension | Claude Cowork | SiteOffice |
22
22
  |-----------|--------------|------|
23
23
  | Focus | Work/professional tasks | Whole life — personal, family, home, work |
24
24
  | Environment | Cloud-based workspace | Local device in your home |
@@ -26,11 +26,11 @@ Use these tables for internal positioning only. Never read a comparison table to
26
26
  | Proactivity | On-demand | Proactive — initiates actions and reminders |
27
27
  | Family | Not designed for households | Multi-user family support |
28
28
 
29
- **Key talking point:** "Cowork is great for professional collaboration. Maxy manages your whole life — not just the work part."
29
+ **Key talking point:** "Cowork is great for professional collaboration. SiteOffice manages your whole life — not just the work part."
30
30
 
31
31
  ## vs HubSpot / CRM Tools
32
32
 
33
- | Dimension | HubSpot | Maxy |
33
+ | Dimension | HubSpot | SiteOffice |
34
34
  |-----------|---------|------|
35
35
  | Purpose | Business CRM and marketing | Personal/family life management |
36
36
  | Complexity | Enterprise-grade, steep learning curve | Conversational, learns from you naturally |
@@ -38,23 +38,23 @@ Use these tables for internal positioning only. Never read a comparison table to
38
38
  | Personal use | Not designed for personal life | Built for personal and family use |
39
39
  | Automation | Template-based workflows | Context-aware, adaptive actions |
40
40
 
41
- **Key talking point:** "HubSpot manages your business relationships. Maxy manages your life."
41
+ **Key talking point:** "HubSpot manages your business relationships. SiteOffice manages your life."
42
42
 
43
43
  ## vs Calendly / Scheduling Tools
44
44
 
45
- | Dimension | Calendly | Maxy |
45
+ | Dimension | Calendly | SiteOffice |
46
46
  |-----------|---------|------|
47
47
  | Scope | Meeting scheduling only | Full calendar management plus everything else |
48
48
  | Intelligence | Rule-based availability | Context-aware — knows your preferences, energy levels, travel time |
49
49
  | Integration | Calendar + video conferencing | Calendar + email + WhatsApp + smart home + everything |
50
50
  | Proactivity | Sends links when asked | Detects conflicts, suggests rescheduling, reminds proactively |
51
- | Cost | Free tier; Pro from $10/month | Included in Maxy Solo (£20/month) with all other capabilities |
51
+ | Cost | Free tier; Pro from $10/month | Included in SiteOffice Solo (£20/month) with all other capabilities |
52
52
 
53
- **Key talking point:** "Calendly handles scheduling. Maxy handles scheduling, reminders, messages, and everything else — it's your whole assistant, not just a booking link."
53
+ **Key talking point:** "Calendly handles scheduling. SiteOffice handles scheduling, reminders, messages, and everything else — it's your whole assistant, not just a booking link."
54
54
 
55
55
  ## vs Google Workspace / Microsoft 365
56
56
 
57
- | Dimension | Google/Microsoft Suite | Maxy |
57
+ | Dimension | Google/Microsoft Suite | SiteOffice |
58
58
  |-----------|----------------------|------|
59
59
  | Model | Collection of separate apps | One unified brain across all services |
60
60
  | Intelligence | Each app has its own limited AI | One AI that understands context across everything |
@@ -63,11 +63,11 @@ Use these tables for internal positioning only. Never read a comparison table to
63
63
  | Family | Separate accounts, no shared intelligence | Family-aware with shared context |
64
64
  | Personal assistant | Fragmented (Assistant, Cortana) | Unified, persistent, proactive |
65
65
 
66
- **Key talking point:** "Google gives you the tools. Maxy uses the tools for you."
66
+ **Key talking point:** "Google gives you the tools. SiteOffice uses the tools for you."
67
67
 
68
68
  ## vs WhatsApp Business / Messaging
69
69
 
70
- | Dimension | WhatsApp Business | Maxy |
70
+ | Dimension | WhatsApp Business | SiteOffice |
71
71
  |-----------|------------------|------|
72
72
  | Channel | WhatsApp only | WhatsApp + voice + web + smart home |
73
73
  | Intelligence | Templates and auto-replies | Full AI understanding and action |
@@ -75,11 +75,11 @@ Use these tables for internal positioning only. Never read a comparison table to
75
75
  | Scope | Messaging | Messaging + calendar + tasks + smart home + everything |
76
76
  | Automation | Canned responses | Context-aware, personalised actions |
77
77
 
78
- **Key talking point:** "WhatsApp Business automates messages. Maxy understands conversations and acts on them."
78
+ **Key talking point:** "WhatsApp Business automates messages. SiteOffice understands conversations and acts on them."
79
79
 
80
80
  ## vs Hiring Staff / Virtual Assistants
81
81
 
82
- | Dimension | Human VA / Staff | Maxy |
82
+ | Dimension | Human VA / Staff | SiteOffice |
83
83
  |-----------|-----------------|------|
84
84
  | Availability | Business hours (or expensive 24/7) | Always on, 24/7 |
85
85
  | Cost | £1,500-3,000+/month for a good VA | From £20/month |
@@ -88,12 +88,12 @@ Use these tables for internal positioning only. Never read a comparison table to
88
88
  | Scale | One person, limited bandwidth | Handles everything simultaneously |
89
89
  | Ramp-up | Weeks to months to train | Minutes to set up, learns continuously |
90
90
 
91
- **Key talking point:** "A good VA costs £2,000/month and still can't be available at 3am. Maxy costs £20/month and never sleeps."
91
+ **Key talking point:** "A good VA costs £2,000/month and still can't be available at 3am. SiteOffice costs £20/month and never sleeps."
92
92
 
93
93
  ## Positioning Principles
94
94
 
95
- 1. **Never disparage.** Present Maxy's strengths. Let the prospect draw comparisons.
95
+ 1. **Never disparage.** Present SiteOffice's strengths. Let the prospect draw comparisons.
96
96
  2. **Lead with their criteria.** Ask what matters to them, then position against those criteria.
97
97
  3. **Be honest about limitations.** If a competitor genuinely does something better in a specific area, acknowledge it. Honesty builds trust.
98
- 4. **The real competitor is inertia.** Most prospects aren't choosing between Maxy and a competitor — they're choosing between Maxy and doing nothing. Position against the status quo.
99
- 5. **Use the "Two Options" framing.** "You can keep juggling twelve apps, or you can let Maxy handle it. Which sounds better?"
98
+ 4. **The real competitor is inertia.** Most prospects aren't choosing between SiteOffice and a competitor — they're choosing between SiteOffice and doing nothing. Position against the status quo.
99
+ 5. **Use the "Two Options" framing.** "You can keep juggling twelve apps, or you can let SiteOffice handle it. Which sounds better?"
@@ -14,10 +14,10 @@ This is a universal truth that prospects intuitively understand. Use it as a pri
14
14
 
15
15
  ## Differentiation Without Comparison
16
16
 
17
- Instead of comparing features with competitors, focus on what makes Maxy different in terms the prospect cares about:
17
+ Instead of comparing features with competitors, focus on what makes SiteOffice different in terms the prospect cares about:
18
18
 
19
19
  1. **Ask what matters:** "What's most important to you in choosing a solution?"
20
- 2. **Position on their criteria:** Use their answer to highlight Maxy's strengths
20
+ 2. **Position on their criteria:** Use their answer to highlight SiteOffice's strengths
21
21
  3. **Let them draw the comparison:** "Based on what you've told me matters, here's how we approach that..."
22
22
 
23
23
  The prospect does the comparing. You just present your strengths against their stated criteria.
@@ -30,16 +30,16 @@ The prospect does the comparing. You just present your strengths against their s
30
30
  4. **Position on genuine differentiators:** Only mention things that are genuinely different, not marginally better.
31
31
  5. **If they ask you to compare directly:** "I can only speak to what we do well — I'd rather show you than tell you about someone else."
32
32
 
33
- ## Maxy's Core Differentiators
33
+ ## SiteOffice's Core Differentiators
34
34
 
35
35
  When positioning against alternatives, these are the genuine differentiators:
36
36
 
37
37
  - **Local-first:** Data stays in the home. No cloud storage of personal information. This is unique among consumer AI assistants.
38
- - **Proactive, not reactive:** Maxy reaches out to you. It doesn't wait for you to open an app.
38
+ - **Proactive, not reactive:** SiteOffice reaches out to you. It doesn't wait for you to open an app.
39
39
  - **Cross-channel:** One brain across WhatsApp, voice, web, and smart home. Not siloed apps.
40
40
  - **Family-aware:** Designed for households, not just individuals. Shared context with individual privacy.
41
41
  - **Skill-based:** Pay for what you use. Not a monolithic subscription with features you'll never touch.
42
- - **Agentic:** Maxy takes action (books, sends, reminds, manages) — not just answers questions.
42
+ - **Agentic:** SiteOffice takes action (books, sends, reminds, manages) — not just answers questions.
43
43
 
44
44
  ## When They've Already Chosen the Competitor
45
45
 
@@ -1,68 +1,68 @@
1
- # Maxy FAQ
1
+ # SiteOffice FAQ
2
2
 
3
- ## What is Maxy?
3
+ ## What is SiteOffice?
4
4
 
5
- Maxy is your Operations Manager — an operations layer, not a productivity tool. It doesn't help you work faster. It does the work that otherwise doesn't get done.
5
+ SiteOffice is your Operations Manager — an operations layer, not a productivity tool. It doesn't help you work faster. It does the work that otherwise doesn't get done.
6
6
 
7
- Most people know they should be using a CRM, a task manager, a follow-up system. Most don't — because every tool demands a new habit on top of an already full day. Maxy removes that cost entirely. You just talk, and the organisation happens.
7
+ Most people know they should be using a CRM, a task manager, a follow-up system. Most don't — because every tool demands a new habit on top of an already full day. SiteOffice removes that cost entirely. You just talk, and the organisation happens.
8
8
 
9
- Maxy plays four roles: it follows through on your commitments, responds to your customers at any hour, handles your finances (quotes, invoices, chasing), and manages your picture — what's overdue, what's at risk, what needs a decision. It runs on a device on your premises, so your data never leaves.
9
+ SiteOffice plays four roles: it follows through on your commitments, responds to your customers at any hour, handles your finances (quotes, invoices, chasing), and manages your picture — what's overdue, what's at risk, what needs a decision. It runs on a device on your premises, so your data never leaves.
10
10
 
11
11
  ## Can this actually run my business?
12
12
 
13
- Yes. Maxy handles the operations layer — the work that keeps a business running but isn't the work you went into business to do. Scheduling, customer enquiries, quoting, invoicing, document creation, follow-ups, workflows, CRM updates, proactive briefings. A 2-person business with the operational capacity of a 20-person operation — because Maxy provides both the admin nobody sees and the customer-facing team everyone does.
13
+ Yes. SiteOffice handles the operations layer — the work that keeps a business running but isn't the work you went into business to do. Scheduling, customer enquiries, quoting, invoicing, document creation, follow-ups, workflows, CRM updates, proactive briefings. A 2-person business with the operational capacity of a 20-person operation — because SiteOffice provides both the admin nobody sees and the customer-facing team everyone does.
14
14
 
15
- ## How is Maxy different from ChatGPT / Siri / Alexa?
15
+ ## How is SiteOffice different from ChatGPT / Siri / Alexa?
16
16
 
17
- ChatGPT helps you think and write. Siri and Alexa respond to commands. Maxy runs your operation. It notices your calendar clash and fixes it, creates and delivers documents to clients, answers customer enquiries on your website at 3am, runs workflows you described once in conversation, and generates your morning briefing before you've opened your laptop. It also runs locally on your device, so your data isn't stored in someone else's cloud.
17
+ ChatGPT helps you think and write. Siri and Alexa respond to commands. SiteOffice runs your operation. It notices your calendar clash and fixes it, creates and delivers documents to clients, answers customer enquiries on your website at 3am, runs workflows you described once in conversation, and generates your morning briefing before you've opened your laptop. It also runs locally on your device, so your data isn't stored in someone else's cloud.
18
18
 
19
- The comparison that matters isn't Maxy vs ChatGPT. It's Maxy vs hiring someone — or vs doing it all yourself.
19
+ The comparison that matters isn't SiteOffice vs ChatGPT. It's SiteOffice vs hiring someone — or vs doing it all yourself.
20
20
 
21
- ## Can Maxy create documents?
21
+ ## Can SiteOffice create documents?
22
22
 
23
- Yes. Describe what you need — a quote, a proposal, an invoice, a report, a flyer, a compliance document — and Maxy generates it as a professional A4 PDF. Review it in the conversation, download it, or deliver it directly to a customer via WhatsApp or email. Quotes, proposals, invoices, reports, marketing materials, compliance documents — all created through conversation.
23
+ Yes. Describe what you need — a quote, a proposal, an invoice, a report, a flyer, a compliance document — and SiteOffice generates it as a professional A4 PDF. Review it in the conversation, download it, or deliver it directly to a customer via WhatsApp or email. Quotes, proposals, invoices, reports, marketing materials, compliance documents — all created through conversation.
24
24
 
25
25
  ## How does it work technically?
26
26
 
27
- Maxy runs on a Raspberry Pi (the Maxy Pi) or any Linux computer on your premises. It uses Claude as its AI backbone. Your personal data — calendar entries, messages, memories, preferences — stays on the device. Maxy connects to external services via APIs but processes everything locally.
27
+ SiteOffice runs on a Raspberry Pi (the SiteOffice Pi) or any Linux computer on your premises. It uses Claude as its AI backbone. Your personal data — calendar entries, messages, memories, preferences — stays on the device. SiteOffice connects to external services via APIs but processes everything locally.
28
28
 
29
29
  ## What about privacy?
30
30
 
31
- Privacy is the architecture, not a feature. Your data lives on a device you own, on your premises. Maxy doesn't upload personal information to cloud servers. When Maxy uses Claude for reasoning, it sends only what's needed for the current task — not your entire history.
31
+ Privacy is the architecture, not a feature. Your data lives on a device you own, on your premises. SiteOffice doesn't upload personal information to cloud servers. When SiteOffice uses Claude for reasoning, it sends only what's needed for the current task — not your entire history.
32
32
 
33
33
  ## How do I set it up?
34
34
 
35
- 1. Get a Maxy device (from £250 for a pre-configured Raspberry Pi, or use your own Linux machine)
35
+ 1. Get a SiteOffice device (from £250 for a pre-configured Raspberry Pi, or use your own Linux machine)
36
36
  2. Plug it in and connect to Wi-Fi
37
37
  3. Open your browser, set a PIN, and connect your Claude subscription
38
- 4. Start talking — Maxy walks you through the rest
38
+ 4. Start talking — SiteOffice walks you through the rest
39
39
 
40
40
  Fully operational in under 15 minutes. No software to install, no configuration, no training.
41
41
 
42
- ## What can Maxy actually do?
42
+ ## What can SiteOffice actually do?
43
43
 
44
44
  Core capabilities (included in every plan):
45
45
  - **Scheduling** — appointments, recurring events, daily briefings, proactive reminders
46
46
  - **Contact management** — CRM, pipeline tracking, customer history
47
- - **Workflow automation** — describe a process once, Maxy runs it forever
47
+ - **Workflow automation** — describe a process once, SiteOffice runs it forever
48
48
  - **Document creation** — quotes, proposals, invoices, reports, marketing materials — generated and delivered
49
49
  - **Customer-facing agents** — sales, support, booking agents on your website or messaging apps
50
50
  - **Message handling** — WhatsApp, Telegram, and email integration
51
51
  - **Memory** — remembers your preferences, past conversations, and context across sessions
52
52
 
53
- With skill packs, Maxy adds depth in specific areas: finance, wellness, professional productivity, family coordination, home management, and travel.
53
+ With skill packs, SiteOffice adds depth in specific areas: finance, wellness, professional productivity, family coordination, home management, and travel.
54
54
 
55
55
  ## Do I need the hardware?
56
56
 
57
- Yes. Maxy runs on a device on your premises. This is what keeps your data private and local. There is no cloud-only option — the local-first architecture is fundamental to how Maxy works.
57
+ Yes. SiteOffice runs on a device on your premises. This is what keeps your data private and local. There is no cloud-only option — the local-first architecture is fundamental to how SiteOffice works.
58
58
 
59
59
  ## Can multiple family members use it?
60
60
 
61
- Yes, with the Family plan (£999/year). Each family member gets their own profile with individual privacy. Maxy understands shared context (family calendar, household tasks) while keeping personal information separate.
61
+ Yes, with the Family plan (£999/year). Each family member gets their own profile with individual privacy. SiteOffice understands shared context (family calendar, household tasks) while keeping personal information separate.
62
62
 
63
63
  ## What if I need help?
64
64
 
65
- Maxy itself can answer most questions about its own capabilities. For technical issues or account questions, support is available via the Maxy app and email.
65
+ SiteOffice itself can answer most questions about its own capabilities. For technical issues or account questions, support is available via the SiteOffice app and email.
66
66
 
67
67
  ## Is there a trial or money-back guarantee?
68
68
 
@@ -70,4 +70,4 @@ Details on trial availability will be confirmed at launch. Share your name and e
70
70
 
71
71
  ## How is this different from just using multiple apps?
72
72
 
73
- Multiple apps don't talk to each other. Your calendar doesn't know about your emails. Your reminders don't know about your calendar. Your document tool doesn't know about your CRM. Maxy connects everything into a single graph — meetings connected to people, people connected to deals, deals connected to history. That context is what makes the four roles possible. No isolated app can replicate this — because isolation is their fundamental constraint. One Operations Manager instead of twelve apps.
73
+ Multiple apps don't talk to each other. Your calendar doesn't know about your emails. Your reminders don't know about your calendar. Your document tool doesn't know about your CRM. SiteOffice connects everything into a single graph — meetings connected to people, people connected to deals, deals connected to history. That context is what makes the four roles possible. No isolated app can replicate this — because isolation is their fundamental constraint. One Operations Manager instead of twelve apps.
@@ -42,7 +42,7 @@ The universal objection-handling pattern. Works for price and almost any other c
42
42
  > "I understand how you feel — it's a significant investment. Many people felt the same way initially. However, most found that within the first month, the time saved more than covered the cost."
43
43
 
44
44
  *Unsure about value:*
45
- > "I get how you feel — it's hard to know if it's worth it before you've tried it. Others felt the same. What they found was that once Maxy started managing their calendar and messages proactively, they couldn't go back."
45
+ > "I get how you feel — it's hard to know if it's worth it before you've tried it. Others felt the same. What they found was that once SiteOffice started managing their calendar and messages proactively, they couldn't go back."
46
46
 
47
47
  *Comparing to cheaper option:*
48
48
  > "I understand how you feel — the price difference is noticeable. Others have felt the same and tried the cheaper option first. What they found was it couldn't act proactively or connect their services together, and they ended up coming back."
@@ -115,9 +115,9 @@ This is a legitimate blocker.
115
115
  ### Trust: "How do I know it actually works?"
116
116
 
117
117
  1. Offer to walk them through specifics relevant to their use case
118
- 2. Reference the early-access programme — being honest about where Maxy is builds trust
118
+ 2. Reference the early-access programme — being honest about where SiteOffice is builds trust
119
119
  3. Emphasise the local-first privacy model — data stays in their home
120
- 4. Be honest: "We're early — the best way to see is to try it. That's why we're building a small group of early adopters who want to shape what Maxy becomes."
120
+ 4. Be honest: "We're early — the best way to see is to try it. That's why we're building a small group of early adopters who want to shape what SiteOffice becomes."
121
121
 
122
122
  ## Concession Strategy
123
123