@rubytech/create-maxy-code 0.1.63 → 0.1.65

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 (661) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/docs/references/admin-session.md +6 -3
  3. package/payload/platform/plugins/docs/references/internals.md +7 -1
  4. package/payload/platform/plugins/docs/references/platform.md +4 -0
  5. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts +22 -0
  6. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts.map +1 -0
  7. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js +44 -0
  8. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js.map +1 -0
  9. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +2 -0
  10. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +1 -0
  11. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +68 -0
  12. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +1 -0
  13. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts +2 -0
  14. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts.map +1 -0
  15. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js +48 -0
  16. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js.map +1 -0
  17. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts +2 -0
  18. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts.map +1 -0
  19. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +53 -0
  20. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -0
  21. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts +2 -0
  22. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js +40 -0
  24. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts +2 -0
  26. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts.map +1 -0
  27. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js +39 -0
  28. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +2 -0
  30. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +88 -0
  32. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +1 -0
  33. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +2 -0
  34. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +1 -0
  35. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +58 -0
  36. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +1 -0
  37. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +2 -0
  38. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +1 -0
  39. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +58 -0
  40. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +2 -0
  42. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +1 -0
  43. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +70 -0
  44. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +1 -0
  45. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +2 -0
  46. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +1 -0
  47. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +48 -0
  48. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +1 -0
  49. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +2 -0
  50. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +1 -0
  51. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +74 -0
  52. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -0
  53. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +2 -0
  54. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +1 -0
  55. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +47 -0
  56. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +1 -0
  57. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +2 -0
  58. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +1 -0
  59. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +65 -0
  60. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +1 -0
  61. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +2 -0
  62. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +1 -0
  63. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +43 -0
  64. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +1 -0
  65. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +2 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +1 -0
  67. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +65 -0
  68. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +1 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +2 -0
  70. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +1 -0
  71. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +49 -0
  72. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +1 -0
  73. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +2 -0
  74. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +1 -0
  75. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +74 -0
  76. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -0
  77. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +2 -0
  78. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +1 -0
  79. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +74 -0
  80. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts +2 -0
  82. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts.map +1 -0
  83. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js +62 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js.map +1 -0
  85. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts +2 -0
  86. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts.map +1 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js +76 -0
  88. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js.map +1 -0
  89. package/payload/platform/services/claude-session-manager/dist/index.js +79 -2
  90. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  91. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +20 -0
  92. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  93. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +81 -20
  94. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  95. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +24 -4
  96. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -1
  97. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +39 -9
  98. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -1
  99. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
  100. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +19 -4
  101. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  102. package/payload/platform/services/claude-session-manager/dist/types.d.ts +5 -0
  103. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  104. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  105. package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
  106. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -2
  107. package/payload/premium-plugins/real-agent/plugins/epc/.claude-plugin/plugin.json +3 -3
  108. package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +1 -1
  109. package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +1 -3
  110. package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +11 -12
  111. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +55 -33
  112. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +69 -70
  113. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +12 -7
  114. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +88 -19
  115. package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +8 -12
  116. package/payload/server/{chunk-2IKQERHN.js → chunk-S6PQA6Q4.js} +43 -34
  117. package/payload/server/maxy-edge.js +1 -1
  118. package/payload/server/server-init.cjs +40 -0
  119. package/payload/server/server.js +1 -1
  120. package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +0 -8
  121. package/payload/platform/plugins/brochures/PLUGIN.md +0 -38
  122. package/payload/platform/plugins/brochures/commands/make-brochure.md +0 -11
  123. package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
  124. package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +0 -192
  125. package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +0 -354
  126. package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
  127. package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +0 -142
  128. package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +0 -270
  129. package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
  130. package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +0 -166
  131. package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
  132. package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +0 -1288
  133. package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
  134. package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +0 -47
  135. package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
  136. package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
  137. package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +0 -2370
  138. package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +0 -372
  139. package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
  140. package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +0 -267
  141. package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +0 -266
  142. package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +0 -141
  143. package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +0 -8
  144. package/payload/platform/plugins/buyers/PLUGIN.md +0 -34
  145. package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
  146. package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
  147. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
  148. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
  149. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
  150. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
  151. package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
  152. package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
  153. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
  154. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
  155. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
  156. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
  157. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
  158. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
  159. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
  160. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
  161. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
  162. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
  163. package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
  164. package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
  165. package/payload/platform/plugins/epc/.claude-plugin/plugin.json +0 -17
  166. package/payload/platform/plugins/epc/PLUGIN.md +0 -90
  167. package/payload/platform/plugins/epc/mcp/dist/index.d.ts +0 -2
  168. package/payload/platform/plugins/epc/mcp/dist/index.d.ts.map +0 -1
  169. package/payload/platform/plugins/epc/mcp/dist/index.js +0 -117
  170. package/payload/platform/plugins/epc/mcp/dist/index.js.map +0 -1
  171. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts +0 -3
  172. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts.map +0 -1
  173. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js +0 -72
  174. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js.map +0 -1
  175. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts +0 -60
  176. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts.map +0 -1
  177. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js +0 -181
  178. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js.map +0 -1
  179. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts +0 -3
  180. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  181. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js +0 -49
  182. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js.map +0 -1
  183. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts +0 -15
  184. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts.map +0 -1
  185. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js +0 -130
  186. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js.map +0 -1
  187. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts +0 -5
  188. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts.map +0 -1
  189. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js +0 -38
  190. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js.map +0 -1
  191. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts +0 -4
  192. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  193. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js +0 -9
  194. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js.map +0 -1
  195. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts +0 -4
  196. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts.map +0 -1
  197. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js +0 -10
  198. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js.map +0 -1
  199. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts +0 -5
  200. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts.map +0 -1
  201. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js +0 -36
  202. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js.map +0 -1
  203. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts +0 -10
  204. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts.map +0 -1
  205. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js +0 -30
  206. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js.map +0 -1
  207. package/payload/platform/plugins/epc/mcp/package-lock.json +0 -2566
  208. package/payload/platform/plugins/epc/mcp/package.json +0 -21
  209. package/payload/platform/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  210. package/payload/platform/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  211. package/payload/platform/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  212. package/payload/platform/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  213. package/payload/platform/plugins/epc/mcp/src/index.ts +0 -156
  214. package/payload/platform/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  215. package/payload/platform/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  216. package/payload/platform/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  217. package/payload/platform/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  218. package/payload/platform/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  219. package/payload/platform/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  220. package/payload/platform/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  221. package/payload/platform/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  222. package/payload/platform/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  223. package/payload/platform/plugins/epc/mcp/tsconfig.json +0 -20
  224. package/payload/platform/plugins/epc/mcp/vitest.config.ts +0 -8
  225. package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +0 -8
  226. package/payload/platform/plugins/estate-business/PLUGIN.md +0 -64
  227. package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
  228. package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
  229. package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
  230. package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
  231. package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
  232. package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
  233. package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
  234. package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
  235. package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
  236. package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
  237. package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
  238. package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
  239. package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
  240. package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
  241. package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
  242. package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
  243. package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
  244. package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
  245. package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
  246. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
  247. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
  248. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
  249. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
  250. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
  251. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
  252. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
  253. package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
  254. package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
  255. package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
  256. package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
  257. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
  258. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
  259. package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
  260. package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
  261. package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
  262. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
  263. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
  264. package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
  265. package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
  266. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
  267. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
  268. package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
  269. package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
  270. package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
  271. package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
  272. package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
  273. package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
  274. package/payload/platform/plugins/estate-coaching/PLUGIN.md +0 -54
  275. package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
  276. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
  277. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
  278. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
  279. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
  280. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
  281. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
  282. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
  283. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
  284. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
  285. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
  286. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
  287. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
  288. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
  289. package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
  290. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
  291. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
  292. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
  293. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
  294. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
  295. package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
  296. package/payload/platform/plugins/estate-sales/PLUGIN.md +0 -52
  297. package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
  298. package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
  299. package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
  300. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
  301. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
  302. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
  303. package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
  304. package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
  305. package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
  306. package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
  307. package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
  308. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
  309. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
  310. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
  311. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
  312. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
  313. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
  314. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
  315. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
  316. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
  317. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
  318. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
  319. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
  320. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
  321. package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
  322. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
  323. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
  324. package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
  325. package/payload/platform/plugins/estate-teaching/PLUGIN.md +0 -30
  326. package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
  327. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
  328. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
  329. package/payload/platform/plugins/leads/.claude-plugin/plugin.json +0 -8
  330. package/payload/platform/plugins/leads/PLUGIN.md +0 -61
  331. package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
  332. package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +0 -38
  333. package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
  334. package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
  335. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
  336. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
  337. package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
  338. package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
  339. package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
  340. package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
  341. package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
  342. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
  343. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
  344. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
  345. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
  346. package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
  347. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
  348. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
  349. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
  350. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
  351. package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
  352. package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +0 -72
  353. package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +0 -33
  354. package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
  355. package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +0 -53
  356. package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
  357. package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
  358. package/payload/platform/plugins/listings/.claude-plugin/plugin.json +0 -8
  359. package/payload/platform/plugins/listings/PLUGIN.md +0 -102
  360. package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
  361. package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +0 -38
  362. package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +0 -28
  363. package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
  364. package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
  365. package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
  366. package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
  367. package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
  368. package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
  369. package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
  370. package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
  371. package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
  372. package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
  373. package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
  374. package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
  375. package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
  376. package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +0 -78
  377. package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
  378. package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
  379. package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
  380. package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +0 -337
  381. package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
  382. package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
  383. package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
  384. package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
  385. package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
  386. package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
  387. package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
  388. package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
  389. package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
  390. package/payload/platform/plugins/loop/.claude-plugin/plugin.json +0 -17
  391. package/payload/platform/plugins/loop/PLUGIN.md +0 -260
  392. package/payload/platform/plugins/loop/mcp/dist/index.d.ts +0 -2
  393. package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +0 -1
  394. package/payload/platform/plugins/loop/mcp/dist/index.js +0 -320
  395. package/payload/platform/plugins/loop/mcp/dist/index.js.map +0 -1
  396. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
  397. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  398. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +0 -88
  399. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
  400. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
  401. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  402. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
  403. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
  404. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
  405. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
  406. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js +0 -165
  407. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
  408. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
  409. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  410. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
  411. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
  412. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
  413. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  414. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
  415. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
  416. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
  417. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
  418. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
  419. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
  420. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  421. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  422. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
  423. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  424. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
  425. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  426. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +0 -35
  427. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
  428. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  429. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  430. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
  431. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
  432. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
  433. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  434. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +0 -14
  435. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
  436. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
  437. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  438. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +0 -43
  439. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
  440. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
  441. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  442. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
  443. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  444. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  445. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  446. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  447. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  448. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  449. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  450. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
  451. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  452. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  453. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  454. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
  455. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
  456. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
  457. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  458. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
  459. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
  460. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
  461. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  462. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +0 -87
  463. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
  464. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
  465. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  466. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
  467. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
  468. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
  469. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
  470. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
  471. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
  472. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
  473. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  474. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
  475. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
  476. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
  477. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  478. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +0 -11
  479. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
  480. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
  481. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  482. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +0 -41
  483. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
  484. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
  485. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
  486. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
  487. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
  488. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
  489. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  490. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +0 -49
  491. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
  492. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
  493. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  494. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
  495. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
  496. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
  497. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  498. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +0 -32
  499. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
  500. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  501. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  502. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
  503. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
  504. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  505. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  506. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
  507. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  508. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  509. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  510. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
  511. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
  512. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  513. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  514. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
  515. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
  516. package/payload/platform/plugins/loop/mcp/package-lock.json +0 -2549
  517. package/payload/platform/plugins/loop/mcp/package.json +0 -21
  518. package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
  519. package/payload/platform/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
  520. package/payload/platform/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
  521. package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
  522. package/payload/platform/plugins/loop/mcp/src/index.ts +0 -498
  523. package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +0 -105
  524. package/payload/platform/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
  525. package/payload/platform/plugins/loop/mcp/src/lib/key-store.ts +0 -221
  526. package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
  527. package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
  528. package/payload/platform/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
  529. package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
  530. package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +0 -86
  531. package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
  532. package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +0 -19
  533. package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +0 -70
  534. package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
  535. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
  536. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
  537. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
  538. package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
  539. package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +0 -180
  540. package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
  541. package/payload/platform/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
  542. package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
  543. package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +0 -92
  544. package/payload/platform/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
  545. package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +0 -129
  546. package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
  547. package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +0 -95
  548. package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
  549. package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
  550. package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
  551. package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
  552. package/payload/platform/plugins/loop/mcp/tsconfig.json +0 -20
  553. package/payload/platform/plugins/loop/mcp/vitest.config.ts +0 -9
  554. package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
  555. package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
  556. package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
  557. package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
  558. package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +0 -54
  559. package/payload/platform/plugins/preval/.claude-plugin/plugin.json +0 -8
  560. package/payload/platform/plugins/preval/PLUGIN.md +0 -55
  561. package/payload/platform/plugins/preval/hooks/preval-prompt-required.sh +0 -140
  562. package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +0 -176
  563. package/payload/platform/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +0 -373
  564. package/payload/platform/plugins/preval/skills/property-preval/references/render.py +0 -815
  565. package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -199
  566. package/payload/platform/plugins/preval/skills/property-preval/references/template.html +0 -312
  567. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +0 -17
  568. package/payload/platform/plugins/property-data/PLUGIN.md +0 -180
  569. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +0 -2
  570. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
  571. package/payload/platform/plugins/property-data/mcp/dist/index.js +0 -236
  572. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +0 -1
  573. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
  574. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
  575. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
  576. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
  577. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
  578. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  579. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
  580. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
  581. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
  582. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
  583. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
  584. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
  585. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
  586. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
  587. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
  588. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
  589. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
  590. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
  591. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
  592. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
  593. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
  594. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
  595. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
  596. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
  597. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
  598. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  599. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
  600. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
  601. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
  602. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
  603. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
  604. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
  605. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
  606. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
  607. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
  608. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
  609. package/payload/platform/plugins/property-data/mcp/package-lock.json +0 -2566
  610. package/payload/platform/plugins/property-data/mcp/package.json +0 -21
  611. package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
  612. package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
  613. package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
  614. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
  615. package/payload/platform/plugins/property-data/mcp/src/index.ts +0 -409
  616. package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
  617. package/payload/platform/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
  618. package/payload/platform/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
  619. package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
  620. package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
  621. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
  622. package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
  623. package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
  624. package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
  625. package/payload/platform/plugins/property-data/mcp/tsconfig.json +0 -20
  626. package/payload/platform/plugins/property-data/mcp/vitest.config.ts +0 -8
  627. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +0 -77
  628. package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +0 -8
  629. package/payload/platform/plugins/vendors/PLUGIN.md +0 -33
  630. package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
  631. package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
  632. package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
  633. package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
  634. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
  635. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
  636. package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
  637. package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
  638. package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
  639. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
  640. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
  641. package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
  642. package/payload/premium-plugins/real-agent/plugins/epc/PLUGIN.md +0 -90
  643. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package-lock.json +0 -2566
  644. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package.json +0 -21
  645. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  646. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  647. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  648. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  649. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/index.ts +0 -156
  650. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  651. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  652. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  653. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  654. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  655. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  656. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  657. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  658. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  659. package/payload/premium-plugins/real-agent/plugins/epc/mcp/tsconfig.json +0 -20
  660. package/payload/premium-plugins/real-agent/plugins/epc/mcp/vitest.config.ts +0 -8
  661. package/payload/premium-plugins/real-agent/plugins/listings/skills/epc-checker/SKILL.md +0 -38
