@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.
- package/package.json +1 -1
- package/payload/platform/plugins/docs/references/admin-session.md +6 -3
- package/payload/platform/plugins/docs/references/internals.md +7 -1
- package/payload/platform/plugins/docs/references/platform.md +4 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts +22 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js +44 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +68 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js +48 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +53 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js +40 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js +39 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +88 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +58 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +58 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +70 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +48 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +47 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +65 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +43 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +65 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +49 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +74 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js +62 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts +2 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js +76 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/index.js +79 -2
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +20 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +81 -20
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +24 -4
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +39 -9
- package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js +19 -4
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/types.d.ts +5 -0
- package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
- package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
- package/payload/premium-plugins/real-agent/agents/valuer.md +1 -2
- package/payload/premium-plugins/real-agent/plugins/epc/.claude-plugin/plugin.json +3 -3
- package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +1 -3
- package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +11 -12
- package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +55 -33
- package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +69 -70
- package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +12 -7
- package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +88 -19
- package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +8 -12
- package/payload/server/{chunk-2IKQERHN.js → chunk-S6PQA6Q4.js} +43 -34
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server-init.cjs +40 -0
- package/payload/server/server.js +1 -1
- package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/brochures/PLUGIN.md +0 -38
- package/payload/platform/plugins/brochures/commands/make-brochure.md +0 -11
- package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
- package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +0 -192
- package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +0 -354
- package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
- package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +0 -142
- package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +0 -270
- package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
- package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +0 -166
- package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
- package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +0 -1288
- package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
- package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +0 -47
- package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
- package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
- package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +0 -2370
- package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +0 -372
- package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
- package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +0 -267
- package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +0 -266
- package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +0 -141
- package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/buyers/PLUGIN.md +0 -34
- package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
- package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
- package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
- package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
- package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
- package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
- package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
- package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
- package/payload/platform/plugins/epc/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/epc/PLUGIN.md +0 -90
- package/payload/platform/plugins/epc/mcp/dist/index.d.ts +0 -2
- package/payload/platform/plugins/epc/mcp/dist/index.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/index.js +0 -117
- package/payload/platform/plugins/epc/mcp/dist/index.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts +0 -3
- package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js +0 -72
- package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts +0 -60
- package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js +0 -181
- package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts +0 -3
- package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js +0 -49
- package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts +0 -15
- package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js +0 -130
- package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts +0 -5
- package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js +0 -38
- package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts +0 -4
- package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js +0 -9
- package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts +0 -4
- package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js +0 -10
- package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts +0 -5
- package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js +0 -36
- package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts +0 -10
- package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts.map +0 -1
- package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js +0 -30
- package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js.map +0 -1
- package/payload/platform/plugins/epc/mcp/package-lock.json +0 -2566
- package/payload/platform/plugins/epc/mcp/package.json +0 -21
- package/payload/platform/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
- package/payload/platform/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
- package/payload/platform/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
- package/payload/platform/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
- package/payload/platform/plugins/epc/mcp/src/index.ts +0 -156
- package/payload/platform/plugins/epc/mcp/src/lib/crypto.ts +0 -79
- package/payload/platform/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
- package/payload/platform/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
- package/payload/platform/plugins/epc/mcp/src/lib/key-store.ts +0 -172
- package/payload/platform/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
- package/payload/platform/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
- package/payload/platform/plugins/epc/mcp/src/tools/key-list.ts +0 -10
- package/payload/platform/plugins/epc/mcp/src/tools/key-register.ts +0 -44
- package/payload/platform/plugins/epc/mcp/src/tools/lookup.ts +0 -43
- package/payload/platform/plugins/epc/mcp/tsconfig.json +0 -20
- package/payload/platform/plugins/epc/mcp/vitest.config.ts +0 -8
- package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/estate-business/PLUGIN.md +0 -64
- package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
- package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
- package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
- package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
- package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
- package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
- package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
- package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
- package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
- package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
- package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
- package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
- package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
- package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
- package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
- package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
- package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
- package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
- package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
- package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
- package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
- package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
- package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
- package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/estate-coaching/PLUGIN.md +0 -54
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
- package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/estate-sales/PLUGIN.md +0 -52
- package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
- package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
- package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
- package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
- package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
- package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
- package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
- package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
- package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/estate-teaching/PLUGIN.md +0 -30
- package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
- package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
- package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
- package/payload/platform/plugins/leads/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/leads/PLUGIN.md +0 -61
- package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
- package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +0 -38
- package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
- package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
- package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +0 -72
- package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +0 -33
- package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
- package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +0 -53
- package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
- package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
- package/payload/platform/plugins/listings/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/listings/PLUGIN.md +0 -102
- package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
- package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +0 -38
- package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +0 -28
- package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
- package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
- package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
- package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
- package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
- package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
- package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
- package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
- package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
- package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
- package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
- package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
- package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
- package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +0 -78
- package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
- package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
- package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
- package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +0 -337
- package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
- package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
- package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
- package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
- package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
- package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
- package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
- package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
- package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
- package/payload/platform/plugins/loop/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/loop/PLUGIN.md +0 -260
- package/payload/platform/plugins/loop/mcp/dist/index.d.ts +0 -2
- package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/index.js +0 -320
- package/payload/platform/plugins/loop/mcp/dist/index.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +0 -88
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
- package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
- package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
- package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js +0 -165
- package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
- package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
- package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +0 -35
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +0 -14
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +0 -43
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +0 -87
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
- package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
- package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +0 -11
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +0 -41
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
- package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +0 -49
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +0 -32
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
- package/payload/platform/plugins/loop/mcp/package-lock.json +0 -2549
- package/payload/platform/plugins/loop/mcp/package.json +0 -21
- package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
- package/payload/platform/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
- package/payload/platform/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
- package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
- package/payload/platform/plugins/loop/mcp/src/index.ts +0 -498
- package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +0 -105
- package/payload/platform/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
- package/payload/platform/plugins/loop/mcp/src/lib/key-store.ts +0 -221
- package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
- package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
- package/payload/platform/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
- package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
- package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +0 -86
- package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
- package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +0 -19
- package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +0 -70
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
- package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
- package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +0 -180
- package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
- package/payload/platform/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
- package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
- package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +0 -92
- package/payload/platform/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
- package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +0 -129
- package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
- package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +0 -95
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
- package/payload/platform/plugins/loop/mcp/tsconfig.json +0 -20
- package/payload/platform/plugins/loop/mcp/vitest.config.ts +0 -9
- package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
- package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
- package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
- package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
- package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +0 -54
- package/payload/platform/plugins/preval/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/preval/PLUGIN.md +0 -55
- package/payload/platform/plugins/preval/hooks/preval-prompt-required.sh +0 -140
- package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +0 -176
- package/payload/platform/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +0 -373
- package/payload/platform/plugins/preval/skills/property-preval/references/render.py +0 -815
- package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -199
- package/payload/platform/plugins/preval/skills/property-preval/references/template.html +0 -312
- package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/property-data/PLUGIN.md +0 -180
- package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +0 -2
- package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/index.js +0 -236
- package/payload/platform/plugins/property-data/mcp/dist/index.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
- package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
- package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
- package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
- package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
- package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
- package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
- package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
- package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
- package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
- package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
- package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
- package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
- package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
- package/payload/platform/plugins/property-data/mcp/package-lock.json +0 -2566
- package/payload/platform/plugins/property-data/mcp/package.json +0 -21
- package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
- package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
- package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
- package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
- package/payload/platform/plugins/property-data/mcp/src/index.ts +0 -409
- package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
- package/payload/platform/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
- package/payload/platform/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
- package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
- package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
- package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
- package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
- package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
- package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
- package/payload/platform/plugins/property-data/mcp/tsconfig.json +0 -20
- package/payload/platform/plugins/property-data/mcp/vitest.config.ts +0 -8
- package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +0 -77
- package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/vendors/PLUGIN.md +0 -33
- package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
- package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
- package/payload/premium-plugins/real-agent/plugins/epc/PLUGIN.md +0 -90
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/package-lock.json +0 -2566
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/package.json +0 -21
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/index.ts +0 -156
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/crypto.ts +0 -79
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/key-store.ts +0 -172
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-list.ts +0 -10
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-register.ts +0 -44
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/lookup.ts +0 -43
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/tsconfig.json +0 -20
- package/payload/premium-plugins/real-agent/plugins/epc/mcp/vitest.config.ts +0 -8
- 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
|
+
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
|
-
(
|
|
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
|
-
|
|
28
|
-
|
|
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="
|
|
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
|
-
# ----------------
|
|
247
|
+
# ---------------- subject facts ----------------
|
|
218
248
|
|
|
219
|
-
def
|
|
220
|
-
"""
|
|
249
|
+
def _notable_features_block(subject: dict) -> str:
|
|
250
|
+
"""Label-only bullet list from subject.adjustments[].label. No numbers.
|
|
221
251
|
|
|
222
|
-
The
|
|
223
|
-
|
|
224
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
|
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
|
-
"
|
|
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,
|
|
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),
|
|
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
|
|
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
|
-
"
|
|
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:
|
|
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">
|
|
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>
|
|
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 —
|
|
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">
|
|
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">
|
|
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:
|
|
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="
|
|
261
|
-
|
|
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
|
|
279
|
+
<div style="height:8mm"></div>
|
|
280
|
+
<div class="eyebrow">Output area & 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
|
|
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">
|
|
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>
|
|
358
|
+
<div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>06</span></div>
|
|
290
359
|
</section>
|
|
291
360
|
|
|
292
|
-
<!-- PAGE
|
|
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 & 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 & Communities — EPC register (subject floor area & energy rating).</p>
|
|
305
|
-
<p><strong>Method.</strong> Twelve PropertyData endpoints called on the postcode derived from the address, plus
|
|
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>
|
|
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,
|
|
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,
|
|
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.
|
|
72
|
-
3.
|
|
73
|
-
4.
|
|
74
|
-
5.
|
|
75
|
-
6.
|
|
76
|
-
7.
|
|
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
|
|