@rubytech/create-realagent-code 0.1.22 → 0.1.24
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/__tests__/samba-provision.test.js +202 -0
- package/dist/index.js +127 -73
- package/dist/samba-provision.js +215 -0
- package/dist/uninstall.js +160 -3
- package/package.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +4 -0
- 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/session-management/SKILL.md +62 -0
- 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 +23 -2
- package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +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/email/references/email-reference.md +4 -4
- package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +2 -0
- package/payload/platform/plugins/memory/PLUGIN.md +6 -0
- 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/scheduling/PLUGIN.md +4 -1
- 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/workflows/PLUGIN.md +2 -2
- package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +1 -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 +14 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +14 -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 +9 -2
- 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/templates/agents/admin/IDENTITY.md +39 -291
- 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 +29 -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 +27 -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 +24 -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 +43 -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 +20 -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/public/assets/{Checkbox-B79fVxpA.js → Checkbox-D1OQD43b.js} +1 -1
- package/payload/server/public/assets/admin-czNBxWor.js +216 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-D8e59YJ0.js → architectureDiagram-Q4EWVU46-BcwgT80u.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-CxaDkc0A.js → blockDiagram-DXYQGD6D-BMSyZUQA.js} +1 -1
- package/payload/server/public/assets/{brand-Cg9t5U6J.css → brand-2cku8WFs.css} +1 -1
- package/payload/server/public/assets/{brand-jT16ErmC.js → brand-CSQuxS9w.js} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-D0PAvq-q.js → c4Diagram-AHTNJAMY-DPRGY1jJ.js} +1 -1
- package/payload/server/public/assets/channel-fxEghWew.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-B-CXn-Et.js → chunk-336JU56O-B7oQ3g1c.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-BLzCQHKA.js → chunk-426QAEUC-C1P0yFXw.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-Bql1UwLT.js → chunk-4TB4RGXK-LI7kOJd0.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-CQK7jBtX.js → chunk-5FUZZQ4R-CXQRGTQE.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-AJc1-lvX.js → chunk-5PVQY5BW-NSyzpXRy.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-Cf3E3THL.js → chunk-EDXVE4YY-voNwxbDs.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-BNx6z6hJ.js → chunk-ENJZ2VHE-CMEMPzYY.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DBUEFs2-.js → chunk-ICPOFSXX-hEbwu-pe.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-Csx2p315.js → chunk-OYMX7WX6-DxskDrLs.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-x17h7UYW.js → chunk-U2HBQHQK-D7TKgUo0.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP--Lkl5yjV.js → chunk-X2U36JSP-BvPUQEPm.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-C4GsNX8A.js → chunk-YZCP3GAM-BY-RWQUW.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-YrhUPmZc.js → chunk-ZZ45TVLE-DZvOYDY6.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BsWzGW0N.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BGVa3h90.js +1 -0
- package/payload/server/public/assets/clone-Khvocke2.js +1 -0
- package/payload/server/public/assets/{dagre-YVALPG-M.js → dagre-Bt-fpckL.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-D6JU6DW_.js → dagre-KV5264BT-Cnj0mUZl.js} +1 -1
- package/payload/server/public/assets/data-DBd-Buhp.js +1 -0
- package/payload/server/public/assets/device-url-actions-Bjz3Xzbm.js +33 -0
- package/payload/server/public/assets/{diagram-5BDNPKRD-yeO06N5Q.js → diagram-5BDNPKRD-DjLzvOlx.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DzbVT_BC.js → diagram-G4DWMVQ6-DTfuRd-T.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DwYO5VZF.js → diagram-MMDJMWI5-BaL2mCnx.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-BLUcdkDS.js → diagram-TYMM5635-C5InWY5R.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-BiEUB19e.js → erDiagram-SMLLAGMA-DO7BXTpn.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-TILIKxOp.js → flowDiagram-DWJPFMVM-DDdAKfLf.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-B7cGzYqT.js → ganttDiagram-T4ZO3ILL-arJD8Utm.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DFOxN5bc.js → gitGraphDiagram-UUTBAWPF-C55GH-OS.js} +1 -1
- package/payload/server/public/assets/graph-DUtVdnZ6.js +1 -0
- package/payload/server/public/assets/graph-labels-Dxfue-fP.js +1 -0
- package/payload/server/public/assets/{graphlib-BBibixaA.js → graphlib-DL9PM7Ex.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-nH2azhY8.js → infoDiagram-42DDH7IO-BMSGqUbG.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-WD3tfqFi.js → ishikawaDiagram-UXIWVN3A-Dw6BZ6BG.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-LUkaVSqw.js → journeyDiagram-VCZTEJTY-DrywUGXw.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Dk-lYgpJ.js → kanban-definition-6JOO6SKY-DuwtVBBc.js} +1 -1
- package/payload/server/public/assets/{line-BDv6CEnp.js → line-JAksyKHj.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-D2XsSGgp.js → mermaid-parser.core-BMq-ApBW.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-FyN-UmQV.js → mermaid.core-tH4oX0Kh.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-BRAHEUIS.js → mindmap-definition-QFDTVHPH-D1OiiJga.js} +1 -1
- package/payload/server/public/assets/page-BZpoS7iR.js +1 -0
- package/payload/server/public/assets/{page-CTbSJbem.js → page-CkvBvezS.js} +2 -2
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-BqibVC2X.js → pieDiagram-DEJITSTG-Ckwm69PW.js} +1 -1
- package/payload/server/public/assets/{public-BDUZIabs.js → public-C-dTMgXu.js} +5 -5
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-DNuExGnr.js → quadrantDiagram-34T5L4WZ-COw3yZ1j.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-5JXTdydh.js → requirementDiagram-MS252O5E-DqGzM4K-.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-B_8rhvcR.js → sankeyDiagram-XADWPNL6-D-l1c_Pl.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BznkBgjf.js → sequenceDiagram-FGHM5R23-BeIi0DtJ.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BeAZOQfs.js → stateDiagram-FHFEXIEX-C-jgegLk.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BaMs8Znv.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CpJAs-Vw.js → timeline-definition-GMOUNBTQ-BGFKkYmi.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BzH3ItkG.js → vennDiagram-DHZGUBPP-5NuIhJLS.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-ax9AgwA1.js → wardleyDiagram-NUSXRM2D-Be9ytVut.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CV6vt_tW.js → xychartDiagram-5P7HB3ND-DCyHg41R.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 +62 -101
- package/payload/server/public/assets/admin-CXLuiXFU.js +0 -216
- package/payload/server/public/assets/channel-BU_eIdRB.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-DMpM1d2b.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D_XbuPVj.js +0 -1
- package/payload/server/public/assets/clone-BBT00JUO.js +0 -1
- package/payload/server/public/assets/data-BdwO_kv-.js +0 -1
- package/payload/server/public/assets/device-url-actions-C8dD0ydz.js +0 -33
- package/payload/server/public/assets/graph-DpgsOhUZ.js +0 -1
- package/payload/server/public/assets/graph-labels-DJ717p00.js +0 -1
- package/payload/server/public/assets/page-BWHYktEF.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-iVlXKz7S.js +0 -1
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,45 @@
|
|
|
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
|
|
5
12
|
always: false
|
|
6
13
|
metadata: {"platform":{"optional":true,"embed":["admin"]}}
|
|
7
14
|
---
|
|
8
15
|
|
|
9
|
-
# Real Agency
|
|
16
|
+
# Real Agency, Lead Generation and Morning Round
|
|
10
17
|
|
|
11
|
-
|
|
18
|
+
Six skills: four covering the daily morning round (master plus building blocks) and two covering longer-horizon lead nurturing and prospecting.
|
|
12
19
|
|
|
13
20
|
## When to Activate
|
|
14
21
|
|
|
15
|
-
The user is working on lead nurturing, follow-up cadences, database reactivation campaigns, prospecting activities, or outreach strategies.
|
|
22
|
+
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
23
|
|
|
17
24
|
## Skills
|
|
18
25
|
|
|
19
|
-
| Skill | Purpose |
|
|
20
|
-
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
26
|
+
| Skill | Owner specialist | Purpose |
|
|
27
|
+
|-------|------------------|---------|
|
|
28
|
+
| `morning-round` | negotiator | The daily one-page snapshot: diary, awaiting replies, overnight enquiries, stalled deals, top three |
|
|
29
|
+
| `diary-builder` | negotiator | Today's diary block for the morning round |
|
|
30
|
+
| `enquiry-triage` | negotiator | Triages overnight portal and email enquiries |
|
|
31
|
+
| `chain-progression-tracker` | negotiator | State-of-the-chain view; used by morning round and chase-progression |
|
|
32
|
+
| `lead-nurturing` | negotiator | Systematic follow-up and pipeline warming |
|
|
33
|
+
| `prospecting` | negotiator | Database reactivation, lead generation, campaign chaining |
|
|
23
34
|
|
|
24
35
|
## Tools Used
|
|
25
36
|
|
|
26
37
|
No MCP server. Skills operate via existing platform tools:
|
|
27
|
-
|
|
28
|
-
- `
|
|
38
|
+
|
|
39
|
+
- `memory-search` to retrieve domain knowledge from the knowledge base
|
|
40
|
+
- `render-component` to present structured choices during interactions
|
|
41
|
+
- `profile-read` and `profile-update` for the customisation profile
|
|
42
|
+
- `task-create` to file an open task when a chase needs deferring
|
|
29
43
|
|
|
30
44
|
## References
|
|
31
45
|
|
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)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morning-round
|
|
3
|
+
description: "Produce the daily one-page snapshot of diary, awaiting replies, overnight enquiries, stalled deals, and the top three actions for today. Triggers when the operator says 'morning round', 'morning brief', 'what's on', 'where are we', 'start my day', 'kick me off', 'what's new since yesterday', or a bare 'morning' or 'good morning' with no other content. Also fires on schedule at the profile's delivery time."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Morning round
|
|
7
|
+
|
|
8
|
+
The master workflow run daily by the negotiator at the agent's chosen time, Monday through Saturday. It is read-only by design. Every claim in the output cites a connector read or a profile entry, every section appears even when empty, and the workflow never writes to the CRM or sends a message.
|
|
9
|
+
|
|
10
|
+
This skill earns the right to act. Until the operator trusts the morning round to look without permission, the chase-progression workflow has no licence to send anything.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- The operator's customisation profile, read first. The profile names the delivery channel, the stalled threshold per stakeholder type, the agent's preferred section order, and any section they have hidden.
|
|
15
|
+
- The agent's calendar for today, read via the calendar connector.
|
|
16
|
+
- The CRM state of every sale-agreed deal and every active negotiation, read via the CRM connector.
|
|
17
|
+
- The portal enquiry feed since the last morning round, read via the portal connectors and email connector.
|
|
18
|
+
- The WhatsApp Business inbox since the last morning round.
|
|
19
|
+
|
|
20
|
+
If any connector is unavailable the workflow still produces the round and names the gap in plain language, for example "portal feeds unavailable, overnight enquiries not included in this round".
|
|
21
|
+
|
|
22
|
+
## Architecture principles encoded here
|
|
23
|
+
|
|
24
|
+
The six principles in spec 00 §8 apply once at this master-skill layer and are not repeated in the building-block skills it composes.
|
|
25
|
+
|
|
26
|
+
- Read before write. This workflow never writes anything.
|
|
27
|
+
- Stage, don't send. Not applicable, there is nothing to send.
|
|
28
|
+
- One screen of output. The five sections must fit one Claude UI exchange. If they do not, the workflow has summarised badly.
|
|
29
|
+
- Cite the source. Every number, name, and claim traces back to a connector read or a profile entry.
|
|
30
|
+
- Teach the profile. Every operator interaction after the round feeds the profile through `profile-writer`. See learning hooks below.
|
|
31
|
+
- Reversible. Read-only, nothing to reverse.
|
|
32
|
+
|
|
33
|
+
## Output shape
|
|
34
|
+
|
|
35
|
+
One markdown page, five sections, always in this order unless the profile has reordered them. Sections with no content collapse to one line so the operator always knows the section was checked.
|
|
36
|
+
|
|
37
|
+
1. **Today's diary.** Viewings, valuations, market appraisals, vendor meetings, completion calls. Times, addresses, contact name, postcode. Built by `diary-builder`.
|
|
38
|
+
2. **Awaiting reply.** Anything chased in the last 7 days (default, profile-learned) that has had no reply. Grouped by recipient type. Built by reading the CRM contact log and the email or WhatsApp sent folder.
|
|
39
|
+
3. **New overnight.** Portal and email enquiries since the last login, triaged. Hot enquiries show verbatim. Lukewarm, cold, duplicate, and spam show a one-line summary only. Built by `enquiry-triage`.
|
|
40
|
+
4. **Stalled.** Sale-agreed deals where nothing has moved past the stalled threshold. Each line names the property, the days stalled, and the most likely cause from chain state. Built by `chain-progression-tracker`.
|
|
41
|
+
5. **Top three.** Three things to action first, each with the reason it made the list. Reason is one short sentence, for example "Mrs Patel, her buyer's mortgage offer expires in 9 days and the survey was booked but not done". Built by composing `priority-ranker` and `variance-narrator`.
|
|
42
|
+
|
|
43
|
+
## Continuous learning hooks
|
|
44
|
+
|
|
45
|
+
The morning round is the highest-volume source of learning signals in the product because it runs daily and the operator's behaviour after reading it is observable. Every signal below is written through `profile-writer`, never inline.
|
|
46
|
+
|
|
47
|
+
- Skip pattern per source. If the operator never acts on lukewarm enquiries from a specific portal, that source's weight in `enquiry-triage` drops over time.
|
|
48
|
+
- Stalled threshold drift. "I don't consider this stalled until day 10" updates the threshold immediately. Consistently acting at day 5 tightens it automatically.
|
|
49
|
+
- Top-three accuracy. When the operator actions an item from the top three the same day, the ranking is correct. When they action a lower item instead, `priority-ranker` reweights toward whatever feature distinguished the actioned item.
|
|
50
|
+
- Delivery time. If the operator asks for the round before the scheduled time, schedule earlier. If they ignore it for hours, schedule later or move to on-demand only.
|
|
51
|
+
- Section preferences. "Lead with stalled deals, not the diary" reorders permanently. "Drop the awaiting-reply section, it's noise" hides it and surfaces those items in `chase-progression` instead.
|
|
52
|
+
|
|
53
|
+
## Approval gates
|
|
54
|
+
|
|
55
|
+
None. The workflow is read-only.
|
|
56
|
+
|
|
57
|
+
## Cross-references
|
|
58
|
+
|
|
59
|
+
The chase-progression workflow uses the same `chain-progression-tracker` skill to build its single-deal deep dives. The morning round produces the across-pipeline view; `chase-progression` expands any stalled item the operator names.
|
|
60
|
+
|
|
61
|
+
## Profile keys this skill reads
|
|
62
|
+
|
|
63
|
+
- `realagent.morning_round.delivery_channel`
|
|
64
|
+
- `realagent.morning_round.delivery_time`
|
|
65
|
+
- `realagent.morning_round.section_order`
|
|
66
|
+
- `realagent.morning_round.hidden_sections`
|
|
67
|
+
- `realagent.stalled_threshold_days.vendor`
|
|
68
|
+
- `realagent.stalled_threshold_days.buyer`
|
|
69
|
+
- `realagent.stalled_threshold_days.solicitor`
|
|
70
|
+
- `realagent.stalled_threshold_days.broker`
|
|
71
|
+
- `realagent.stalled_threshold_days.surveyor`
|
|
72
|
+
- `realagent.awaiting_reply_lookback_days`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "real-agency-listings",
|
|
3
|
-
"description": "
|
|
3
|
+
"description": "Valuation prep and new-instruction onboarding for UK residential sales agents. Includes the valuation-prep master plus four building blocks (comparable-finder, local-market-stats, pricing-scenario-builder, talk-track-composer) and the new-instruction master plus its six building blocks (terms-of-business-drafter, epc-checker, supplier-booker, listing-copy-writer, particulars-builder, portal-launch-scheduler). Also retains the existing listing-presentation, property-marketing, and home-preparation skills.",
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rubytech LLC"
|
|
@@ -1,33 +1,64 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: real-agency-listings
|
|
3
|
-
description: "
|
|
3
|
+
description: "Valuation prep and new-instruction onboarding for UK residential sales agents. Includes the valuation-prep master plus four building blocks (comparable-finder, local-market-stats, pricing-scenario-builder, talk-track-composer) and the new-instruction master plus its six building blocks (terms-of-business-drafter, epc-checker, supplier-booker, listing-copy-writer, particulars-builder, portal-launch-scheduler). Also retains the existing listing-presentation, property-marketing, and home-preparation skills."
|
|
4
4
|
tools: []
|
|
5
|
+
skills:
|
|
6
|
+
- skills/valuation-prep/SKILL.md
|
|
7
|
+
- skills/comparable-finder/SKILL.md
|
|
8
|
+
- skills/local-market-stats/SKILL.md
|
|
9
|
+
- skills/pricing-scenario-builder/SKILL.md
|
|
10
|
+
- skills/talk-track-composer/SKILL.md
|
|
11
|
+
- skills/new-instruction/SKILL.md
|
|
12
|
+
- skills/terms-of-business-drafter/SKILL.md
|
|
13
|
+
- skills/epc-checker/SKILL.md
|
|
14
|
+
- skills/supplier-booker/SKILL.md
|
|
15
|
+
- skills/listing-copy-writer/SKILL.md
|
|
16
|
+
- skills/particulars-builder/SKILL.md
|
|
17
|
+
- skills/portal-launch-scheduler/SKILL.md
|
|
18
|
+
- skills/listing-presentation/SKILL.md
|
|
19
|
+
- skills/property-marketing/SKILL.md
|
|
20
|
+
- skills/home-preparation/SKILL.md
|
|
5
21
|
always: false
|
|
6
22
|
metadata: {"platform":{"optional":true,"embed":["admin"]}}
|
|
7
23
|
---
|
|
8
24
|
|
|
9
|
-
# Real Agency
|
|
25
|
+
# Real Agency, Valuations and New Instructions
|
|
10
26
|
|
|
11
|
-
|
|
27
|
+
Fifteen skills covering the two listings-side master workflows (valuation-prep, new-instruction) plus the listing-presentation and marketing skills.
|
|
12
28
|
|
|
13
29
|
## When to Activate
|
|
14
30
|
|
|
15
|
-
The user is preparing
|
|
31
|
+
The user is preparing for a valuation or market appraisal, has just won an instruction, or is asking about the listing-presentation, property-marketing, or home-preparation flow.
|
|
16
32
|
|
|
17
33
|
## Skills
|
|
18
34
|
|
|
19
|
-
| Skill | Purpose |
|
|
20
|
-
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
35
|
+
| Skill | Owner specialist | Purpose |
|
|
36
|
+
|-------|------------------|---------|
|
|
37
|
+
| `valuation-prep` | valuer | Master workflow: the pre-appointment pack |
|
|
38
|
+
| `comparable-finder` | valuer | Pulls and ranks comparable evidence |
|
|
39
|
+
| `local-market-stats` | valuer | Three context numbers for the prep pack |
|
|
40
|
+
| `pricing-scenario-builder` | valuer | Generates the pricing options |
|
|
41
|
+
| `talk-track-composer` | valuer | Drafts vendor questions, objections, USP |
|
|
42
|
+
| `new-instruction` | valuer then negotiator | Master workflow: terms to portal in 72 hours |
|
|
43
|
+
| `terms-of-business-drafter` | compliance | Populates the agency template and stages DocuSign |
|
|
44
|
+
| `epc-checker` | valuer | EPC register lookup and order staging |
|
|
45
|
+
| `supplier-booker` | negotiator | Photographer and floorplan bookings |
|
|
46
|
+
| `listing-copy-writer` | negotiator | Portal-optimised descriptions, material info |
|
|
47
|
+
| `particulars-builder` | negotiator (chains into Maxy `content-producer` for PDF render) | Property brochure |
|
|
48
|
+
| `portal-launch-scheduler` | negotiator | Schedules and stages the portal uploads |
|
|
49
|
+
| `listing-presentation` | negotiator | Listing presentation framework (existing) |
|
|
50
|
+
| `property-marketing` | negotiator | Property marketing campaigns (existing) |
|
|
51
|
+
| `home-preparation` | negotiator | Vendor staging guidance (existing) |
|
|
24
52
|
|
|
25
53
|
## Tools Used
|
|
26
54
|
|
|
27
55
|
No MCP server. Skills operate via existing platform tools:
|
|
28
|
-
|
|
29
|
-
- `
|
|
56
|
+
|
|
57
|
+
- `memory-search` for domain knowledge
|
|
58
|
+
- `render-component` for structured choices
|
|
59
|
+
- `profile-read` and `profile-update` for the customisation profile
|
|
60
|
+
- `action-pending`, `action-approve`, `action-reject`, `action-edit` for the eight approval gates in new-instruction
|
|
30
61
|
|
|
31
62
|
## References
|
|
32
63
|
|
|
33
|
-
Domain knowledge files loaded on demand by each skill.
|
|
64
|
+
Domain knowledge files loaded on demand by each skill.
|
package/payload/premium-plugins/real-agency/plugins/listings/skills/comparable-finder/SKILL.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comparable-finder
|
|
3
|
+
description: "Pull and rank comparable evidence for a valuation prep pack. Returns three SSTC and three sold in the last 12 months within the profile's comparable radius. Built for use inside valuation-prep; the operator does not invoke it directly."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comparable finder
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `valuation-prep` to assemble the comparables section.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
|
|
12
|
+
Given a subject property, the skill queries the portal data feeds and Land Registry within the profile's comparable radius (default 0.5 miles). It picks six properties: three sold subject to contract and three sold and completed in the last 12 months.
|
|
13
|
+
|
|
14
|
+
Selection criteria, in priority order:
|
|
15
|
+
|
|
16
|
+
1. Location proximity. Same street ranks above same postcode, which ranks above adjacent postcode.
|
|
17
|
+
2. Property type match. Detached with detached, semi with semi, flat with flat.
|
|
18
|
+
3. Size match. Similar bedroom count, then similar square footage when known.
|
|
19
|
+
4. Tenure match. Freehold with freehold, leasehold with leasehold.
|
|
20
|
+
5. Condition match if observable. Similar standard of finish, similar age.
|
|
21
|
+
|
|
22
|
+
The profile's exclude filters apply: distressed sales, off-market sales, agent-bought sales, probate sales, anything the operator has previously asked to exclude.
|
|
23
|
+
|
|
24
|
+
## Output shape
|
|
25
|
+
|
|
26
|
+
A table, one row per comparable, six rows total when data permits. Columns:
|
|
27
|
+
|
|
28
|
+
- Address
|
|
29
|
+
- Asking or sold price
|
|
30
|
+
- Beds
|
|
31
|
+
- Square footage (blank if unknown)
|
|
32
|
+
- Time on market in days
|
|
33
|
+
- Agent who marketed it
|
|
34
|
+
|
|
35
|
+
A price-per-square-foot column is added only if at least four of the six rows have square footage. Showing it on a sparse set is misleading.
|
|
36
|
+
|
|
37
|
+
If the radius is too tight to return three SSTC plus three sold, the skill widens the radius once and notes it in the output: "extended search to 0.75 miles to find six comparables".
|
|
38
|
+
|
|
39
|
+
## What it does not do
|
|
40
|
+
|
|
41
|
+
- It does not produce price recommendations. That is `pricing-scenario-builder`.
|
|
42
|
+
- It does not write to anything.
|
|
43
|
+
- It does not store the comparables for re-use; each appointment runs fresh, with the Pi 5 cache providing the speed.
|
|
44
|
+
|
|
45
|
+
## Connectors
|
|
46
|
+
|
|
47
|
+
Read: Rightmove, Zoopla, OnTheMarket data feeds; Land Registry. No writes.
|
|
48
|
+
|
|
49
|
+
## Profile keys
|
|
50
|
+
|
|
51
|
+
- `realagent.comparable_radius_miles` (default 0.5)
|
|
52
|
+
- `realagent.comparable_exclude_filters` (list)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: epc-checker
|
|
3
|
+
description: "Look up the EPC register for a property and decide whether an order is needed. Returns the current EPC rating and expiry if one exists, or stages an order request to the agent's preferred EPC supplier if not. Built for use inside new-instruction."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EPC checker
|
|
7
|
+
|
|
8
|
+
A building-block skill called by `new-instruction`. Decides whether the property has a current EPC and, if not, stages an order.
|
|
9
|
+
|
|
10
|
+
## What it does
|
|
11
|
+
|
|
12
|
+
Queries the EPC register by address. Three outcomes:
|
|
13
|
+
|
|
14
|
+
1. **Current EPC found.** Records the asset rating (A to G), the certificate reference, and the expiry date. The workflow records this in the CRM and moves on. No gate needed.
|
|
15
|
+
2. **Expired EPC found.** Records the prior rating and the expiry date. Stages an order with the agent's preferred EPC supplier from the profile. *Gate: approve order before send.*
|
|
16
|
+
3. **No EPC found.** Stages an order. *Gate: approve order before send.*
|
|
17
|
+
|
|
18
|
+
The order is an email draft to the supplier with the property address, vendor contact, and the agent's standard EPC brief.
|
|
19
|
+
|
|
20
|
+
## Compliance ground
|
|
21
|
+
|
|
22
|
+
The Energy Performance of Buildings (England and Wales) Regulations 2012 (SI 2012/3118) require an EPC before marketing for sale. The asset rating must be stated in all commercial media. Domestic penalty range GBP 500 to GBP 5,000. `compliance-flag-checker` runs over the listing copy at step 5 of `new-instruction` to make sure the EPC rating is present once the certificate has been issued.
|
|
23
|
+
|
|
24
|
+
## What it does not do
|
|
25
|
+
|
|
26
|
+
- It does not perform the EPC inspection. That is the supplier.
|
|
27
|
+
- It does not send the order. Sending requires the operator's approval.
|
|
28
|
+
- It does not write to the EPC register.
|
|
29
|
+
|
|
30
|
+
## Connectors
|
|
31
|
+
|
|
32
|
+
Read: EPC register, profile (preferred supplier).
|
|
33
|
+
Write (staged only): email to supplier.
|
|
34
|
+
|
|
35
|
+
## Profile keys
|
|
36
|
+
|
|
37
|
+
- `realagent.suppliers.epc`
|
|
38
|
+
- `realagent.epc_order.standard_brief` (default email body, learned)
|