@@ -2,12 +2,14 @@
2
2
 
3
3
  Substitutes <!-- REPLACE: <slot> --> placeholders in template.html with values
4
4
  derived from one inputs.json (shape: template-inputs.schema.json), drives
5
- Chrome headless to produce a 5-page A4 PDF, and asserts page count == 5.
5
+ Chrome headless to produce a 7-page A4 PDF, and asserts page count == 7.
6
6
 
7
7
  Fails loud on any missing / unverifiable load-bearing input. No silent
8
8
  fallback modes — see _assert_inputs. Task 157 layers provenance gates
9
- (market_summary.origin, agent_listings[].origin, agent_overrides) on top
10
- of 156's load-bearing-input checks.
9
+ (agent_listings[].origin, agent_overrides.brand_selected_by_operator) on
10
+ top of 156's load-bearing-input checks. `subject.narrative` and
11
+ `market_summary` are agent-composed from the 12-call fan-out, not
12
+ operator-supplied — only the `paragraphs >= 2` sanity check survives.
11
13
 
12
14
  Usage:
13
15
  python3 render.py inputs.json
@@ -24,8 +26,8 @@ def _money(n: int) -> str:
24
26
  return f"£{int(n):,}"
25
27
 
26
28
 
27
- def _range_money(low: int, high: int) -> str:
28
- return f"£{int(low):,} £{int(high):,}"
29
+ # _range_money retired with the page-2 valuation panel. The pack no longer
30
+ # quotes a numeric range — the human estate agent values in person.
29
31
 
