canada-memo
When the user's message starts with "Canada" (case-insensitive), generate a full Ontario PI Case Assessment Memo from the case_stressor corpus and return it verbatim. This is the primary handler for Canadian fact patterns — DO NOT ask clarifying questions first; run the memo and let the lawyer react.
canada-memo
The case_stressor pipeline produces a structured PI Case Assessment Memo backed by 340 real Ontario PI decisions. This skill is the agent's hook into that pipeline.
Trigger
Use this skill whenever the user's message starts with the word "Canada" / "canada" / "CANADA" (any case), with or without a comma after.
Examples that trigger:
Canada, my child was playing soccer outside Target and got hurtcanada slip and fall on icy sidewalk in TorontoCANADA: 55yo woman rear-ended on highway, soft tissue, treatment gapCanada — bicyclist hit by SUV in Ottawa
How to call
Strip the leading Canada (and any leading punctuation/whitespace) to get
the fact pattern, then call:
from openclaw.skills.canada_memo.client import generate_memo
memo_text = generate_memo(facts)
Or via shell from within the OpenClaw harness:
cd ~/Specter && python3 -m openclaw.skills.canada_memo.client \
"my child was playing soccer outside Target and got hurt"
The function returns a single markdown string. Print it verbatim as the
WhatsApp reply — do not summarize, do not paraphrase, do not add headers.
The memo already contains its own structure (PI CASE ASSESSMENT MEMO …).
What NOT to do
- Do not ask clarifying questions before running the memo. The corpus is fact-pattern-indexed; a thin query still returns useful comparables. The memo itself flags "facts not provided" gaps inside the WEAKEST POINTS section — let the memo do the asking.
- Do not call
harvester_query.searchfor Canadian queries that match this trigger — that would route to the small Canada vector slice without running the full memo (stats + Claude analysis + 3 key precedents). - Do not invent precedents. Everything the memo cites comes from real
CanLII data already in
case_stressor/chroma_db.
After the memo
The memo ends with:
TYPE "what if [changed fact]?" TO STRESS-TEST YOUR CASE
If the user's NEXT message starts with what if, route to the
/canada/whatif endpoint with the prior facts as original_facts and the
new message as modified_facts. (Future enhancement — for now the agent
can re-run the baseline memo with adjusted filters.)
Latency
The memo takes ~10–25 seconds because it embeds the query via Voyage and asks Claude Opus to write the analysis from the retrieved cases. Set the WhatsApp typing indicator if the surface supports it; otherwise just let the memo land.
Hard rules — no fabrication
The memo is grounded in the case_stressor query result. Don't:
- Append your own "additional thoughts" after the memo.
- Invent a damages range outside what the memo states.
- Claim a holding the memo doesn't.
If the user wants more detail on a single cited case, call
caselaw_query with that citation — that's the next-layer skill.
No additional documents ship with this skill.