@rubytech/create-maxy-code 0.1.23 → 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.
Files changed (90) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +4 -0
  3. package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +47 -0
  4. package/payload/platform/plugins/admin/skills/commitment-followthrough/SKILL.md +60 -0
  5. package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +67 -0
  6. package/payload/platform/plugins/admin/skills/session-management/SKILL.md +62 -0
  7. package/payload/platform/plugins/deep-research/.claude-plugin/plugin.json +1 -1
  8. package/payload/platform/plugins/deep-research/PLUGIN.md +7 -1
  9. package/payload/platform/plugins/deep-research/recipes/README.md +36 -0
  10. package/payload/platform/plugins/deep-research/skills/academic-verify/SKILL.md +75 -0
  11. package/payload/platform/plugins/deep-research/skills/book-mirror/SKILL.md +68 -0
  12. package/payload/platform/plugins/deep-research/skills/data-research/SKILL.md +108 -0
  13. package/payload/platform/plugins/deep-research/skills/strategic-reading/SKILL.md +69 -0
  14. package/payload/platform/plugins/docs/references/deployment.md +3 -2
  15. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +1 -1
  16. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +7 -2
  17. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -1
  18. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +7 -2
  19. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -1
  20. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +2 -0
  21. package/payload/platform/plugins/memory/PLUGIN.md +6 -0
  22. package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +67 -0
  23. package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +80 -0
  24. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +2 -0
  25. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +2 -0
  26. package/payload/platform/plugins/scheduling/PLUGIN.md +3 -0
  27. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +7 -3
  28. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -1
  29. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +7 -3
  30. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  31. package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +75 -0
  32. package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +61 -0
  33. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  34. package/payload/platform/services/claude-session-manager/dist/http-server.js +14 -1
  35. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  36. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +14 -0
  37. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  38. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +9 -2
  39. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +25 -1
  41. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  42. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +54 -3
  43. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  44. package/payload/platform/templates/agents/admin/IDENTITY.md +38 -284
  45. package/payload/platform/templates/agents/admin/SOUL.md +4 -4
  46. package/payload/platform/templates/specialists/agents/content-producer.md +24 -69
  47. package/payload/platform/templates/specialists/agents/database-operator.md +49 -155
  48. package/payload/platform/templates/specialists/agents/personal-assistant.md +27 -177
  49. package/payload/platform/templates/specialists/agents/project-manager.md +29 -96
  50. package/payload/platform/templates/specialists/agents/research-assistant.md +36 -78
  51. package/payload/premium-plugins/real-agency/agents/compliance.md +14 -0
  52. package/payload/premium-plugins/real-agency/agents/negotiator.md +22 -0
  53. package/payload/premium-plugins/real-agency/agents/valuer.md +16 -0
  54. package/payload/premium-plugins/real-agency/plugins/estate-business/.claude-plugin/plugin.json +1 -1
  55. package/payload/premium-plugins/real-agency/plugins/estate-business/PLUGIN.md +29 -13
  56. package/payload/premium-plugins/real-agency/plugins/estate-business/skills/commission-calculator/SKILL.md +40 -0
  57. package/payload/premium-plugins/real-agency/plugins/estate-business/skills/month-end-close/SKILL.md +69 -0
  58. package/payload/premium-plugins/real-agency/plugins/estate-business/skills/payment-batch-stager/SKILL.md +42 -0
  59. package/payload/premium-plugins/real-agency/plugins/estate-business/skills/period-reconciler/SKILL.md +42 -0
  60. package/payload/premium-plugins/real-agency/plugins/estate-sales/.claude-plugin/plugin.json +1 -1
  61. package/payload/premium-plugins/real-agency/plugins/estate-sales/PLUGIN.md +27 -13
  62. package/payload/premium-plugins/real-agency/plugins/estate-sales/skills/chase-progression/SKILL.md +107 -0
  63. package/payload/premium-plugins/real-agency/plugins/estate-sales/skills/risk-scorer/SKILL.md +42 -0
  64. package/payload/premium-plugins/real-agency/plugins/leads/.claude-plugin/plugin.json +1 -1
  65. package/payload/premium-plugins/real-agency/plugins/leads/PLUGIN.md +24 -10
  66. package/payload/premium-plugins/real-agency/plugins/leads/skills/chain-progression-tracker/SKILL.md +51 -0
  67. package/payload/premium-plugins/real-agency/plugins/leads/skills/diary-builder/SKILL.md +38 -0
  68. package/payload/premium-plugins/real-agency/plugins/leads/skills/enquiry-triage/SKILL.md +36 -0
  69. package/payload/premium-plugins/real-agency/plugins/leads/skills/morning-round/SKILL.md +72 -0
  70. package/payload/premium-plugins/real-agency/plugins/listings/.claude-plugin/plugin.json +1 -1
  71. package/payload/premium-plugins/real-agency/plugins/listings/PLUGIN.md +43 -12
  72. package/payload/premium-plugins/real-agency/plugins/listings/skills/comparable-finder/SKILL.md +52 -0
  73. package/payload/premium-plugins/real-agency/plugins/listings/skills/epc-checker/SKILL.md +38 -0
  74. package/payload/premium-plugins/real-agency/plugins/listings/skills/listing-copy-writer/SKILL.md +55 -0
  75. package/payload/premium-plugins/real-agency/plugins/listings/skills/local-market-stats/SKILL.md +33 -0
  76. package/payload/premium-plugins/real-agency/plugins/listings/skills/new-instruction/SKILL.md +78 -0
  77. package/payload/premium-plugins/real-agency/plugins/listings/skills/particulars-builder/SKILL.md +48 -0
  78. package/payload/premium-plugins/real-agency/plugins/listings/skills/portal-launch-scheduler/SKILL.md +49 -0
  79. package/payload/premium-plugins/real-agency/plugins/listings/skills/pricing-scenario-builder/SKILL.md +35 -0
  80. package/payload/premium-plugins/real-agency/plugins/listings/skills/supplier-booker/SKILL.md +39 -0
  81. package/payload/premium-plugins/real-agency/plugins/listings/skills/talk-track-composer/SKILL.md +36 -0
  82. package/payload/premium-plugins/real-agency/plugins/listings/skills/terms-of-business-drafter/SKILL.md +54 -0
  83. package/payload/premium-plugins/real-agency/plugins/listings/skills/valuation-prep/SKILL.md +69 -0
  84. package/payload/premium-plugins/real-agency/plugins/loop/PLUGIN.md +20 -0
  85. package/payload/premium-plugins/real-agency/plugins/loop/skills/compliance-flag-checker/SKILL.md +53 -0
  86. package/payload/premium-plugins/real-agency/plugins/loop/skills/priority-ranker/SKILL.md +40 -0
  87. package/payload/premium-plugins/real-agency/plugins/loop/skills/tone-matched-drafter/SKILL.md +53 -0
  88. package/payload/premium-plugins/real-agency/plugins/loop/skills/variance-narrator/SKILL.md +50 -0
  89. package/payload/premium-plugins/real-agency/plugins/loop/skills/vendor-research/SKILL.md +54 -0
  90. package/payload/server/server.js +73 -162