30
32
 
31
33
  # ---------------- helpers ----------------
@@ -38,11 +40,12 @@ def _short_address(address: str) -> str:
38
40
 
39
41
  def _sold_comps_rows(rows: list[dict]) -> str:
40
42
  if not rows:
41
- return '<tr><td colspan="4" class="muted">No sold transactions in the sample.</td></tr>'
43
+ return '<tr><td colspan="5" class="muted">No sold transactions in the sample.</td></tr>'
42
44
  return "".join(
43
45
  f"<tr><td>{html.escape(r['date'])}</td>"
44
46
  f"<td>{html.escape(r['address'])}</td>"
45
47
  f"<td>{html.escape(r['type'])}</td>"
48
+ f"<td>{r['beds'] if r.get('beds') else '—'}</td>"
46
49
  f"<td class=\"num\">{_money(r['price'])}</td></tr>"
47
50
  for r in rows[:6]
48
51
  )
@@ -129,6 +132,33 @@ def _summary_paragraphs(paras: list[str]) -> str:
129
132
  return "".join(out)
130
133
 
131
134
 
135
+ def _variant_css(inputs: dict) -> str:
136
+ """Compose CSS override block for the 'on-brand' variant.
137
+
138
+ Premium variant keeps the editorial Cormorant/Lora/Inter typography lock
139
+ — only the brand's colour tokens and logo are applied. On-brand variant
140
+ overrides --display / --body / --sans with brand.font_display +
141
+ brand.font_body — pack typography follows the agent's DESIGN.md end-to-end.
142
+
143
+ Returns empty string for premium (no overrides applied).
144
+ """
145
+ variant = (inputs.get("variant") or "premium").lower()
146
+ if variant != "on-brand":
147
+ return ""
148
+ brand = inputs.get("brand") or {}
149
+ fd = brand.get("font_display") or ""
150
+ fb = brand.get("font_body") or fd
151
+ if not fd:
152
+ return ""
153
+ return (
154
+ '<style>:root{'
155
+ f'--display:{fd};'
156
+ f'--body:{fb};'
157
+ f'--sans:{fd};'
158
+ '}</style>'
159
+ )
160
+
161
+
132
162
  def _wordmark(brand: dict, variant: str, out_dir: Path) -> str:
133
163
  """variant ∈ {'light', 'dark'}. Mirrors property-market-report's wordmark."""
134
164
  key = "logo_light" if variant == "light" else "logo_dark"
@@ -214,62 +244,29 @@ def _agent_listings_cards(rows: list[dict], out_dir: Path) -> str:
214
244
  return "".join(_listing_card(p, i, out_dir) for i, p in enumerate(rows[:6]))
215
245
 
216
246
 
