@rubytech/create-maxy-code 0.1.265 → 0.1.267
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -0
- package/package.json +1 -1
- package/payload/platform/lib/models/dist/index.d.ts +1 -1
- package/payload/platform/lib/models/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/models/dist/index.js +5 -2
- package/payload/platform/lib/models/dist/index.js.map +1 -1
- package/payload/platform/lib/models/src/index.ts +5 -2
- package/payload/platform/neo4j/schema.cypher +13 -0
- package/payload/platform/package-lock.json +16 -0
- package/payload/platform/package.json +3 -2
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js +9 -9
- package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-search.test.js.map +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +11 -3
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +2 -2
- package/payload/platform/plugins/business-assistant/PLUGIN.md +1 -5
- package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
- package/payload/platform/plugins/docs/references/voice-mirror-guide.md +9 -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 +36 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +10 -0
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +59 -0
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts +19 -0
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js +31 -0
- package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js.map +1 -0
- package/payload/platform/services/whatsapp-channel/package.json +20 -0
- package/payload/platform/templates/account.json +1 -1
- package/payload/platform/templates/specialists/agents/content-producer.md +1 -1
- package/payload/platform/templates/specialists/agents/librarian.md +1 -1
- package/payload/platform/templates/specialists/agents/research-assistant.md +1 -1
- package/payload/premium-plugins/venture-studio/skills/investor-data-room/SKILL.md +1 -1
- package/payload/premium-plugins/writer-craft/PLUGIN.md +4 -4
- package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js +44 -9
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +31 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js +28 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts +7 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +93 -44
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts +7 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js +14 -3
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts +22 -8
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +93 -84
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +18 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +32 -3
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -1
- package/payload/premium-plugins/writer-craft/mcp/scripts/smoke.mjs +35 -2
- package/payload/premium-plugins/writer-craft/mcp/src/index.ts +52 -10
- package/payload/premium-plugins/writer-craft/mcp/src/lib/voice-corpus.ts +39 -0
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +108 -44
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-ingest-session-text.ts +1 -0
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +24 -4
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +136 -102
- package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +45 -3
- package/payload/premium-plugins/writer-craft/skills/voice-mirror/SKILL.md +34 -23
- package/payload/server/{chunk-SOLVVUST.js → chunk-W4EM7RK4.js} +2 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +345 -14
- package/payload/platform/plugins/business-assistant/references/quote-engine.md +0 -122
- package/payload/platform/plugins/business-assistant/references/quote-generation.md +0 -94
- package/payload/platform/plugins/business-assistant/references/quoting.md +0 -85
- package/payload/platform/plugins/business-assistant/skills/pricing-method/SKILL.md +0 -78
- package/payload/platform/plugins/business-assistant/skills/pricing-method/references/learning-from-history.md +0 -51
- package/payload/platform/plugins/business-assistant/skills/pricing-method/references/maintenance.md +0 -32
- package/payload/platform/plugins/business-assistant/skills/pricing-method/references/manual-definition.md +0 -42
- package/payload/platform/plugins/business-assistant/skills/pricing-method/references/verification.md +0 -37
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# Quoting
|
|
2
|
-
|
|
3
|
-
This reference is the **lightweight** quote path: read a handwritten or spoken quote, format it
|
|
4
|
-
cleanly, and send it as a WhatsApp message (or a one-off PDF on request).
|
|
5
|
-
|
|
6
|
-
When the operator prices a job from a captured pricing method and issues a set of documents that must
|
|
7
|
-
reconcile to one engine total — an internal margin-bearing view, a client breakdown that withholds
|
|
8
|
-
cost and margin, and a branded client quote — use `references/quote-generation.md` instead.
|
|
9
|
-
|
|
10
|
-
## Where the operator's pricing comes from
|
|
11
|
-
|
|
12
|
-
The operator's priceable items, quantity rules, pricing rules, and roll-up are not held here. They are
|
|
13
|
-
captured and maintained by the `pricing-method` skill (invoke it via the Skill tool — see PLUGIN.md).
|
|
14
|
-
That skill is the single source of the operator's own method; the quote flow consumes it. Because the
|
|
15
|
-
method records which items are priced by a standing rule and which by per-job judgement, the quote flow
|
|
16
|
-
applies the standing-rule items itself and asks the operator only about the judgement-priced lines.
|
|
17
|
-
|
|
18
|
-
## Photo-to-Quote (Handwritten)
|
|
19
|
-
|
|
20
|
-
1. Business owner sends a photo of their handwritten quote
|
|
21
|
-
2. Read the handwriting using vision
|
|
22
|
-
3. Format into a clean, professional quote:
|
|
23
|
-
- Customer name and address
|
|
24
|
-
- Description of work
|
|
25
|
-
- Labour cost (itemised if multiple tasks)
|
|
26
|
-
- Parts (if applicable — customers may buy parts directly)
|
|
27
|
-
- Materials markup (if set in memory)
|
|
28
|
-
- Total
|
|
29
|
-
- Validity period (default: 30 days)
|
|
30
|
-
- Payment terms
|
|
31
|
-
4. Send back to business owner for approval: "Here's the formatted quote. Shall I send it to [customer]?"
|
|
32
|
-
5. On approval → send to customer via WhatsApp
|
|
33
|
-
|
|
34
|
-
## Quote from Conversation
|
|
35
|
-
|
|
36
|
-
1. Business owner tells you the details verbally (text or voice)
|
|
37
|
-
2. Format as above
|
|
38
|
-
3. Confirm and send
|
|
39
|
-
|
|
40
|
-
## Priced Quote (Computed from the Operator's Method)
|
|
41
|
-
|
|
42
|
-
The two flows above format a quote the owner has **already priced** — they read the figures off a photo
|
|
43
|
-
or out of a conversation. When the numbers instead have to be **computed** from the owner's own pricing
|
|
44
|
-
method — measured or counted work priced item by item and rolled up to a total the way this owner
|
|
45
|
-
prices — use `references/quote-engine.md`.
|
|
46
|
-
|
|
47
|
-
That reference is the compute core: it generates a bespoke pricing engine from the owner's captured
|
|
48
|
-
method and runs it on the job to produce line prices, group subtotals, and the final total,
|
|
49
|
-
with an observability log and a check against the owner's own past quotes. It carries none of the
|
|
50
|
-
owner's items, rates, or rules — those are the owner's captured data. Reach for it whenever the owner
|
|
51
|
-
hands over measurements or quantities rather than a finished price. If there is no captured method yet,
|
|
52
|
-
capture it first rather than inventing rates here.
|
|
53
|
-
|
|
54
|
-
## Quote Formatting Template
|
|
55
|
-
|
|
56
|
-
Quotes sent to customers should be clean, readable, and professional — but delivered as a WhatsApp message (not a PDF, unless the business owner requests one).
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
**Quote for [Customer Name]**
|
|
60
|
-
[Business Name] — [Date]
|
|
61
|
-
|
|
62
|
-
**Description of work:**
|
|
63
|
-
[Itemised list of work to be done]
|
|
64
|
-
|
|
65
|
-
**Cost breakdown:**
|
|
66
|
-
- Labour: £[amount]
|
|
67
|
-
- Parts: £[amount] (if applicable)
|
|
68
|
-
- Materials: £[amount] (if applicable)
|
|
69
|
-
- **Total: £[amount]**
|
|
70
|
-
|
|
71
|
-
Valid for 30 days.
|
|
72
|
-
Payment terms: [from memory, default "on completion"]
|
|
73
|
-
|
|
74
|
-
Any questions, just reply to this message!
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
For formal PDF quotes, use the same workflow as invoicing — write HTML, `browser-navigate` to it, render with `browser-pdf-save`, then send as attachment. See `references/invoicing.md` for the PDF workflow.
|
|
78
|
-
|
|
79
|
-
## Quote Follow-Up
|
|
80
|
-
|
|
81
|
-
- If no response after configurable days (check memory for `quote_followup_days`, default 3): send a gentle nudge to the customer
|
|
82
|
-
> "Hi [customer]! Just following up on the quote I sent over for [work description]. Any questions or shall I go ahead and book it in?"
|
|
83
|
-
- If no response after escalation period (check memory for `quote_escalate_days`, default 7): notify business owner and ask if they want to chase or drop it
|
|
84
|
-
- Store outcome in memory: accepted / declined / no response
|
|
85
|
-
- Update contact record status via `contact_update`
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pricing-method
|
|
3
|
-
description: Use when an operator's own way of pricing jobs needs to become something the assistant can apply — onboarding a new business's pricing, building or editing their priceable items and rules by hand, re-learning their method from past quotes, or checking that the captured method reproduces their past quotes. Triggers include "set up my pricing", "learn how I quote", "add an item / change a rate", "my method's quotes don't match my past jobs", and any work that produces or maintains the method that the quote-generation flow consumes. Not for pricing or troubleshooting a single live quote — that is the quote-generation flow.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Pricing method
|
|
7
|
-
|
|
8
|
-
This skill ends with a correct, machine-usable representation of **one operator's own** pricing
|
|
9
|
-
method: the things they price (what each is, how it is quantified, how it is priced), the rules that
|
|
10
|
-
roll line prices up to a total, and the documents they issue. The quote-generation flow consumes that
|
|
11
|
-
method; this skill is the only place it is built and maintained.
|
|
12
|
-
|
|
13
|
-
## Principle: the skill carries no business content
|
|
14
|
-
|
|
15
|
-
This skill ships no item catalogue, no units, no rates, no margin, overhead, contingency or tax
|
|
16
|
-
values, no roll-up formula, no document templates — **and no predetermined schema or data shape.** It
|
|
17
|
-
is a procedure for eliciting and encoding an operator's *own* method. The same skill must onboard a
|
|
18
|
-
trade that prices by the square metre, a caterer who prices per head in tiers, and a printer with
|
|
19
|
-
per-unit price breaks — businesses with nothing in common. Everything that varies between businesses
|
|
20
|
-
is captured as that operator's data, never written into this skill.
|
|
21
|
-
|
|
22
|
-
The operator's structure is **discovered, not imposed.** Capture it faithfully wherever it diverges
|
|
23
|
-
from any shape you might assume — an operator whose margin differs by category, who applies
|
|
24
|
-
adjustments in an unusual order, who quantifies one item from a measurement and another by eye. If you
|
|
25
|
-
find yourself forcing their method into a fixed template, the template is the defect. There is no
|
|
26
|
-
canonical set of fields; there is only what *their* method actually contains.
|
|
27
|
-
|
|
28
|
-
## Building, verifying, and maintaining the method
|
|
29
|
-
|
|
30
|
-
Two paths build the method:
|
|
31
|
-
|
|
32
|
-
- **Learn from history** — derive the method from the operator's own past pricing artifacts. See
|
|
33
|
-
[references/learning-from-history.md](references/learning-from-history.md).
|
|
34
|
-
- **Define manually** — build or edit the method by hand for an operator with no usable history, or
|
|
35
|
-
making an adjustment. See [references/manual-definition.md](references/manual-definition.md).
|
|
36
|
-
|
|
37
|
-
Two activities keep it correct:
|
|
38
|
-
|
|
39
|
-
- **Verify against the operator's own outputs** — the method is accepted only when it reproduces that
|
|
40
|
-
operator's own past quotes to their own precision. See
|
|
41
|
-
[references/verification.md](references/verification.md).
|
|
42
|
-
- **Maintain** — re-learning or editing preserves prior manual adjustments and re-verifies green. See
|
|
43
|
-
[references/maintenance.md](references/maintenance.md).
|
|
44
|
-
|
|
45
|
-
**Onboarding** a new operator is a build path (learn from history, or define by hand) followed
|
|
46
|
-
*always* by verification: the method is not onboarded until it reproduces their past jobs. A learned
|
|
47
|
-
method and a hand-built method are the same kind of thing in the same captured form; nothing downstream
|
|
48
|
-
should be able to tell which path produced an entry.
|
|
49
|
-
|
|
50
|
-
## Standing rule vs per-job judgement
|
|
51
|
-
|
|
52
|
-
For every priceable thing, the method records whether the operator prices it by a **standing rule**
|
|
53
|
-
(the same rule applies every time — a rate, a tier, a formula they always use) or by **per-job
|
|
54
|
-
judgement** (they decide the price afresh each job). This distinction is load-bearing: it is what lets
|
|
55
|
-
the quote flow stay quiet about standing-rule items and ask the operator only about judgement-priced
|
|
56
|
-
ones. Derive the classification from the operator's history — an item whose price moves
|
|
57
|
-
unpredictably across past jobs is judgement-priced; one that follows a consistent rule is not — or
|
|
58
|
-
take it from the operator directly when defining by hand.
|
|
59
|
-
|
|
60
|
-
## Observability
|
|
61
|
-
|
|
62
|
-
Under-capture that hides until it produces a wrong quote is the failure this skill exists to prevent.
|
|
63
|
-
Two things are always visible:
|
|
64
|
-
|
|
65
|
-
- **A capture log.** Every item, rule, and dial derived is logged with where it came from. Just as
|
|
66
|
-
important, every part of a source artifact that could **not** be confidently encoded — skipped,
|
|
67
|
-
ambiguous, or guessed — is logged as such, so gaps are seen at onboarding, not discovered later in a
|
|
68
|
-
wrong quote.
|
|
69
|
-
- **A reconciliation report.** The standing check is reproduction against the operator's own history:
|
|
70
|
-
per past job, the **delta** between the reproduced figures and the operator's own, at line, group,
|
|
71
|
-
and final level — a delta, never a boolean. The verification pillar owns why and how
|
|
72
|
-
([references/verification.md](references/verification.md)).
|
|
73
|
-
|
|
74
|
-
## Scope
|
|
75
|
-
|
|
76
|
-
This skill produces and maintains the method only. The compute that applies the method to a job, and
|
|
77
|
-
the documents that present the result, are the quote-generation flow — separate work. This skill owns
|
|
78
|
-
*what the operator's method is*; it does not own pricing a live job or rendering a quote.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Learning the method from history
|
|
2
|
-
|
|
3
|
-
The operator has been pricing jobs for years. That method already exists — it lives in their past
|
|
4
|
-
quotes, estimates, invoices, and spreadsheets. This pillar derives it from those artifacts so the
|
|
5
|
-
assistant can apply the same method going forward. The source is whatever the operator actually used:
|
|
6
|
-
a workbook, a folder of PDFs, photographed handwritten estimates, a price list. Work from what they
|
|
7
|
-
have.
|
|
8
|
-
|
|
9
|
-
## What a complete derivation captures
|
|
10
|
-
|
|
11
|
-
From the operator's own artifacts, recover four things, and nothing the artifacts do not show:
|
|
12
|
-
|
|
13
|
-
- **The priceable things.** Each distinct thing the operator charges for. Two lines that are the same
|
|
14
|
-
priced thing under different wording are one method entry, not two — collapse repeated instances of
|
|
15
|
-
the same thing across jobs into a single entry, and let the variation across those instances tell you
|
|
16
|
-
how the thing is quantified and priced.
|
|
17
|
-
- **How each is quantified.** For each thing, how a job turns into a quantity. Some quantities are
|
|
18
|
-
derived from a measurement the operator takes (a length, an area, a volume, a weight); some are
|
|
19
|
-
counted directly (how many doors, heads, units); some are simply one of a thing. Read which it is
|
|
20
|
-
from how the past jobs got their numbers — do not assume a unit.
|
|
21
|
-
- **How each is priced.** The rule that turns a quantity into a line price. It may be a rate per unit,
|
|
22
|
-
a tiered or banded price, a price that steps at break quantities, a fixed amount, or something else
|
|
23
|
-
entirely. Capture the form the operator's history actually shows; do not flatten everything into
|
|
24
|
-
"rate × quantity" if their numbers say otherwise.
|
|
25
|
-
- **How lines roll up.** The sequence the operator applies above the line items to reach the total —
|
|
26
|
-
any markups, overheads, contingencies, discounts, and taxes, **in the order their arithmetic
|
|
27
|
-
reveals.** Do not assume a markup-then-overhead-then-tax chain; discover the operator's actual
|
|
28
|
-
sequence, including adjustments that apply to only part of the work.
|
|
29
|
-
|
|
30
|
-
## Standing rule vs per-job judgement
|
|
31
|
-
|
|
32
|
-
Classify each priceable thing as you derive it (the rule and why it matters are in
|
|
33
|
-
[../SKILL.md](../SKILL.md)). On this path the signal is **variance across the operator's own jobs**: a
|
|
34
|
-
price that follows a consistent rule from job to job is a standing rule; one that moves unpredictably
|
|
35
|
-
is priced by judgement.
|
|
36
|
-
|
|
37
|
-
## Faithfulness over tidiness
|
|
38
|
-
|
|
39
|
-
The aim is the operator's method as it really is, including its irregularities. If their margin
|
|
40
|
-
differs by category, capture that. If one adjustment applies before tax and another after, capture
|
|
41
|
-
that. A clean, regular method that does **not** reproduce their past quotes is wrong; an irregular one
|
|
42
|
-
that does is right. Reproduction is the test (see [verification.md](verification.md)).
|
|
43
|
-
|
|
44
|
-
## Provenance and under-capture are recorded
|
|
45
|
-
|
|
46
|
-
Every derived element carries where it came from — which artifact, which job. And every part of a
|
|
47
|
-
source that could not be confidently encoded is logged as skipped, ambiguous, or guessed, rather than
|
|
48
|
-
silently dropped or invented. A derivation that quietly omits a section the operator charges for will
|
|
49
|
-
surface later as a quote that is wrong by exactly that section; logging the gap at onboarding is what
|
|
50
|
-
prevents that. Under-capture you can see is a question to ask the operator; under-capture you cannot
|
|
51
|
-
see is a future wrong quote.
|
package/payload/platform/plugins/business-assistant/skills/pricing-method/references/maintenance.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Maintaining the method
|
|
2
|
-
|
|
3
|
-
A pricing method is not set once. Rates change, items come and go, the operator refines how they
|
|
4
|
-
charge, and a better history may arrive later that is worth re-learning from. Maintenance keeps the
|
|
5
|
-
method correct across those changes without losing what was already established.
|
|
6
|
-
|
|
7
|
-
## Re-learning preserves prior manual adjustments
|
|
8
|
-
|
|
9
|
-
When the method is re-learned from history — because new artifacts arrived, or the first derivation
|
|
10
|
-
was incomplete — the operator's prior manual adjustments are preserved, not overwritten. An operator
|
|
11
|
-
who corrected a derived rate by hand, or added an item the artifacts missed, must not have that
|
|
12
|
-
correction silently reverted by the next derivation. A re-learn that would drop a prior manual
|
|
13
|
-
adjustment is a failure: surface the conflict to the operator and let them decide, rather than quietly
|
|
14
|
-
choosing the freshly-derived value.
|
|
15
|
-
|
|
16
|
-
This is why provenance matters (see [learning-from-history.md](learning-from-history.md)): an element
|
|
17
|
-
the operator set by hand is distinguishable from one derived from an artifact, so a re-learn knows
|
|
18
|
-
which it must not clobber.
|
|
19
|
-
|
|
20
|
-
## Every change re-verifies
|
|
21
|
-
|
|
22
|
-
Any maintenance pass — a re-learn, an added or retired item, a changed rate or roll-up step — is
|
|
23
|
-
followed by re-running verification against the operator's own history (see
|
|
24
|
-
[verification.md](verification.md)). The reconciliation must still be green to the operator's
|
|
25
|
-
precision. A change that is recorded but breaks reproduction of a past job is not done; either the
|
|
26
|
-
change is wrong, or a past fixture is no longer representative and the operator confirms which.
|
|
27
|
-
|
|
28
|
-
## The outcome, not a storage scheme
|
|
29
|
-
|
|
30
|
-
Maintenance is defined by two outcomes — prior manual adjustments survive, and reproduction stays
|
|
31
|
-
green — not by any particular way of versioning or storing the method. How the method is held is the
|
|
32
|
-
operator's data; what maintenance guarantees is preservation and re-verification.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Defining and editing the method by hand
|
|
2
|
-
|
|
3
|
-
Not every operator hands over a usable history, and every operator eventually changes how they price.
|
|
4
|
-
This pillar builds or edits the method directly with the operator, by conversation, producing the same
|
|
5
|
-
captured method that learning from history produces. A method built this way and a method learned from
|
|
6
|
-
artifacts are indistinguishable to anything downstream — same kind of thing, same captured form.
|
|
7
|
-
|
|
8
|
-
## What the operator must be able to express
|
|
9
|
-
|
|
10
|
-
Building by hand means letting the operator state, in their own terms, the same four things a
|
|
11
|
-
derivation recovers:
|
|
12
|
-
|
|
13
|
-
- **A priceable thing** — something they charge for, named the way they name it.
|
|
14
|
-
- **How it is quantified** — whether its quantity comes from a measurement they take, a count they
|
|
15
|
-
enter, or is simply one of a thing.
|
|
16
|
-
- **How it is priced** — the rule that turns its quantity into a line price, in whatever form their
|
|
17
|
-
pricing takes (a rate, a tier, a price break, a fixed amount, or otherwise).
|
|
18
|
-
- **How lines roll up** — the adjustments and taxes they apply above the lines, in the order they
|
|
19
|
-
apply them, and the dials those adjustments use (a markup percentage, a day rate, a tax rate).
|
|
20
|
-
|
|
21
|
-
There is no fixed set of fields to fill and no form to complete. Capture what the operator's method
|
|
22
|
-
contains; if their pricing for one thing needs something another thing's does not, the method holds
|
|
23
|
-
both. Forcing every entry into the same template is the same defect here as it is when learning from
|
|
24
|
-
history.
|
|
25
|
-
|
|
26
|
-
## Standing rule vs per-job judgement
|
|
27
|
-
|
|
28
|
-
Classify each thing here too (the rule and why it matters are in [../SKILL.md](../SKILL.md)). On this
|
|
29
|
-
path the signal is simplest: **ask the operator directly** whether each thing is priced the same way
|
|
30
|
-
every time or decided per job.
|
|
31
|
-
|
|
32
|
-
## A hand-defined item is immediately quotable; a hand-edited rule takes effect
|
|
33
|
-
|
|
34
|
-
The point of building by hand is that it works at once. A priceable thing the operator just defined is
|
|
35
|
-
available to a quote with no further step, and a rule the operator just changed governs the next quote
|
|
36
|
-
that uses it. An edit that is recorded but does not change what the next quote does is not an edit.
|
|
37
|
-
|
|
38
|
-
## Editing is a first-class path, not a fallback
|
|
39
|
-
|
|
40
|
-
Editing an existing method — adding a thing, retiring one, changing a rate or a roll-up step — runs
|
|
41
|
-
through this pillar, and through [maintenance.md](maintenance.md) for preserving prior adjustments and
|
|
42
|
-
re-verifying. A manual edit must survive a later re-learn from history; see maintenance.
|
package/payload/platform/plugins/business-assistant/skills/pricing-method/references/verification.md
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Verifying the method against the operator's own outputs
|
|
2
|
-
|
|
3
|
-
A captured method is a claim: "this is how the operator prices." The claim is accepted only when it
|
|
4
|
-
reproduces that operator's own past quotes to their own precision. A method that parses cleanly but
|
|
5
|
-
does not reproduce their history is not accepted. Reproduction of the operator's history is the
|
|
6
|
-
acceptance signal — the only one.
|
|
7
|
-
|
|
8
|
-
## The fixtures are the operator's own jobs
|
|
9
|
-
|
|
10
|
-
Verification runs the captured method against the operator's past jobs and compares the result to what
|
|
11
|
-
the operator actually quoted for those jobs. Those past jobs, with their own figures, are the
|
|
12
|
-
fixtures. They are supplied per operator and are never built into this skill — this skill carries no
|
|
13
|
-
business's numbers, so it carries no verification fixtures of its own. Pick jobs that exercise the
|
|
14
|
-
range of the method: the items, the quantity forms, the pricing forms, and the roll-up the operator's
|
|
15
|
-
work actually uses.
|
|
16
|
-
|
|
17
|
-
## The report is a delta, never a boolean
|
|
18
|
-
|
|
19
|
-
For each past job, report the difference between the reproduced figures and the operator's own, at
|
|
20
|
-
three levels: each line, each group the operator subtotals, and the final total. "Matches / does not
|
|
21
|
-
match" is not enough — it hides which line is wrong and by how much, which is exactly the information
|
|
22
|
-
needed to find the error in the captured method. A method is accepted when every delta is within the
|
|
23
|
-
operator's own precision; where a delta is outside it, the delta points at the entry to fix.
|
|
24
|
-
|
|
25
|
-
## What a failing reproduction tells you
|
|
26
|
-
|
|
27
|
-
A delta is a finding about the **method**, not a tolerance to widen. A wrong line total means that
|
|
28
|
-
item's quantity rule or pricing rule was captured wrong. A right set of lines with a wrong final total
|
|
29
|
-
means the roll-up sequence or a dial was captured wrong. Fix the captured method and re-run; do not
|
|
30
|
-
adjust the acceptance threshold to make a wrong method pass.
|
|
31
|
-
|
|
32
|
-
## Where the figures come from
|
|
33
|
-
|
|
34
|
-
The compute that turns the captured method plus a job into reproduced figures, and the rendered
|
|
35
|
-
documents those figures appear in, are the quote-generation flow — separate work that consumes the
|
|
36
|
-
method this skill produces. This pillar owns the acceptance discipline: which jobs to reproduce, that
|
|
37
|
-
the comparison is a per-level delta, and that reproduction to the operator's precision is the bar.
|