@rubytech/create-realagent-code 0.1.23 → 0.1.26
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/dist/index.js +63 -16
- package/package.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +50 -23
- package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +47 -0
- package/payload/platform/plugins/admin/skills/commitment-followthrough/SKILL.md +60 -0
- package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +67 -0
- package/payload/platform/plugins/admin/skills/onboarding/SKILL.md +111 -126
- package/payload/platform/plugins/admin/skills/session-management/SKILL.md +62 -0
- package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +37 -0
- package/payload/platform/plugins/cloudflare/references/manual-setup.md +81 -1
- package/payload/platform/plugins/cloudflare/scripts/__tests__/tunnel-ingress.test.ts +241 -0
- package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +267 -28
- package/payload/platform/plugins/cloudflare/scripts/tunnel-ingress.ts +291 -0
- package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +42 -0
- package/payload/platform/plugins/contacts/PLUGIN.md +18 -9
- package/payload/platform/plugins/deep-research/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/deep-research/PLUGIN.md +7 -1
- package/payload/platform/plugins/deep-research/recipes/README.md +36 -0
- package/payload/platform/plugins/deep-research/skills/academic-verify/SKILL.md +75 -0
- package/payload/platform/plugins/deep-research/skills/book-mirror/SKILL.md +68 -0
- package/payload/platform/plugins/deep-research/skills/data-research/SKILL.md +108 -0
- package/payload/platform/plugins/deep-research/skills/strategic-reading/SKILL.md +69 -0
- package/payload/platform/plugins/docs/references/deployment.md +3 -2
- package/payload/platform/plugins/docs/references/platform.md +2 -0
- package/payload/platform/plugins/docs/references/troubleshooting.md +12 -0
- package/payload/platform/plugins/email/PLUGIN.md +18 -9
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +17 -0
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +185 -0
- package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +34 -111
- package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +7 -2
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +7 -2
- package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
- package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +2 -0
- package/payload/platform/plugins/memory/PLUGIN.md +64 -29
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +3 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +105 -4
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +16 -3
- package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
- package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +67 -0
- package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +80 -0
- package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +2 -0
- package/payload/platform/plugins/outlook/PLUGIN.md +14 -7
- package/payload/platform/plugins/replicate/PLUGIN.md +6 -3
- package/payload/platform/plugins/scheduling/PLUGIN.md +19 -8
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +7 -3
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +7 -3
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +75 -0
- package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +61 -0
- package/payload/platform/plugins/tasks/PLUGIN.md +28 -14
- package/payload/platform/plugins/waitlist/PLUGIN.md +12 -6
- package/payload/platform/plugins/whatsapp/PLUGIN.md +25 -13
- package/payload/platform/plugins/workflows/PLUGIN.md +16 -8
- package/payload/platform/scripts/conversation-id-allowlist.txt +0 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +27 -2
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +27 -0
- 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 +36 -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 +41 -3
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +25 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +54 -3
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +25 -0
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js +149 -0
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -0
- package/payload/platform/templates/agents/admin/IDENTITY.md +38 -284
- package/payload/platform/templates/agents/admin/SOUL.md +4 -4
- package/payload/platform/templates/specialists/agents/content-producer.md +24 -69
- package/payload/platform/templates/specialists/agents/database-operator.md +49 -155
- package/payload/platform/templates/specialists/agents/personal-assistant.md +27 -177
- package/payload/platform/templates/specialists/agents/project-manager.md +29 -96
- package/payload/platform/templates/specialists/agents/research-assistant.md +36 -78
- package/payload/premium-plugins/real-agency/agents/compliance.md +14 -0
- package/payload/premium-plugins/real-agency/agents/negotiator.md +22 -0
- package/payload/premium-plugins/real-agency/agents/valuer.md +16 -0
- package/payload/premium-plugins/real-agency/plugins/estate-business/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/real-agency/plugins/estate-business/PLUGIN.md +44 -13
- package/payload/premium-plugins/real-agency/plugins/estate-business/skills/commission-calculator/SKILL.md +40 -0
- package/payload/premium-plugins/real-agency/plugins/estate-business/skills/month-end-close/SKILL.md +69 -0
- package/payload/premium-plugins/real-agency/plugins/estate-business/skills/payment-batch-stager/SKILL.md +42 -0
- package/payload/premium-plugins/real-agency/plugins/estate-business/skills/period-reconciler/SKILL.md +42 -0
- package/payload/premium-plugins/real-agency/plugins/estate-sales/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/real-agency/plugins/estate-sales/PLUGIN.md +32 -13
- package/payload/premium-plugins/real-agency/plugins/estate-sales/skills/chase-progression/SKILL.md +107 -0
- package/payload/premium-plugins/real-agency/plugins/estate-sales/skills/risk-scorer/SKILL.md +42 -0
- package/payload/premium-plugins/real-agency/plugins/leads/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/real-agency/plugins/leads/PLUGIN.md +40 -10
- package/payload/premium-plugins/real-agency/plugins/leads/skills/chain-progression-tracker/SKILL.md +51 -0
- package/payload/premium-plugins/real-agency/plugins/leads/skills/diary-builder/SKILL.md +38 -0
- package/payload/premium-plugins/real-agency/plugins/leads/skills/enquiry-triage/SKILL.md +36 -0
- package/payload/premium-plugins/real-agency/plugins/leads/skills/morning-round/SKILL.md +72 -0
- package/payload/premium-plugins/real-agency/plugins/listings/.claude-plugin/plugin.json +1 -1
- package/payload/premium-plugins/real-agency/plugins/listings/PLUGIN.md +82 -12
- package/payload/premium-plugins/real-agency/plugins/listings/skills/comparable-finder/SKILL.md +52 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/epc-checker/SKILL.md +38 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/listing-copy-writer/SKILL.md +55 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/local-market-stats/SKILL.md +33 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/new-instruction/SKILL.md +78 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/particulars-builder/SKILL.md +48 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/portal-launch-scheduler/SKILL.md +49 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/pricing-scenario-builder/SKILL.md +35 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/supplier-booker/SKILL.md +39 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/talk-track-composer/SKILL.md +36 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/terms-of-business-drafter/SKILL.md +54 -0
- package/payload/premium-plugins/real-agency/plugins/listings/skills/valuation-prep/SKILL.md +69 -0
- package/payload/premium-plugins/real-agency/plugins/loop/PLUGIN.md +35 -0
- package/payload/premium-plugins/real-agency/plugins/loop/skills/compliance-flag-checker/SKILL.md +53 -0
- package/payload/premium-plugins/real-agency/plugins/loop/skills/priority-ranker/SKILL.md +40 -0
- package/payload/premium-plugins/real-agency/plugins/loop/skills/tone-matched-drafter/SKILL.md +53 -0
- package/payload/premium-plugins/real-agency/plugins/loop/skills/variance-narrator/SKILL.md +50 -0
- package/payload/premium-plugins/real-agency/plugins/loop/skills/vendor-research/SKILL.md +54 -0
- package/payload/server/{chunk-2ZNKHCQB.js → chunk-2MRZBQMH.js} +1 -1
- package/payload/server/{chunk-GPUCA2RQ.js → chunk-NL7QLVAD.js} +0 -192
- package/payload/server/{chunk-IDKWGLM5.js → chunk-YPZFYTYP.js} +1 -247
- package/payload/server/{cloudflare-task-tracker-LYI5BTYI.js → cloudflare-task-tracker-QVOGHKWV.js} +2 -2
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/package.json +0 -2
- package/payload/server/public/assets/{Checkbox-D1OQD43b.js → Checkbox-YIF0payo.js} +1 -1
- package/payload/server/public/assets/{admin-czNBxWor.js → admin-DW8IJcLc.js} +1 -1
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-BcwgT80u.js → architectureDiagram-Q4EWVU46-Bz8mlxZZ.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BMSyZUQA.js → blockDiagram-DXYQGD6D-DwV8Z8-i.js} +1 -1
- package/payload/server/public/assets/{brand-2cku8WFs.css → brand-DqiRNMlu.css} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-DPRGY1jJ.js → c4Diagram-AHTNJAMY-DiUTejMp.js} +1 -1
- package/payload/server/public/assets/channel-PtVtoBEL.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-B7oQ3g1c.js → chunk-336JU56O-4mHZpBXe.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-C1P0yFXw.js → chunk-426QAEUC-Cbv0vrN9.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-LI7kOJd0.js → chunk-4TB4RGXK-BvLhId_2.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-CXQRGTQE.js → chunk-5FUZZQ4R-bBafOTkw.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-NSyzpXRy.js → chunk-5PVQY5BW-B0NqBKVy.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-voNwxbDs.js → chunk-EDXVE4YY-CFd4SqI6.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-CMEMPzYY.js → chunk-ENJZ2VHE-ajf2sb6c.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-hEbwu-pe.js → chunk-ICPOFSXX-pWg6bug7.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-DxskDrLs.js → chunk-OYMX7WX6-OjEd-17c.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-D7TKgUo0.js → chunk-U2HBQHQK-DbEFSPoh.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-BvPUQEPm.js → chunk-X2U36JSP-COdNwrBb.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-BY-RWQUW.js → chunk-YZCP3GAM-CHMWuY9B.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-DZvOYDY6.js → chunk-ZZ45TVLE-B-uDLQOB.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-RVH_SEhY.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cm3rAb93.js +1 -0
- package/payload/server/public/assets/clone-BjY0Wzht.js +1 -0
- package/payload/server/public/assets/{dagre-KV5264BT-Cnj0mUZl.js → dagre-KV5264BT-CMEzmhIL.js} +1 -1
- package/payload/server/public/assets/{dagre-Bt-fpckL.js → dagre-bhIG_KnW.js} +1 -1
- package/payload/server/public/assets/data-K_kS__sL.js +1 -0
- package/payload/server/public/assets/{device-url-actions-Bjz3Xzbm.js → device-url-actions-AcOyLSeF.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-DjLzvOlx.js → diagram-5BDNPKRD-6RIoQhIL.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DTfuRd-T.js → diagram-G4DWMVQ6-BSp36TVv.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-BaL2mCnx.js → diagram-MMDJMWI5-D54fo52D.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-C5InWY5R.js → diagram-TYMM5635-CWL8z-Pq.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-DO7BXTpn.js → erDiagram-SMLLAGMA-AnnHBo3z.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-DDdAKfLf.js → flowDiagram-DWJPFMVM-laWmBl5o.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-arJD8Utm.js → ganttDiagram-T4ZO3ILL-B94ko8ie.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C55GH-OS.js → gitGraphDiagram-UUTBAWPF-DxzL1fxZ.js} +1 -1
- package/payload/server/public/assets/graph-DeEigyO_.js +1 -0
- package/payload/server/public/assets/graph-labels-C7I5QvNv.js +1 -0
- package/payload/server/public/assets/{graphlib-DL9PM7Ex.js → graphlib-CY-zIElM.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-BMSGqUbG.js → infoDiagram-42DDH7IO-BMTajIIr.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Dw6BZ6BG.js → ishikawaDiagram-UXIWVN3A-B_QauE5O.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DrywUGXw.js → journeyDiagram-VCZTEJTY-DmlqSIih.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DuwtVBBc.js → kanban-definition-6JOO6SKY-ZGDQT7xB.js} +1 -1
- package/payload/server/public/assets/{line-JAksyKHj.js → line-D13opgep.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-BMq-ApBW.js → mermaid-parser.core-C650Sual.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-tH4oX0Kh.js → mermaid.core-BqnQoXTp.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1OiiJga.js → mindmap-definition-QFDTVHPH-BS_8y-tY.js} +1 -1
- package/payload/server/public/assets/{page-BZpoS7iR.js → page-B_rpjIRr.js} +1 -1
- package/payload/server/public/assets/{page-CkvBvezS.js → page-qSH972X0.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-Ckwm69PW.js → pieDiagram-DEJITSTG-B5OmNvBO.js} +1 -1
- package/payload/server/public/assets/{public-C-dTMgXu.js → public-DDsYgotk.js} +3 -3
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-COw3yZ1j.js → quadrantDiagram-34T5L4WZ-DTYITdNo.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DqGzM4K-.js → requirementDiagram-MS252O5E-CRZWxH06.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-D-l1c_Pl.js → sankeyDiagram-XADWPNL6-DazRENhe.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BeIi0DtJ.js → sequenceDiagram-FGHM5R23-BcHTxmPy.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-C-jgegLk.js → stateDiagram-FHFEXIEX-DYU7nbqg.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BgljVtlp.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BGFKkYmi.js → timeline-definition-GMOUNBTQ-BKGmqkST.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-5NuIhJLS.js → vennDiagram-DHZGUBPP-BXvLPmX7.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Be9ytVut.js → wardleyDiagram-NUSXRM2D-BCclUa3Z.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DCyHg41R.js → xychartDiagram-5P7HB3ND-C-Xp-Eoc.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +8 -8
- package/payload/server/public/public.html +5 -5
- package/payload/server/server.js +1152 -2564
- package/payload/platform/scripts/check-sdk-oauth.mjs +0 -185
- package/payload/server/public/assets/channel-fxEghWew.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BsWzGW0N.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BGVa3h90.js +0 -1
- package/payload/server/public/assets/clone-Khvocke2.js +0 -1
- package/payload/server/public/assets/data-DBd-Buhp.js +0 -1
- package/payload/server/public/assets/graph-DUtVdnZ6.js +0 -1
- package/payload/server/public/assets/graph-labels-Dxfue-fP.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BaMs8Znv.js +0 -1
- /package/payload/server/public/assets/{brand-CSQuxS9w.js → brand-Bm671owU.js} +0 -0
package/payload/premium-plugins/real-agency/plugins/estate-business/skills/month-end-close/SKILL.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: month-end-close
|
|
3
|
+
description: "Run the monthly close, reconcile completions against fees received, compute the commission run, surface variances, and produce the pack for the accountant. Triggers when the operator says 'close out <month>', 'close <month>', 'month end', 'do my commission', 'commission run', 'reconcile <month>', 'ready for the accountant', 'what did I do last month'. Also fires automatically on the first working day of the month."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Month-end close
|
|
7
|
+
|
|
8
|
+
The master workflow owned by the compliance specialist. Compresses a half-day to a full day of month-end admin into a 20-minute review. Produces a clean pack ready for the accountant.
|
|
9
|
+
|
|
10
|
+
This is the workflow that earns back the subscription. A solo agent who would otherwise spend half a Saturday on this should feel that Real Agent paid for itself in the time saved on month-end alone.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- The period to close (typically the previous calendar month).
|
|
15
|
+
- The customisation profile.
|
|
16
|
+
|
|
17
|
+
The workflow reads the rest from connectors.
|
|
18
|
+
|
|
19
|
+
## Architecture principles encoded here
|
|
20
|
+
|
|
21
|
+
- Read before write. The workflow opens by reading completions, fees received, the commission splits table, and the prior close pack. It writes nothing until the operator approves each individual stage.
|
|
22
|
+
- Stage, don't send. Journal entries, payment batches, accountant emails are all staged. Approval is per item.
|
|
23
|
+
- One screen of output. The pack is five sections, each summarised on one screen. Drill-down is available on request.
|
|
24
|
+
- Cite the source. Every line in the reconciliation cites the completion record and the bank transaction it matched against. Every commission line cites the splits table and the deal.
|
|
25
|
+
- Teach the profile. Categorisation conventions, variance tolerance, narrative tone all feed back through `profile-writer`.
|
|
26
|
+
- Reversible. No transfers are initiated. Journal postings require explicit approval. The accountant pack is drafted and queued; nothing sends without the operator.
|
|
27
|
+
|
|
28
|
+
## Output shape
|
|
29
|
+
|
|
30
|
+
Five sections, in this order.
|
|
31
|
+
|
|
32
|
+
1. **Completions.** Every property that exchanged or completed in the period: address, vendor, buyer, fee value, fee structure (sole, multi, withdrawal, sliding), completion date, expected receipt date. Anything that exchanged but is still awaiting completion is highlighted.
|
|
33
|
+
2. **Reconciliation.** Fees expected versus fees received, matched on completion date and amount. Three flag categories: matched, pending (expected but not yet received with age), variance (received differs from expected: fee adjustment, referral deduction, fee dispute). Variances get a one-line cause and a draft email to the accountant or the solicitor if appropriate. Built by `period-reconciler`.
|
|
34
|
+
3. **Commission run.** For office tiers with multiple agents: each agent's earned commission for the period, referral fees passed through, franchise levies deducted, pre-agreed adjustments. Built by `commission-calculator`. Presented as a payable schedule with totals.
|
|
35
|
+
4. **Pipeline carry-forward.** Sale-agreed but not yet exchanged, with expected exchange or completion month, fee value, current fall-through risk pulled from `chase-progression`. One-line narrative of next month's expectation.
|
|
36
|
+
5. **Variance narrative.** Two paragraphs comparing the period to the previous month and to the same period last year, in plain language. Built by `variance-narrator`. Suitable to paste into a board update, a tax-return cover note, or a conversation with a partner.
|
|
37
|
+
|
|
38
|
+
## Approval gates
|
|
39
|
+
|
|
40
|
+
- **Variance writeoffs.** Any fee variance the workflow proposes to write off (FX, small reconciliation differences) requires per-item approval.
|
|
41
|
+
- **Commission payment batch.** Staged by `payment-batch-stager`. No transfer is initiated; the operator approves the batch for export to their bank, or makes payments manually using the schedule.
|
|
42
|
+
- **Journal entries.** Any postings to the accounting system require approval. The default behaviour is to propose postings, show what they would do, and let the operator approve before they hit the books.
|
|
43
|
+
- **Accountant pack send.** The drafted email to the accountant with the pack attached requires explicit approval before send.
|
|
44
|
+
|
|
45
|
+
## Continuous learning hooks
|
|
46
|
+
|
|
47
|
+
- Categorisation conventions. The accountant prefers a specific chart-of-accounts mapping. Corrected once, learned for every subsequent close.
|
|
48
|
+
- Variance tolerance. Default writeoff threshold tightens or loosens based on overrides.
|
|
49
|
+
- Narrative tone. Voice for the variance paragraphs learned from edit-before-approve diffs.
|
|
50
|
+
- What to flag. "I always want to know about completions over GBP 5,000 fee value" leads the pack with those. "Don't bother flagging multi-agency fee splits separately" suppresses that detail.
|
|
51
|
+
- Pipeline narrative confidence. Over time the workflow learns how accurate its "next month should look like X" predictions are and adjusts the confidence language.
|
|
52
|
+
|
|
53
|
+
All writes go through `profile-writer`.
|
|
54
|
+
|
|
55
|
+
## Connectors
|
|
56
|
+
|
|
57
|
+
Read: accounting (Xero, FreeAgent, QuickBooks, Sage), bank feed via the accounting connector, CRM, prior month's close pack.
|
|
58
|
+
Write: accounting (journal entries on approval), payment batch staging for the bank or for a payroll-style export, Drive (close pack storage), email (accountant pack).
|
|
59
|
+
|
|
60
|
+
## Profile keys
|
|
61
|
+
|
|
62
|
+
- `realagent.accounting.platform` ("xero" | "freeagent" | "quickbooks" | "sage")
|
|
63
|
+
- `realagent.accounting.chart_of_accounts_map` (learned)
|
|
64
|
+
- `realagent.close.writeoff_threshold_gbp` (default 5)
|
|
65
|
+
- `realagent.close.flag_threshold_fee_gbp` (default 5000)
|
|
66
|
+
- `realagent.close.narrative_voice_samples` (learned)
|
|
67
|
+
- `realagent.close.pack_recipients` (accountant email addresses)
|
|
68
|
+
- `realagent.commission.splits_table_path`
|
|
69
|
+
- `realagent.commission.franchise_levy_pct`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: payment-batch-stager
|
|
3
|
+
description: "Build the commission payment batch ready for the operator's approval. Stages an export for the agent's bank or a payroll-style spreadsheet. Never initiates a transfer. Built for use inside month-end-close."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Payment batch stager
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `month-end-close`. Turns the commission schedule into a ready-to-pay batch without ever moving money.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
|
|
12
|
+
Reads the commission schedule produced by `commission-calculator`. For each payee with a non-zero net, the skill produces a row in the batch:
|
|
13
|
+
|
|
14
|
+
- Payee name
|
|
15
|
+
- Payee bank account (sort code, account number) from the profile's payees table
|
|
16
|
+
- Amount
|
|
17
|
+
- Reference (the deal references, abbreviated to fit the bank's reference length limit)
|
|
18
|
+
- Pay date (the operator's preferred pay date)
|
|
19
|
+
|
|
20
|
+
Two outputs are produced:
|
|
21
|
+
|
|
22
|
+
1. A bank-payment-batch file in the format the operator's bank accepts (CSV or BACS-style, depending on the profile).
|
|
23
|
+
2. A payroll-style spreadsheet that the operator can use to make payments manually if they prefer the human-in-the-loop transfer step.
|
|
24
|
+
|
|
25
|
+
The operator approves the batch. Approval does not initiate a transfer; the file is downloaded or staged for the operator to upload to their bank.
|
|
26
|
+
|
|
27
|
+
## What it does not do
|
|
28
|
+
|
|
29
|
+
- It does not initiate a transfer. Ever.
|
|
30
|
+
- It does not store bank credentials.
|
|
31
|
+
- It does not bypass the operator on any change to a payee's bank details. Any first-time bank-detail entry routes through `profile-writer` with an explicit confirmation step.
|
|
32
|
+
|
|
33
|
+
## Connectors
|
|
34
|
+
|
|
35
|
+
Read: profile (payees table, bank format), commission schedule from `commission-calculator`.
|
|
36
|
+
Write: file artefact in the agent's Drive.
|
|
37
|
+
|
|
38
|
+
## Profile keys
|
|
39
|
+
|
|
40
|
+
- `realagent.payees` (per-agent bank details)
|
|
41
|
+
- `realagent.bank.batch_format` ("csv" | "bacs" | "open_banking_pain001" | "manual")
|
|
42
|
+
- `realagent.bank.preferred_pay_date_offset_days` (days after period end, default 7)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: period-reconciler
|
|
3
|
+
description: "Match completions to fees received for a closing period and surface variances. Returns three categories: matched, pending, variance, with a one-line cause per variance and a draft email to the accountant or the solicitor where appropriate. Built for use inside month-end-close."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Period reconciler
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `month-end-close`. Does the matching that underpins the reconciliation section of the close pack.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
|
|
12
|
+
For the period being closed, the skill reads:
|
|
13
|
+
|
|
14
|
+
- Every property with completion date in the period from the CRM
|
|
15
|
+
- Every fee receipt in the accounting platform's bank feed for the period and the following 30 days
|
|
16
|
+
|
|
17
|
+
It then matches receipts to completions on amount and date (with a small tolerance window). Three outcomes per completion:
|
|
18
|
+
|
|
19
|
+
- **Matched.** Receipt amount matches expected fee within the tolerance. No action.
|
|
20
|
+
- **Pending.** Completion logged but no receipt yet. The completion date age is shown so the operator knows whether to chase.
|
|
21
|
+
- **Variance.** Receipt amount differs from expected fee by more than the tolerance. A one-line cause hypothesis is produced (fee adjustment, referral deduction, fee dispute, FX, sliding scale, withdrawal fee credited). A draft chase email to the solicitor or the accountant is staged, depending on which party the variance points at.
|
|
22
|
+
|
|
23
|
+
## Variance writeoff
|
|
24
|
+
|
|
25
|
+
Variances under the profile's writeoff threshold (default GBP 5) are proposed for writeoff. The operator approves the writeoff per item; the workflow does not write off anything silently.
|
|
26
|
+
|
|
27
|
+
## What it does not do
|
|
28
|
+
|
|
29
|
+
- It does not post journal entries. Postings are staged by `month-end-close` for the operator's approval.
|
|
30
|
+
- It does not initiate a transfer.
|
|
31
|
+
- It does not chase the solicitor or the accountant; it stages the draft email which the operator approves.
|
|
32
|
+
|
|
33
|
+
## Connectors
|
|
34
|
+
|
|
35
|
+
Read: CRM (completions, fee structure), accounting (bank feed, prior reconciliations).
|
|
36
|
+
Write (staged only): email drafts to solicitor or accountant.
|
|
37
|
+
|
|
38
|
+
## Profile keys
|
|
39
|
+
|
|
40
|
+
- `realagent.close.writeoff_threshold_gbp` (default 5)
|
|
41
|
+
- `realagent.close.match_tolerance_gbp` (default 1)
|
|
42
|
+
- `realagent.close.match_tolerance_days` (default 30)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "real-agency-sales",
|
|
3
|
-
"description": "
|
|
3
|
+
"description": "Sale-agreed to completion progression for UK residential sales agents. The headline workflow is chase-progression: daily ranked stalled-deal surfacing with tone-matched draft messages and per-message approval gates. Includes risk-scorer (fall-through risk scoring, used by chase-progression) plus the existing sales-discovery, sales-closer, sales-negotiation, and sales-progression skills.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,34 +1,53 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: real-agency-sales
|
|
3
|
-
description: "
|
|
3
|
+
description: "Sale-agreed to completion progression for UK residential sales agents. The headline workflow is chase-progression: daily ranked stalled-deal surfacing with tone-matched draft messages and per-message approval gates. Includes risk-scorer (fall-through risk scoring, used by chase-progression) plus the existing sales-discovery, sales-closer, sales-negotiation, and sales-progression skills."
|
|
4
4
|
tools: []
|
|
5
|
+
skills:
|
|
6
|
+
- skills/chase-progression/SKILL.md
|
|
7
|
+
- skills/risk-scorer/SKILL.md
|
|
8
|
+
- skills/sales-discovery/SKILL.md
|
|
9
|
+
- skills/sales-closer/SKILL.md
|
|
10
|
+
- skills/sales-negotiation/SKILL.md
|
|
11
|
+
- skills/sales-progression/SKILL.md
|
|
12
|
+
- skills/negotiation/SKILL.md
|
|
13
|
+
profileKeys:
|
|
14
|
+
- realagent.batch_cap
|
|
15
|
+
- realagent.phrasing_pet_peeves
|
|
16
|
+
- realagent.risk_weights.fee_multiplier
|
|
17
|
+
- realagent.skip_recipients
|
|
5
18
|
always: false
|
|
6
19
|
metadata: {"platform":{"optional":true,"embed":["public","admin"]}}
|
|
7
20
|
---
|
|
8
21
|
|
|
9
|
-
# Real Agency
|
|
22
|
+
# Real Agency, Chase Progression and Sales
|
|
10
23
|
|
|
11
|
-
|
|
24
|
+
Seven skills covering chain progression (the headline workflow) and the existing sales cycle.
|
|
12
25
|
|
|
13
26
|
## When to Activate
|
|
14
27
|
|
|
15
|
-
The user is working on
|
|
28
|
+
The user is working on stalled deals, chain progression, fall-through risk, sale-agreed deals, or any of the existing sales-cycle skills.
|
|
16
29
|
|
|
17
30
|
## Skills
|
|
18
31
|
|
|
19
|
-
| Skill | Purpose |
|
|
20
|
-
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `sales-
|
|
24
|
-
| `sales-
|
|
32
|
+
| Skill | Owner specialist | Purpose |
|
|
33
|
+
|-------|------------------|---------|
|
|
34
|
+
| `chase-progression` | negotiator | Master workflow: daily ranked stalled list with per-message approval |
|
|
35
|
+
| `risk-scorer` | negotiator | Computes fall-through risk score (used inside chase-progression) |
|
|
36
|
+
| `sales-discovery` | negotiator | Qualify prospects |
|
|
37
|
+
| `sales-closer` | negotiator | Detect buying signals and close |
|
|
38
|
+
| `sales-negotiation` | negotiator | Frame value, protect price |
|
|
39
|
+
| `sales-progression` | negotiator | Track transactions from sale agreed through to completion |
|
|
40
|
+
| `negotiation` | negotiator | Negotiation framework (existing) |
|
|
25
41
|
|
|
26
42
|
## Tools Used
|
|
27
43
|
|
|
28
44
|
No MCP server. Skills operate via existing platform tools:
|
|
29
|
-
|
|
30
|
-
- `
|
|
45
|
+
|
|
46
|
+
- `memory-search` for domain knowledge
|
|
47
|
+
- `render-component` for structured choices
|
|
48
|
+
- `profile-read` and `profile-update` for the customisation profile
|
|
49
|
+
- `action-pending`, `action-approve`, `action-reject`, `action-edit` for the per-message approval gates in chase-progression
|
|
31
50
|
|
|
32
51
|
## References
|
|
33
52
|
|
|
34
|
-
Domain knowledge files loaded on demand by each skill.
|
|
53
|
+
Domain knowledge files loaded on demand by each skill.
|
package/payload/premium-plugins/real-agency/plugins/estate-sales/skills/chase-progression/SKILL.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chase-progression
|
|
3
|
+
description: "The headline daily-and-on-demand workflow that protects pipeline fee income. Surfaces stalled sale-agreed deals ranked by fall-through risk and fee value, drafts tone-matched messages per stakeholder, and fires only the messages the operator approves. Triggers when the operator says 'chase the chain', 'chase progression', 'where is everyone on <address>', 'push <name>'s deal', 'push the chain on <address>', 'follow up on the <name> solicitors', 'what's stalled', 'stalled deals', 'any updates on <address>'. Also runs as a sub-flow of the morning round."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Chase progression
|
|
7
|
+
|
|
8
|
+
The master workflow owned by the negotiator. The headline of the product. Sales agents lose more fee income to stalled chains than to any single other cause; this workflow protects every pipeline fee the agent has earned.
|
|
9
|
+
|
|
10
|
+
Done well, every weekday morning the operator opens chase-progression, reads 5 to 15 ranked stalled deals with drafted messages, approves the ones to send, edits one or two, skips the ones already handled, and is done in under 10 minutes. The alternative is a half-day a week on the same work, done badly.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- The customisation profile.
|
|
15
|
+
- Every sale-agreed deal in the CRM with its full state, including last contact per party.
|
|
16
|
+
- The mortgage offer expiry dates held in the CRM where available.
|
|
17
|
+
- The calendar (for surveyor and viewing schedules).
|
|
18
|
+
|
|
19
|
+
If invoked with a property name ("push 14 Garth Road"), the workflow narrows to the single-deal deep dive for that property and skips the across-pipeline view.
|
|
20
|
+
|
|
21
|
+
## Architecture principles encoded here
|
|
22
|
+
|
|
23
|
+
- Read before write. The workflow opens by reading the chain state for every deal. It does not draft a message until the deal state has been built.
|
|
24
|
+
- Stage, don't send. Every message is a draft until the operator approves it. The workflow never fires a message that has been edited but not re-approved.
|
|
25
|
+
- One screen of output. The ranked list collapses to one screen even when there are 15 deals. Each row is one line until the operator expands it.
|
|
26
|
+
- Cite the source. Every cause sentence cites the connector reads that support it. Every draft message references the actual deal record.
|
|
27
|
+
- Teach the profile. Edit-before-send diffs are the gold signal; see learning hooks.
|
|
28
|
+
- Reversible. A sent message creates a CRM activity entry. The "spoke to them" override removes a recipient and logs the verbal contact.
|
|
29
|
+
|
|
30
|
+
## Two views
|
|
31
|
+
|
|
32
|
+
### Across-pipeline view
|
|
33
|
+
|
|
34
|
+
Every sale-agreed deal stalled past the threshold for the relevant stakeholder type, ranked by fall-through risk multiplied by fee value. For each deal, one line shows:
|
|
35
|
+
|
|
36
|
+
- Property
|
|
37
|
+
- Days since the last positive movement
|
|
38
|
+
- One-line cause from chain state
|
|
39
|
+
- Drafted message ready to fire
|
|
40
|
+
|
|
41
|
+
Built by composing `chain-progression-tracker` (state), `risk-scorer` (risk), `priority-ranker` (rank), and `tone-matched-drafter` (drafts).
|
|
42
|
+
|
|
43
|
+
### Single-deal deep-dive view
|
|
44
|
+
|
|
45
|
+
When the operator names a property, the workflow returns the full state: every party, every last-known status, every outstanding action, every risk flag, and draft messages for every stakeholder who needs chasing. Each draft is in the right tone for that recipient and channel.
|
|
46
|
+
|
|
47
|
+
## Tone and channel per recipient type
|
|
48
|
+
|
|
49
|
+
The profile holds a tone preference per type, calibrated from voice samples and from edit-before-send diffs. Defaults:
|
|
50
|
+
|
|
51
|
+
| Recipient type | Default tone | Channel default |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| Vendor (familiar) | Conversational, first name | WhatsApp or mobile |
|
|
54
|
+
| Vendor (formal) | Polite, surname | Email |
|
|
55
|
+
| Buyer (familiar) | Conversational, first name | WhatsApp or mobile |
|
|
56
|
+
| Buyer (formal) | Polite, surname | Email |
|
|
57
|
+
| Vendor solicitor | Formal, surname, references file | Email |
|
|
58
|
+
| Buyer solicitor | Formal, surname, references file | Email |
|
|
59
|
+
| Mortgage broker | Polite, first name, references buyer | Email or phone |
|
|
60
|
+
| Surveyor | Brief, polite, references property | Email |
|
|
61
|
+
|
|
62
|
+
Defaults are starting points. Within a month of use each agent's tone profile is distinct.
|
|
63
|
+
|
|
64
|
+
## Approval gates
|
|
65
|
+
|
|
66
|
+
Per message. The workflow presents drafts in a batch (cap 15). The operator can:
|
|
67
|
+
|
|
68
|
+
- **Approve all.** Fires every message as drafted.
|
|
69
|
+
- **Approve, edit some.** Edits are captured for learning. Remaining approved messages fire as drafted.
|
|
70
|
+
- **Approve some, skip some.** Fires only approved ones. Skipped recipients are excluded from chase for 24 hours.
|
|
71
|
+
- **Pause.** Saves the batch and returns to it later.
|
|
72
|
+
|
|
73
|
+
If the operator has more than 15 stalled deals, the workflow surfaces two batches of 15 with a pause between rather than one batch of 30. Approve-all-and-regret is the failure mode the cap prevents.
|
|
74
|
+
|
|
75
|
+
## The "spoke to them" override
|
|
76
|
+
|
|
77
|
+
The most frequent operator action with this workflow is "don't chase Mrs Patel, I spoke to her yesterday". The workflow recognises this phrasing, removes the recipient from the batch, writes a CRM activity entry with timestamp and the note "operator confirms verbal contact, no chase needed", and resets the stalled-threshold clock for that recipient.
|
|
78
|
+
|
|
79
|
+
## Continuous learning hooks
|
|
80
|
+
|
|
81
|
+
- Cadence per stakeholder type. "I chase solicitors at 5 days, brokers at 3, vendors weekly". Learned from explicit corrections and from edit-frequency patterns.
|
|
82
|
+
- Tone profile. The deepest learning hook in the product. Every edit-before-send diff is gold. Within a quarter the workflow should be drafting messages the agent sends without editing 80% of the time.
|
|
83
|
+
- Risk weights. Reweighted by which deals actually fall through (negative outcome) and which complete (positive outcome). Slow signal, high quality.
|
|
84
|
+
- Skip patterns. Recipients the agent never chases (a friend, a regular client they handle in person) get excluded automatically once the pattern is recognised.
|
|
85
|
+
- Channel preferences per recipient. If the operator always changes the drafted email to a WhatsApp, the channel preference updates.
|
|
86
|
+
- Phrasing pet peeves. "I hope this finds you well" edited out every time stops appearing in drafts.
|
|
87
|
+
|
|
88
|
+
All writes go through `profile-writer`.
|
|
89
|
+
|
|
90
|
+
## Connectors
|
|
91
|
+
|
|
92
|
+
Read: CRM, email, WhatsApp, calendar, mortgage offer expiry data if held in CRM.
|
|
93
|
+
Write: Email, WhatsApp Business, SMS, each on explicit per-message approval.
|
|
94
|
+
|
|
95
|
+
## WhatsApp Business templating
|
|
96
|
+
|
|
97
|
+
WhatsApp Business is rate-limited and template-restricted for the first interaction with a recipient. The workflow knows when a recipient is on an open 24-hour conversation window and when a template message is required. The operator does not need to know which is which; the draft adapts.
|
|
98
|
+
|
|
99
|
+
## Profile keys
|
|
100
|
+
|
|
101
|
+
- `realagent.stalled_threshold_days.*` (per stakeholder type)
|
|
102
|
+
- `realagent.tone_profile.*` (per recipient type)
|
|
103
|
+
- `realagent.channel_preference.<recipient_id>` (learned per recipient)
|
|
104
|
+
- `realagent.batch_cap` (default 15)
|
|
105
|
+
- `realagent.skip_recipients` (list, learned)
|
|
106
|
+
- `realagent.phrasing_pet_peeves` (list of phrases the agent edits out, learned)
|
|
107
|
+
- `realagent.risk_weights.*` (learned from outcome correlation)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: risk-scorer
|
|
3
|
+
description: "Compute a fall-through risk score per stalled deal from observable signals. The score drives the ranking and a one-line cause description; the number itself is never shown to the operator. Built for use inside chase-progression."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Risk scorer
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `chase-progression`. Computes the risk score that `priority-ranker` uses to order the stalled list, and the cause sentence the operator reads.
|
|
9
|
+
|
|
10
|
+
## Signals
|
|
11
|
+
|
|
12
|
+
The score is a weighted combination of:
|
|
13
|
+
|
|
14
|
+
- Days since any party's last contact
|
|
15
|
+
- Days since the last positive progress event
|
|
16
|
+
- Mortgage offer expiry date approaching (offers usually valid 3 to 6 months)
|
|
17
|
+
- Searches outstanding past day 21
|
|
18
|
+
- Survey booked but not done past day 14
|
|
19
|
+
- Vendor or buyer disengagement signals (slow replies, terse messages)
|
|
20
|
+
- Chain complexity (number of linked transactions)
|
|
21
|
+
- Onward-purchase status if known
|
|
22
|
+
|
|
23
|
+
The weights are profile-learned from outcome correlation. Deals that the workflow flagged as high risk and that actually fell through reinforce the weighting. Deals flagged high that completed without incident reduce the weighting on whatever signal triggered the flag.
|
|
24
|
+
|
|
25
|
+
## Opacity rule
|
|
26
|
+
|
|
27
|
+
The numeric score is never surfaced to the operator. Showing a number invites debate. Showing a one-line cause invites action. The skill returns the score for the ranker to use internally and returns the cause sentence for the operator to see.
|
|
28
|
+
|
|
29
|
+
## What it does not do
|
|
30
|
+
|
|
31
|
+
- It does not write to the CRM.
|
|
32
|
+
- It does not produce a probability of fall-through as a percentage. The score is a relative ranking signal, not a forecast.
|
|
33
|
+
- It does not draft messages.
|
|
34
|
+
|
|
35
|
+
## Connectors
|
|
36
|
+
|
|
37
|
+
Read: CRM, email, WhatsApp, calendar, mortgage offer data if held in CRM. No writes.
|
|
38
|
+
|
|
39
|
+
## Profile keys
|
|
40
|
+
|
|
41
|
+
- `realagent.risk_weights.*` (per signal, learned)
|
|
42
|
+
- `realagent.risk_weights.fee_multiplier` (how heavily fee value modulates the rank, default 1.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "real-agency-leads",
|
|
3
|
-
"description": "
|
|
3
|
+
"description": "Daily morning round and lead-pipeline skills for UK residential sales agents. Composes diary, awaiting-reply, overnight-enquiry triage, and stalled-deal surfacing into one snapshot, plus the chain-progression-tracker shared with chase-progression.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,31 +1,61 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: real-agency-leads
|
|
3
|
-
description: "
|
|
3
|
+
description: "Daily morning round and lead-pipeline skills for UK residential sales agents. Composes diary, awaiting-reply, overnight-enquiry triage, and stalled-deal surfacing into one snapshot, plus the chain-progression-tracker shared with chase-progression."
|
|
4
4
|
tools: []
|
|
5
|
+
skills:
|
|
6
|
+
- skills/morning-round/SKILL.md
|
|
7
|
+
- skills/diary-builder/SKILL.md
|
|
8
|
+
- skills/enquiry-triage/SKILL.md
|
|
9
|
+
- skills/chain-progression-tracker/SKILL.md
|
|
10
|
+
- skills/lead-nurturing/SKILL.md
|
|
11
|
+
- skills/prospecting/SKILL.md
|
|
12
|
+
profileKeys:
|
|
13
|
+
- realagent.awaiting_reply_lookback_days
|
|
14
|
+
- realagent.cause_phrases
|
|
15
|
+
- realagent.diary.postcode_ordering
|
|
16
|
+
- realagent.diary.show_internal_events
|
|
17
|
+
- realagent.enquiry_triage.source_weights
|
|
18
|
+
- realagent.enquiry_triage.spam_phrases
|
|
19
|
+
- realagent.morning_round.delivery_channel
|
|
20
|
+
- realagent.morning_round.delivery_time
|
|
21
|
+
- realagent.morning_round.hidden_sections
|
|
22
|
+
- realagent.morning_round.section_order
|
|
23
|
+
- realagent.stalled_threshold_days.broker
|
|
24
|
+
- realagent.stalled_threshold_days.buyer
|
|
25
|
+
- realagent.stalled_threshold_days.solicitor
|
|
26
|
+
- realagent.stalled_threshold_days.surveyor
|
|
27
|
+
- realagent.stalled_threshold_days.vendor
|
|
5
28
|
always: false
|
|
6
29
|
metadata: {"platform":{"optional":true,"embed":["admin"]}}
|
|
7
30
|
---
|
|
8
31
|
|
|
9
|
-
# Real Agency
|
|
32
|
+
# Real Agency, Lead Generation and Morning Round
|
|
10
33
|
|
|
11
|
-
|
|
34
|
+
Six skills: four covering the daily morning round (master plus building blocks) and two covering longer-horizon lead nurturing and prospecting.
|
|
12
35
|
|
|
13
36
|
## When to Activate
|
|
14
37
|
|
|
15
|
-
The user is working on lead nurturing, follow-up cadences, database reactivation campaigns, prospecting activities, or outreach strategies.
|
|
38
|
+
The user is asking for the morning round, the daily brief, the day's diary, overnight enquiries, or anything stalled. Also activates when the user is working on lead nurturing, follow-up cadences, database reactivation campaigns, prospecting activities, or outreach strategies.
|
|
16
39
|
|
|
17
40
|
## Skills
|
|
18
41
|
|
|
19
|
-
| Skill | Purpose |
|
|
20
|
-
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
42
|
+
| Skill | Owner specialist | Purpose |
|
|
43
|
+
|-------|------------------|---------|
|
|
44
|
+
| `morning-round` | negotiator | The daily one-page snapshot: diary, awaiting replies, overnight enquiries, stalled deals, top three |
|
|
45
|
+
| `diary-builder` | negotiator | Today's diary block for the morning round |
|
|
46
|
+
| `enquiry-triage` | negotiator | Triages overnight portal and email enquiries |
|
|
47
|
+
| `chain-progression-tracker` | negotiator | State-of-the-chain view; used by morning round and chase-progression |
|
|
48
|
+
| `lead-nurturing` | negotiator | Systematic follow-up and pipeline warming |
|
|
49
|
+
| `prospecting` | negotiator | Database reactivation, lead generation, campaign chaining |
|
|
23
50
|
|
|
24
51
|
## Tools Used
|
|
25
52
|
|
|
26
53
|
No MCP server. Skills operate via existing platform tools:
|
|
27
|
-
|
|
28
|
-
- `
|
|
54
|
+
|
|
55
|
+
- `memory-search` to retrieve domain knowledge from the knowledge base
|
|
56
|
+
- `render-component` to present structured choices during interactions
|
|
57
|
+
- `profile-read` and `profile-update` for the customisation profile
|
|
58
|
+
- `task-create` to file an open task when a chase needs deferring
|
|
29
59
|
|
|
30
60
|
## References
|
|
31
61
|
|
package/payload/premium-plugins/real-agency/plugins/leads/skills/chain-progression-tracker/SKILL.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chain-progression-tracker
|
|
3
|
+
description: "Build the state-of-the-chain view for a sale-agreed deal. Identifies stalled deals across the pipeline for the morning round, and produces a single-deal deep dive when the chase-progression workflow expands one. Read-only; never sends anything."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Chain progression tracker
|
|
7
|
+
|
|
8
|
+
A building-block skill used by two workflows. The morning round calls it for the across-pipeline stalled view. The chase-progression workflow calls it for the single-deal deep dive.
|
|
9
|
+
|
|
10
|
+
## Two modes
|
|
11
|
+
|
|
12
|
+
### Across-pipeline mode
|
|
13
|
+
|
|
14
|
+
Used by `morning-round`. Returns every sale-agreed deal where nothing has moved past the stalled threshold for the relevant stakeholder type. For each, returns:
|
|
15
|
+
|
|
16
|
+
- Property address
|
|
17
|
+
- Days since the last positive movement
|
|
18
|
+
- The most likely cause from chain state, expressed as one short sentence
|
|
19
|
+
|
|
20
|
+
The stalled threshold is read from the profile, per stakeholder type. Default 7 days for everyone; learns per type.
|
|
21
|
+
|
|
22
|
+
### Single-deal deep-dive mode
|
|
23
|
+
|
|
24
|
+
Used by `chase-progression`. Given a property the operator named, returns:
|
|
25
|
+
|
|
26
|
+
- Every party in the chain with their role
|
|
27
|
+
- Last known status for each party
|
|
28
|
+
- Every outstanding action with the responsible party
|
|
29
|
+
- Every risk flag (offer expiry approaching, searches outstanding, survey booked but not done, vendor or buyer disengagement signals, chain complexity, onward-purchase status)
|
|
30
|
+
- A timeline view of the last 30 days of contact
|
|
31
|
+
|
|
32
|
+
## What "most likely cause" means
|
|
33
|
+
|
|
34
|
+
The skill compares the deal state against the typical stalled patterns: solicitor not responding, mortgage offer expiring, survey scheduled but not completed, search results outstanding, vendor unresponsive, buyer unresponsive, chain party upstream unresponsive. The cause sentence is the pattern that best fits the observable signals, written by `variance-narrator`.
|
|
35
|
+
|
|
36
|
+
The skill never invents a cause it cannot trace to data. If no pattern fits, the cause line says "no clear cause from connectors, manual check recommended".
|
|
37
|
+
|
|
38
|
+
## What it does not do
|
|
39
|
+
|
|
40
|
+
- It does not compute the fall-through risk score. That is `risk-scorer`, called separately by `chase-progression`.
|
|
41
|
+
- It does not draft messages. Draft messages come from `tone-matched-drafter`.
|
|
42
|
+
- It does not write to the CRM.
|
|
43
|
+
|
|
44
|
+
## Connectors
|
|
45
|
+
|
|
46
|
+
Read: CRM, email, WhatsApp, calendar, mortgage offer expiry data if held in CRM. No writes.
|
|
47
|
+
|
|
48
|
+
## Profile keys
|
|
49
|
+
|
|
50
|
+
- `realagent.stalled_threshold_days.*` (per stakeholder type)
|
|
51
|
+
- `realagent.cause_phrases` (preferred cause phrasings, learned from edits)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diary-builder
|
|
3
|
+
description: "Produce the today's diary block for the morning round. Reads the calendar and the CRM to surface every viewing, valuation, market appraisal, vendor meeting, and completion call for today, with times, addresses, contact, and postcode."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Diary builder
|
|
7
|
+
|
|
8
|
+
A building-block skill the operator never names. Called by `morning-round` to build the diary block of the daily snapshot.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
|
|
12
|
+
Reads today's calendar entries from the connected calendar (M365 or Google). For each entry it correlates the CRM record so that the line shows the right contact and the property context, not just a calendar title. Items not tied to a CRM record still appear, marked as "calendar entry, no CRM match".
|
|
13
|
+
|
|
14
|
+
## Output shape
|
|
15
|
+
|
|
16
|
+
A list, one line per entry, sorted by start time. Each line shows:
|
|
17
|
+
|
|
18
|
+
- Start time and duration
|
|
19
|
+
- Activity type: viewing, valuation, market appraisal, vendor meeting, completion call, other
|
|
20
|
+
- Address with postcode
|
|
21
|
+
- Contact name and role (vendor, buyer, applicant)
|
|
22
|
+
|
|
23
|
+
If the order of addresses by postcode is not geographically sensible, a one-line note flags it so the operator can resequence before they leave the office.
|
|
24
|
+
|
|
25
|
+
## What it does not do
|
|
26
|
+
|
|
27
|
+
- It does not produce the prep pack for any valuation in the diary. That is `valuation-prep`, which the operator invokes after reading the diary.
|
|
28
|
+
- It does not chase anyone. The diary is read-only output.
|
|
29
|
+
- It does not modify the calendar.
|
|
30
|
+
|
|
31
|
+
## Connectors
|
|
32
|
+
|
|
33
|
+
Read: calendar, CRM. No writes.
|
|
34
|
+
|
|
35
|
+
## Profile keys
|
|
36
|
+
|
|
37
|
+
- `realagent.diary.postcode_ordering` (boolean, default true)
|
|
38
|
+
- `realagent.diary.show_internal_events` (boolean, default false)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enquiry-triage
|
|
3
|
+
description: "Classify overnight portal and email enquiries into hot, lukewarm, cold, duplicate, or spam. Built for use inside the morning round; the operator does not invoke it directly."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Enquiry triage
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `morning-round`. Takes the new portal and email enquiries since the last round and assigns each one a triage tag.
|
|
9
|
+
|
|
10
|
+
## What hot, lukewarm, cold, duplicate, and spam mean
|
|
11
|
+
|
|
12
|
+
- **Hot.** The enquirer named a price range and a timeline, or asked to book a viewing, or referenced a specific property and confirmed they are a proceedable buyer. Hot enquiries appear verbatim in the round so the operator can act on them without re-reading the source.
|
|
13
|
+
- **Lukewarm.** The enquirer asked about a property without naming budget, timeline, or position. The round shows a one-line summary.
|
|
14
|
+
- **Cold.** Generic enquiry with no specifics. One-line summary in the round.
|
|
15
|
+
- **Duplicate.** Matches a previous enquiry by phone, email, or named buyer in the last 30 days. One-line summary referencing the prior contact.
|
|
16
|
+
- **Spam.** Off-topic, lead-broker, or otherwise non-buyer traffic. One-line summary so the operator can confirm the call.
|
|
17
|
+
|
|
18
|
+
## Triage signals
|
|
19
|
+
|
|
20
|
+
For each enquiry, the skill considers: source (Rightmove, Zoopla, OnTheMarket, agency website, direct email, WhatsApp), the literal text of the enquiry, the contact details supplied, the CRM history of the same contact, and the property the enquiry refers to.
|
|
21
|
+
|
|
22
|
+
The decision is the LLM's, not a regex. Classification quality improves as the profile learns from skip patterns (see learning hooks in `morning-round`).
|
|
23
|
+
|
|
24
|
+
## What it does not do
|
|
25
|
+
|
|
26
|
+
- It does not reply to enquiries. Reply drafting is `tone-matched-drafter`, invoked from a chase or new-instruction workflow.
|
|
27
|
+
- It does not write to the CRM. The enquiry record itself lives in the portal or the email connector; this skill only reads.
|
|
28
|
+
|
|
29
|
+
## Connectors
|
|
30
|
+
|
|
31
|
+
Read: portal feeds (Rightmove, Zoopla, OnTheMarket), email, WhatsApp, CRM. No writes.
|
|
32
|
+
|
|
33
|
+
## Profile keys
|
|
34
|
+
|
|
35
|
+
- `realagent.enquiry_triage.source_weights` (map of source to weight, learned)
|
|
36
|
+
- `realagent.enquiry_triage.spam_phrases` (list of phrases the operator has flagged as spam, learned)
|