217
- # ---------------- valuation maths ----------------
247
+ # ---------------- subject facts ----------------
218
248
 
219
- def _valuation_block(subject: dict, valuation: dict) -> str:
220
- """Build the page-2 valuation panel: headline range, adjustments, final range.
249
+ def _notable_features_block(subject: dict) -> str:
250
+ """Label-only bullet list from subject.adjustments[].label. No numbers.
221
251
 
222
- The three EPC certificate fields are asserted non-null upstream by
223
- _assert_inputs no fallback panel here. sqft is derived from
224
- total_floor_area_m2 via M2_TO_SQFT.
252
+ The pre-valuation pack does NOT quote an estimate or a range — the
253
+ human agent values the property in person. Adjustments survive only
254
+ as a "Notable features" list (operator-supplied facts the agent
255
+ wants visible on the cover-side of the pitch); delta_pct is held in
256
+ the schema for backward compat but is no longer rendered.
225
257
  """
226
- sqft = _derived_sqft(subject)
227
- low_psf = valuation["sold_psf_low"]
228
- mid_psf = valuation["sold_psf"]
229
- high_psf = valuation["sold_psf_high"]
230
- ask_psf = valuation["asking_psf"]
231
-
232
- low_raw = int(sqft * low_psf)
233
- mid_raw = int(sqft * mid_psf)
234
- high_raw = int(sqft * high_psf)
235
- ask_raw = int(sqft * ask_psf)
236
-
237
- rows = [
238
- ('<div class="val-row headline">'
239
- f'<div class="lbl">Headline range<small>{sqft:,} sqft × £{low_psf}–£{high_psf} sold £/sqft (Land Registry 70pc band)</small></div>'
240
- f'<div class="num">{_range_money(low_raw, high_raw)}</div></div>'),
241
- ('<div class="val-row">'
242
- f'<div class="lbl">Cross-check · asking £/sqft<small>{sqft:,} sqft × £{ask_psf} mean asking £/sqft</small></div>'
243
- f'<div class="num">{_money(ask_raw)}</div></div>'),
244
- ]
245
-
246
258
  adjustments = subject.get("adjustments") or []
247
- if adjustments:
248
- rows.append('<div class="val-row"><div class="lbl" style="font-family:var(--sans);font-weight:600;font-size:8pt;letter-spacing:2pt;text-transform:uppercase;color:var(--text-accent)">Adjustments</div><div class="num">&nbsp;</div></div>')
249
- for adj in adjustments:
250
- delta = float(adj["delta_pct"])
251
- cls = "pos" if delta > 0 else ("neg" if delta < 0 else "")
252
- sign = "+" if delta >= 0 else ""
253
- rows.append(
254
- '<div class="val-row adj">'
255
- f'<div class="lbl">{html.escape(adj["label"])}</div>'
256
- f'<div class="num {cls}">{sign}{delta:.1f}%</div>'
257
- "</div>"
258
- )
259
-
260
- delta_sum = sum(float(a["delta_pct"]) for a in adjustments)
261
- factor = 1.0 + delta_sum / 100.0
262
- low_final = int(low_raw * factor)
263
- high_final = int(high_raw * factor)
264
-
265
- final = (
266
- '<div class="val-final">'
267
- f'<div class="lbl">Final indicative range</div>'
268
- f'<div class="num">{_range_money(low_final, high_final)}</div>'
269
- "</div>"
259
+ if not adjustments:
260
+ return ""
261
+ items = "".join(
262
+ f'<li>{html.escape(adj["label"])}</li>' for adj in adjustments
263
+ )
264
+ return (
265
+ '<div class="notable-features" style="margin-top:6mm">'
266
+ '<div class="eyebrow" style="margin-bottom:2mm">Notable features</div>'
267
+ f'<ul style="margin:0;padding-left:5mm;line-height:1.5">{items}</ul>'
268
+ '</div>'
270
269
  )
271
-
272
- return '<div class="val-panel">' + "".join(rows) + "</div>" + final
273
270
 
274
271
 
275
272
  def _derived_sqft(subject: dict) -> int:
@@ -396,8 +393,10 @@ def _assert_inputs(inputs: dict) -> None:
396
393
  agent-listings-empty, market-summary-too-thin.
397
394
 
398
395
  Task 157 causes (provenance — agent didn't invent the input):
399
- cover-hero-not-subject, agent-listings-invented,
400
- market-summary-invented, brand-invented.
396
+ cover-hero-not-subject, agent-listings-invented, brand-invented.
397
+ (`market-summary-invented` retired: market_summary is agent-composed
398
+ from the fan-out, not operator-supplied; only the paragraphs>=2
399
+ sanity check remains, surfaced as `market-summary-too-thin`.)
401
400
 
402
401
  Task 163 cause (EPC certificate paste-in completes 157's mandate):
403
402
  epc-certificate-not-supplied — any of total_floor_area_m2,
@@ -489,14 +488,6 @@ def _assert_inputs(inputs: dict) -> None:
489
488
  "agent_overrides.listings_status_curated: true.",
490
489
  )
491
490
 
492
- if ms.get("origin") not in ("operator", "operator-edited-llm-stub"):
493
- raise PrevalAbort(
494
- "market-summary-invented",
495
- "market_summary.origin must be 'operator' or 'operator-edited-llm-stub'. "
496
- "Have the operator draft or accept the paragraphs before rendering — "
497
- "the agent never invents the market narrative unprompted.",
498
- )
499
-
500
491
  if brand.get("name") and not overrides.get("brand_selected_by_operator"):
501
492
  raise PrevalAbort(
502
493
  "brand-invented",
@@ -539,8 +530,10 @@ def render(inputs: dict, out_dir: Path, template_path: Path | None = None) -> Pa
539
530
  psf = max(1, round(d["for_sale"] / 7))
540
531
 
541
532
  slots = {
533
+ "variant_css": _variant_css(inputs),
542
534
  "brand_name": brand["name"],
543
535
  "brand_tagline": brand["tagline"],
536
+ "prepared_by": brand.get("agent_name") or brand["name"],
544
537
  "brand_primary": brand["primary"],
545
538
  "brand_primary_dark": brand["primary_dark"],
546
539
  "brand_accent": brand["accent"],
@@ -563,7 +556,7 @@ def render(inputs: dict, out_dir: Path, template_path: Path | None = None) -> Pa
563
556
  "kpi_subject_epc_sub": subject_epc_sub,
564
557
  "kpi_subject_type": subject.get("type") or "—",
565
558
  "kpi_subject_tenure": subject.get("tenure") or "Tenure unknown",
566
- "valuation_block": _valuation_block(subject, v),
559
+ "notable_features": _notable_features_block(subject),
567
560
  "subject_narrative": subject.get("narrative") or "",
568
561
 
569
562
  "summary_headline": ms["headline"],
@@ -577,6 +570,11 @@ def render(inputs: dict, out_dir: Path, template_path: Path | None = None) -> Pa
577
570
  "price_growth_note": ms["price_growth_note"],
578
571
  "demand_note": ms["demand_note"],
579
572
  "spark_svg": _spark_svg(d.get("growth_series", []), d.get("growth_psf_series", [])),
573
+ "type_dist_rows": _type_dist_rows(d.get("type_dist", [])),
574
+ "rental_rating": r["demand_rating"],
575
+ "rental_for_rent": str(r["for_rent"]),
576
+ "rental_dom": str(r["dom"]),
577
+ "rental_turnover": f"{r['turnover_pct']}%",
580
578
 
581
579
  "sold_comps_rows": _sold_comps_rows(v.get("sold_comps", [])),
582
580
  "asking_comps_tiles": _asking_comps_tiles(v.get("asking_comps", [])),
@@ -586,12 +584,13 @@ def render(inputs: dict, out_dir: Path, template_path: Path | None = None) -> Pa
586
584
 
587
585
  text_slots = {
588
586
  "address", "address_short", "postcode", "generated",
589
- "brand_name", "brand_tagline",
587
+ "brand_name", "brand_tagline", "prepared_by",
590
588
  "kpi_subject_beds", "kpi_subject_epc", "kpi_subject_epc_sub",
591
589
  "kpi_subject_sqft", "kpi_subject_sqft_sub",
592
590
  "kpi_subject_type", "kpi_subject_tenure",
593
591
  "summary_headline", "demand_rating",
594
592
  "price_growth_note", "demand_note", "subject_narrative",
593
+ "rental_rating", "rental_for_rent", "rental_dom", "rental_turnover",
595
594
  }
596
595
  for k in text_slots:
597
596
  slots[k] = html.escape(str(slots[k]))
@@ -791,7 +790,7 @@ def main():
791
790
  try:
792
791
  render(inputs, out_dir)
793
792
  pdf = render_pdf(out_dir, f"{base}.pdf")
794
- pages = assert_page_count(pdf, 5)
793
+ pages = assert_page_count(pdf, 7)
795
794
  except PrevalAbort as e:
796
795
  pdf_path = out_dir / f"{base}.pdf"
797
796
  if pdf_path.exists():
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "property-preval inputs",
4
- "description": "Single-source contract for render.py. Mirrors the 12 property-data MCP responses for one full UK address, plus operator-supplied brand, subject (including the three EPC certificate fields pasted before invocation), market_summary, and agent_listings.",
4
+ "description": "Single-source contract for render.py. Mirrors the 12 property-data MCP responses for one full UK address, plus operator-supplied brand, subject (including the three EPC certificate fields pasted before invocation), and agent_listings. `subject.narrative` and `market_summary` are composed by the agent from the fan-out — not operator-supplied.",
5
5
  "type": "object",
6
6
  "required": [
7
7
  "out_dir", "filename_stem", "address", "postcode", "generated",
@@ -14,6 +14,7 @@
14
14
  "address": { "type": "string", "description": "Full UK address as the operator gave it." },
15
15
  "postcode": { "type": "string", "description": "Postcode derived from the address, e.g. 'CM23 2UJ'." },
16
16
  "generated": { "type": "string", "description": "Human date, e.g. '19 May 2026'." },
17
+ "variant": { "type": "string", "enum": ["premium", "on-brand"], "description": "Render variant. 'premium' (default) keeps the editorial Cormorant/Lora/Inter typography lock and only applies the brand's colours + logo. 'on-brand' overrides the type system with brand.font_display + brand.font_body — the pack follows the agent's identity end-to-end. Decision rule: if the operator says 'premium' use premium; if brand.font_display + brand.font_body are both set and the operator did not say premium, default to 'on-brand'; otherwise premium." },
17
18
 
18
19
  "brand": {
19
20
  "type": "object",
@@ -28,7 +29,10 @@
28
29
  "paper_banded": { "type": "string" },
29
30
  "rule": { "type": "string" },
30
31
  "logo_light": { "type": "string", "description": "Optional filesystem path to white-on-transparent logo for the cover." },
31
- "logo_dark": { "type": "string", "description": "Optional filesystem path to full-colour logo for body-page headers." }
32
+ "logo_dark": { "type": "string", "description": "Optional filesystem path to full-colour logo for body-page headers." },
33
+ "agent_name": { "type": "string", "description": "Optional. Name of the individual agent preparing the pitch — printed in the cover's 'Prepared by' meta cell. Falls back to brand.name when omitted." },
34
+ "font_display": { "type": "string", "description": "Optional. CSS font-family value for the display typeface (h1/h2/h4/eyebrows). Only honoured when variant='on-brand'. e.g. '\"Azo Sans\", system-ui, sans-serif'." },
35
+ "font_body": { "type": "string", "description": "Optional. CSS font-family value for body typography (paragraphs, lists). Only honoured when variant='on-brand'. e.g. 'Poppins, sans-serif'." }
32
36
  }
33
37
  },
34
38
 
@@ -44,7 +48,7 @@
44
48
  "total_floor_area_m2": { "type": "number", "description": "Total internal area in square metres, copied verbatim from the EPC certificate. Operator pastes this into inputs.json before invocation. Null aborts with epc-certificate-not-supplied." },
45
49
  "current_energy_rating": { "type": "string", "description": "Current energy rating from the EPC certificate, e.g. 'C'. Operator paste-in. Null aborts with epc-certificate-not-supplied." },
46
50
  "lodgement_date": { "type": "string", "description": "ISO date of the EPC certificate's lodgement, e.g. '2018-04-21'. Operator paste-in. Null aborts with epc-certificate-not-supplied." },
47
- "narrative": { "type": ["string", "null"], "description": "One short paragraph the operator writes about the subject shown under the valuation panel." },
51
+ "narrative": { "type": ["string", "null"], "description": "One short paragraph (1–3 sentences) under the valuation panel. Composed by the agent from EPC + council-tax records + adjustments — not operator-supplied." },
48
52
  "adjustments": {
49
53
  "type": "array",
50
54
  "description": "Operator-curated esoteric factors that shift the headline range. Deltas sum linearly into the final factor (1 + Σ delta_pct/100).",
@@ -81,6 +85,7 @@
81
85
  "date": { "type": "string" },
82
86
  "address": { "type": "string" },
83
87
  "type": { "type": "string" },
88
+ "beds": { "type": ["integer", "null"], "description": "Bedroom count from the Land Registry transaction; some rows are null in the source." },
84
89
  "price": { "type": "integer" }
85
90
  }
86
91
  }
@@ -153,14 +158,14 @@
153
158
 
154
159
  "market_summary": {
155
160
  "type": "object",
156
- "required": ["headline", "paragraphs", "demand_gauge_position", "price_growth_note", "demand_note", "origin"],
161
+ "description": "Composed by the agent from the 12-call PropertyData fan-out — not operator-supplied. See SKILL.md \"Composed by the agent from the fan-out\" for the field-by-field mapping.",
162
+ "required": ["headline", "paragraphs", "demand_gauge_position", "price_growth_note", "demand_note"],
157
163
  "properties": {
158
164
  "headline": { "type": "string", "description": "One-line display-italic h2 for the market context page." },
159
- "paragraphs": { "type": "array", "minItems": 2, "items": { "type": "string" }, "description": "2–3 short paragraphs. First gets a drop cap. Fewer than 2 aborts the run." },
165
+ "paragraphs": { "type": "array", "minItems": 2, "items": { "type": "string" }, "description": "2–3 short paragraphs. First gets a drop cap. Fewer than 2 aborts the run with `market-summary-too-thin`." },
160
166
  "demand_gauge_position": { "type": "string", "description": "Percentage string for the gauge marker position, e.g. '62%'." },
161
167
  "price_growth_note": { "type": "string" },
162
- "demand_note": { "type": "string" },
163
- "origin": { "type": "string", "enum": ["operator", "operator-edited-llm-stub"], "description": "Provenance of the paragraphs. 'agent-invented' is never permitted — the gate aborts with `market-summary-invented`." }
168
+ "demand_note": { "type": "string" }
164
169
  }
165
170
  },
166
171
 
@@ -139,7 +139,7 @@
139
139
  .gauge-ends{display:flex;justify-content:space-between;font-family:var(--sans);font-weight:500;font-size:7.5pt;letter-spacing:1.5pt;text-transform:uppercase;color:var(--text-muted);margin-top:2mm}
140
140
 
141
141
  /* --- SPARKLINE --- */
142
- .spark{width:100%;height:36mm;display:block;background:var(--surface-card);border:1px solid var(--rule-300);border-radius:var(--radius-md)}
142
+ .spark{width:100%;height:48mm;display:block;background:var(--surface-card);border:1px solid var(--rule-300);border-radius:var(--radius-md)}
143
143
  .spark .pl{fill:none;stroke:var(--teal-900);stroke-width:1.4}
144
144
  .spark .pl-psf{fill:none;stroke:var(--gold-500);stroke-width:1.4;stroke-dasharray:2 1.5}
145
145
  .spark .pt{fill:var(--teal-900)}
@@ -179,6 +179,7 @@
179
179
  .wm.small .wm-name{font-size:20pt}
180
180
  .wm.small .wm-sub{margin-top:.8mm;font-size:5.5pt;letter-spacing:1.8pt}
181
181
  </style>
182
+ <!-- REPLACE: variant_css -->
182
183
  </head>
183
184
  <body>
184
185
 
@@ -193,11 +194,11 @@
193
194
  <div class="cover-rule"></div>
194
195
  <h4 style="color:var(--gold-500);margin:6mm 0 4mm"><!-- REPLACE: brand_name --> · Pre-valuation</h4>
195
196
  <h1><!-- REPLACE: address --></h1>
196
- <p class="lede">A view of what this property is worth — <!-- REPLACE: generated -->.</p>
197
+ <p class="lede">Market context and comparable evidence prepared <!-- REPLACE: generated -->.</p>
197
198
  <div style="margin-top:8mm"><span class="pc-chip"><!-- REPLACE: postcode --></span></div>
198
199
  </div>
199
200
  <dl class="cover-meta">
200
- <div><dt>Report</dt><dd>Pre-valuation</dd></div>
201
+ <div><dt>Prepared by</dt><dd style="font-size:13pt;line-height:1.2"><!-- REPLACE: prepared_by --></dd></div>
201
202
  <div><dt>Address</dt><dd style="font-size:11pt;line-height:1.2"><!-- REPLACE: address_short --></dd></div>
202
203
  <div><dt>Postcode</dt><dd><!-- REPLACE: postcode --></dd></div>
203
204
  <div><dt>Generated</dt><dd><!-- REPLACE: generated --></dd></div>
@@ -206,22 +207,22 @@
206
207
  <div class="doc-foot" style="z-index:2"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>01</span></div>
207
208
  </section>
208
209
 
209
- <!-- PAGE 2 — SUBJECT VALUATION -->
210
+ <!-- PAGE 2 — ABOUT THE PROPERTY -->
210
211
  <section class="page">
211
212
  <header class="doc-head">
212
213
  <!-- REPLACE: wordmark_dark -->
213
- <div class="breadcrumb">Subject valuation · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
214
+ <div class="breadcrumb">About the property · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
214
215
  </header>
215
216
  <div class="eyebrow">Subject property</div>
216
- <h2 style="margin-top:3mm">What this property is worth.</h2>
217
+ <h2 style="margin-top:3mm">About the property.</h2>
217
218
  <div class="kpis">
218
219
  <div class="kpi subject"><div class="label">Floor area</div><div class="value"><!-- REPLACE: kpi_subject_sqft --></div><div class="sub"><!-- REPLACE: kpi_subject_sqft_sub --></div></div>
219
220
  <div class="kpi subject"><div class="label">Bedrooms</div><div class="value"><!-- REPLACE: kpi_subject_beds --></div><div class="sub">As recorded</div></div>
220
221
  <div class="kpi subject"><div class="label">EPC rating</div><div class="value"><!-- REPLACE: kpi_subject_epc --></div><div class="sub"><!-- REPLACE: kpi_subject_epc_sub --></div></div>
221
222
  <div class="kpi subject"><div class="label">Type</div><div class="value" style="font-size:16pt"><!-- REPLACE: kpi_subject_type --></div><div class="sub"><!-- REPLACE: kpi_subject_tenure --></div></div>
222
223
  </div>
223
- <!-- REPLACE: valuation_block -->
224
224
  <p class="muted" style="margin-top:6mm;max-width:170mm"><!-- REPLACE: subject_narrative --></p>
225
+ <!-- REPLACE: notable_features -->
225
226
  <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>02</span></div>
226
227
  </section>
227
228
 
@@ -234,7 +235,7 @@
234
235
  <div class="eyebrow">Market summary</div>
235
236
  <h2 style="margin-top:3mm"><!-- REPLACE: summary_headline --></h2>
236
237
  <div class="summary" style="max-width:170mm"><!-- REPLACE: summary_paragraphs --></div>
237
- <div style="height:5mm"></div>
238
+ <div style="height:3mm"></div>
238
239
  <div class="kpis three">
239
240
  <div class="kpi gold"><div class="label">Average asking £</div><div class="value"><!-- REPLACE: kpi_avg_asking --></div><div class="sub">Current listings · <!-- REPLACE: postcode --></div></div>
240
241
  <div class="kpi"><div class="label">Average sold £</div><div class="value"><!-- REPLACE: kpi_avg_sold --></div><div class="sub">Completed transactions</div></div>
@@ -257,26 +258,94 @@
257
258
  <p class="muted" style="margin-top:4mm"><!-- REPLACE: demand_note --></p>
258
259
  </div>
259
260
  </div>
260
- <div class="panel" style="margin-top:5mm">
261
- <h4>7-year price trend · £ and £/sqft</h4>
261
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>03</span></div>
262
+ </section>
263
+
264
+ <!-- PAGE 4 — MARKET DEPTH (chart + stock mix + rental pillar) -->
265
+ <section class="page">
266
+ <header class="doc-head">
267
+ <!-- REPLACE: wordmark_dark -->
268
+ <div class="breadcrumb">Market depth · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
269
+ </header>
270
+ <div class="eyebrow">Price trajectory</div>
271
+ <h2 style="margin-top:3mm;margin-bottom:5mm">Seven years of CM23 pricing.</h2>
272
+ <div class="panel" style="padding:5mm">
273
+ <div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:3mm">
274
+ <h4 style="margin-bottom:0">£ headline vs achieved £/sqft</h4>
275
+ <div class="legend" style="margin-top:0"><span><span class="sw"></span>Average £</span><span><span class="sw gold"></span>£/sqft</span></div>
276
+ </div>
262
277
  <!-- REPLACE: spark_svg -->
263
- <div class="legend"><span><span class="sw"></span>Average £</span><span><span class="sw gold"></span>£/sqft</span></div>
264
278
  </div>
265
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>03</span></div>
279
+ <div style="height:8mm"></div>
280
+ <div class="eyebrow">Output area &amp; rental pillar</div>
281
+ <div class="two-col" style="align-items:stretch;margin-top:3mm">
282
+ <div class="panel banded" style="display:flex;flex-direction:column">
283
+ <h4>Output-area stock mix</h4>
284
+ <div style="margin-top:3mm;display:flex;flex-direction:column;gap:2mm"><!-- REPLACE: type_dist_rows --></div>
285
+ <p class="muted" style="margin-top:auto;padding-top:3mm">Detached stock is the scarce type in this output area.</p>
286
+ </div>
287
+ <div class="panel" style="display:flex;flex-direction:column">
288
+ <h4>Rental pillar</h4>
289
+ <div style="margin-top:3mm"><span class="pill"><!-- REPLACE: rental_rating --></span></div>
290
+ <div class="kpis" style="grid-template-columns:repeat(3,1fr);margin-top:4mm;margin-bottom:0">
291
+ <div class="kpi"><div class="label">For rent</div><div class="value"><!-- REPLACE: rental_for_rent --></div><div class="sub">homes</div></div>
292
+ <div class="kpi"><div class="label">DoM</div><div class="value"><!-- REPLACE: rental_dom --></div><div class="sub">days · avg</div></div>
293
+ <div class="kpi"><div class="label">Take-up</div><div class="value"><!-- REPLACE: rental_turnover --></div><div class="sub">of stock · mo</div></div>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>04</span></div>
298
+ </section>
299
+
300
+ <!-- PAGE 5 — SELLER PREP (what gets the best price) -->
301
+ <section class="page">
302
+ <header class="doc-head">
303
+ <!-- REPLACE: wordmark_dark -->
304
+ <div class="breadcrumb">What gets the best price · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
305
+ </header>
306
+ <div class="eyebrow">Quick wins for the vendor</div>
307
+ <h2 style="margin-top:3mm;margin-bottom:3mm">What gets the best price.</h2>
308
+ <p class="muted" style="max-width:170mm;margin-bottom:6mm">Photography and the first viewings carry more weight than any other moment in the campaign. These are the highest-impact prep moves — none are expensive, all are noticed by buyers.</p>
309
+
310
+ <div class="two-col" style="align-items:start;gap:8mm">
311
+ <div class="panel banded" style="padding:6mm">
312
+ <h4 style="margin-bottom:4mm">Five high-impact moves</h4>
313
+ <ol style="margin:0;padding-left:5mm;font-family:var(--body);font-size:10.5pt;line-height:1.55">
314
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Declutter ruthlessly.</strong> Surfaces should carry roughly half what they normally do. Buyers need space to project themselves into the home, not your life on display.</li>
315
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Deep-clean before any staging.</strong> Especially: oven, grout, windows, garden edges. Staging on top of dirt doesn't read.</li>
316
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Open up the light.</strong> Curtains fully open, lamps on even in daytime, mirrors to bounce light. Most homes photograph noticeably better with every light on.</li>
317
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Fix the small things.</strong> Dripping taps, chipped paint, loose handles, squeaky doors. Buyers register every defect — and discount for each one.</li>
318
+ <li><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Define each room.</strong> A study-in-a-bedroom shows as a study. Return rooms to their named purpose for photos and viewings.</li>
319
+ </ol>
320
+ </div>
321
+ <div class="panel" style="padding:6mm">
322
+ <h4 style="margin-bottom:4mm">Common mistakes</h4>
323
+ <ul style="margin:0;padding-left:5mm;font-family:var(--body);font-size:10.5pt;line-height:1.55">
324
+ <li style="margin-bottom:3mm">Strong air fresheners — they signal you're hiding something.</li>
325
+ <li style="margin-bottom:3mm">Personal photos, religious items, children's artwork — the buyer can't project on top.</li>
326
+ <li style="margin-bottom:3mm">A cold house in winter — no one buys a cold home enthusiastically.</li>
327
+ <li style="margin-bottom:3mm">Overgrown garden or untidy front — the first ten seconds are kerb appeal.</li>
328
+ <li>Wardrobes left untouched — buyers do open them. Reduce by half.</li>
329
+ </ul>
330
+ <p class="muted" style="margin-top:6mm;font-size:9pt;font-style:italic"><!-- REPLACE: prepared_by --> can walk you through this room-by-room ahead of photo day.</p>
331
+ </div>
332
+ </div>
333
+
334
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>05</span></div>
266
335
  </section>
267
336
 
268
- <!-- PAGE 4 — COMPARABLES (FULL-WIDTH, STACKED) -->
337
+ <!-- PAGE 6 — COMPARABLES (FULL-WIDTH, STACKED) -->
269
338
  <section class="page">
270
339
  <header class="doc-head">
271
340
  <!-- REPLACE: wordmark_dark -->
272
341
  <div class="breadcrumb">Comparables · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
273
342
  </header>
274
343
  <div class="eyebrow">Evidence</div>
275
- <h2 style="margin-top:3mm;margin-bottom:5mm">The comparables behind the range.</h2>
344
+ <h2 style="margin-top:3mm;margin-bottom:5mm">Comparable transactions and live listings.</h2>
276
345
  <div class="panel banded">
277
346
  <h4>Nearest sold transactions · Land Registry</h4>
278
347
  <table class="cmp" style="margin-top:3mm">
279
- <tr><th>Date</th><th>Address</th><th>Type</th><th style="text-align:right">Price</th></tr>
348
+ <tr><th>Date</th><th>Address</th><th>Type</th><th>Beds</th><th style="text-align:right">Price</th></tr>
280
349
  <!-- REPLACE: sold_comps_rows -->
281
350
  </table>
282
351
  </div>
@@ -286,10 +355,10 @@
286
355
  <!-- REPLACE: asking_comps_tiles -->
287
356
  </div>
288
357
  </div>
289
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>04</span></div>
358
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>06</span></div>
290
359
  </section>
291
360
 
292
- <!-- PAGE 5 — AGENT LISTINGS + SOURCES -->
361
+ <!-- PAGE 7 — AGENT LISTINGS + SOURCES -->
293
362
  <section class="page">
294
363
  <header class="doc-head">
295
364
  <!-- REPLACE: wordmark_dark -->
@@ -302,10 +371,10 @@
302
371
  <div class="sources">
303
372
  <h4>Sources &amp; methodology</h4>
304
373
  <p><strong>Sources.</strong> PropertyData (asking, sold, demand, growth, crime, flood, council tax, property-type mix). HM Land Registry (sold transactions). Home Office (recorded crime). Environment Agency (flood risk). Valuation Office Agency (council-tax bands). Department for Levelling Up, Housing &amp; Communities — EPC register (subject floor area &amp; energy rating).</p>
305
- <p><strong>Method.</strong> Twelve PropertyData endpoints called on the postcode derived from the address, plus one EPC lookup on the subject address. Valuation range = subject floor area × the Land Registry 70-percent £/sqft band, with operator-supplied adjustments applied linearly. Live and recent listings shown on the previous page were picked by <!-- REPLACE: brand_name -->.</p>
374
+ <p><strong>Method.</strong> Twelve PropertyData endpoints called on the postcode derived from the address, plus the EPC certificate fields for the subject. This pack does <em>not</em> quote a numeric valuation — the human agent values the property in person, drawing on the Land Registry sold £/sqft band, the live asking £/sqft, and the comparables on this page. Live and recent listings shown on the next page were picked by <!-- REPLACE: brand_name -->.</p>
306
375
  <p><strong>Accuracy.</strong> Property data can change rapidly. Figures are estimates — obtain independent professional advice for specific decisions. This pack is not financial or investment advice.</p>
307
376
  </div>
308
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Generated <!-- REPLACE: generated --> · <!-- REPLACE: postcode --></span><span>05</span></div>
377
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Generated <!-- REPLACE: generated --> · <!-- REPLACE: postcode --></span><span>07</span></div>
309
378
  </section>
310
379
 
311
380
  </body>
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## 1. Purpose
11
11
 
12
- Compress what is normally a half-day of admin — terms of business signed, EPC ordered, photographer booked, floorplan commissioned, listing copy written, particulars produced, portal launches scheduled — into a guided sequence the agent reviews and approves in fifteen minutes.
12
+ Compress what is normally a half-day of admin — terms of business signed, photographer booked, floorplan commissioned, listing copy written, particulars produced, portal launches scheduled — into a guided sequence the agent reviews and approves in fifteen minutes.
13
13
 
14
14
  This workflow is the second-highest-value moment in the agent's week (after winning the instruction itself). Done well, the property is on the portals within 72 hours of the appointment rather than 7–10 days. That speed compounds: faster on-market means more viewings in the first weekend, which is when offers happen.
15
15
 
@@ -31,8 +31,6 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
31
31
 
32
32
  **Terms of business.** Drafted from agency template, populated with property, vendor, fee structure, sole/multi agency, marketing period, withdrawal fee. Staged in DocuSign with vendor as recipient. *Gate: approve before send.*
33
33
 
34
- **EPC.** If the property does not have a current EPC (checked via EPC register), an order is staged with the agent's preferred supplier (from profile). If a current EPC exists, the workflow records the expiry date and moves on. *Gate: approve order before send if no current EPC.*
35
-
36
34
  **Photography.** A booking request is drafted to the agent's preferred photographer (from profile), with the property address, vendor contact, and the agent's standard brief. *Gate: approve before send.*
37
35
 
38
36
  **Floorplan.** As photography. Combined into a single booking request if the same supplier handles both. *Gate: approve before send.*
@@ -50,7 +48,6 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
50
48
  | Skill | Purpose |
51
49
  |---|---|
52
50
  | `terms-of-business-drafter` | Populates the agency's template with deal specifics |
53
- | `epc-checker` | Looks up the EPC register, computes order need |
54
51
  | `supplier-booker` | Drafts and stages booking requests to photographer, EPC supplier, floorplan supplier |
55
52
  | `listing-copy-writer` | Generates portal-optimised property descriptions |
56
53
  | `particulars-builder` | Composes the PDF brochure |
@@ -60,7 +57,7 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
60
57
 
61
58
  ## 5. Connectors read and written
62
59
 
63
- Read: CRM, EPC register, calendar, profile.
60
+ Read: CRM, calendar, profile.
64
61
  Write: DocuSign (terms), email (vendor welcome, supplier bookings), portal upload APIs (Rightmove, Zoopla, OnTheMarket — staged only).
65
62
 
66
63
  ## 6. Approval gates
@@ -68,13 +65,12 @@ Write: DocuSign (terms), email (vendor welcome, supplier bookings), portal uploa
68
65
  This workflow has the most write actions of any in the set. Each one is individually gated:
69
66
 
70
67
  1. Terms of business send
71
- 2. EPC order (if applicable)
72
- 3. Photographer booking
73
- 4. Floorplan booking
74
- 5. Listing copy use (final version before portal upload)
75
- 6. Particulars distribution
76
- 7. Portal launch schedule confirmation
77
- 8. Vendor welcome email send
68
+ 2. Photographer booking
69
+ 3. Floorplan booking
70
+ 4. Listing copy use (final version before portal upload)
71
+ 5. Particulars distribution
72
+ 6. Portal launch schedule confirmation
73
+ 7. Vendor welcome email send
78
74
 
79
75
  The workflow presents these in sequence and respects the operator's pace. The agent can approve them all in one go ("ship everything") or one at a time, or pause the workflow and return later. State is preserved.
80
76