@@ -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": "Estate agency sales cycle prospect qualification, closing techniques, negotiation frameworks, and sales progression tracking.",
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,48 @@
1
1
  ---
2
2
  name: real-agency-sales
3
- description: "Estate agency sales cycle prospect qualification, closing techniques, negotiation frameworks, and sales progression tracking."
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
5
13
  always: false
6
14
  metadata: {"platform":{"optional":true,"embed":["public","admin"]}}
7
15
  ---
8
16
 
9
- # Real Agency Sales
17
+ # Real Agency, Chase Progression and Sales
10
18
 
11
- Four skills covering the full sales cycle from discovery through to completion tracking.
19
+ Seven skills covering chain progression (the headline workflow) and the existing sales cycle.
12
20
 
13
21
  ## When to Activate
14
22
 
15
- The user is working on prospect qualification, closing deals, handling objections, protecting price, or tracking transactions from sale agreed to completion.
23
+ The user is working on stalled deals, chain progression, fall-through risk, sale-agreed deals, or any of the existing sales-cycle skills.
16
24
 
17
25
  ## Skills
18
26
 
19
- | Skill | Purpose |
20
- |-------|---------|
21
- | `sales-discovery` | Qualify prospects through structured discovery needs, authority, motivation, readiness |
22
- | `sales-closer` | Detect buying signals and close using Serhant emotional stages, Push/Pull/Persist |
23
- | `sales-negotiation` | Frame value, protect price, navigate objections — Voss, Panos, Phil Jones |
24
- | `sales-progression` | Track transactions from sale agreed through to completion |
27
+ | Skill | Owner specialist | Purpose |
28
+ |-------|------------------|---------|
29
+ | `chase-progression` | negotiator | Master workflow: daily ranked stalled list with per-message approval |
30
+ | `risk-scorer` | negotiator | Computes fall-through risk score (used inside chase-progression) |
31
+ | `sales-discovery` | negotiator | Qualify prospects |
32
+ | `sales-closer` | negotiator | Detect buying signals and close |
33
+ | `sales-negotiation` | negotiator | Frame value, protect price |
34
+ | `sales-progression` | negotiator | Track transactions from sale agreed through to completion |
35
+ | `negotiation` | negotiator | Negotiation framework (existing) |
25
36
 
26
37
  ## Tools Used
27
38
 
28
39
  No MCP server. Skills operate via existing platform tools:
29
- - `memory-search` — retrieve domain knowledge from the knowledge base
30
- - `render-component` present structured choices during interactions
40
+
41
+ - `memory-search` for domain knowledge
42
+ - `render-component` for structured choices
43
+ - `profile-read` and `profile-update` for the customisation profile
44
+ - `action-pending`, `action-approve`, `action-reject`, `action-edit` for the per-message approval gates in chase-progression
31
45
 
32
46
  ## References
33
47
 
34
- Domain knowledge files loaded on demand by each skill. See individual skill files for their specific reference listings.
48
+ Domain knowledge files loaded on demand by each skill.
@@ -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": "Lead generation and pipeline building systematic nurturing, database reactivation, and proactive prospecting for UK estate agents.",
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: "Lead generation and pipeline building systematic nurturing, database reactivation, and proactive prospecting for UK estate agents."
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 Lead Generation
16
+ # Real Agency, Lead Generation and Morning Round
10
17
 
11
- Two skills covering pipeline building and database reactivation.
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
- | `lead-nurturing` | Systematic follow-up and pipeline warming Serhant Three F's, HOT/WARM/COLD cadence |
22
- | `prospecting` | Database reactivation, lead generation, campaign chaining, proactive outreach |
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
- - `memory-search` — retrieve domain knowledge from the knowledge base
28
- - `render-component` present structured choices during interactions
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
 
@@ -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)