call-log-billing
Turn the daily SMS Backup & Restore call-log XML into a per-matter billable call table. Use when the user mentions the call log, calls-*.xml, billing calls, or phone time for Clio.
Source: .opencode/skills/call-log-billing/SKILL.md — site rebuilt 2026-09-05.
Call Log Billing¶
Parse an SMS Backup & Restore calls-*.xml backup for one calendar month, drop non-billable
calls, map callers to Clio matters, and emit per-matter tables plus a Clio-ready time-entry draft.
Scope and hard rules¶
- Source file is given explicitly (backups land daily, e.g.
G:\My Drive\calls-20260831225836.xml). Never guess which backup is latest — ask, or take the path as an argument. - Drop all missed calls (
type="3"). Keep In/Out/Rejected with their durations as-is. - Always drop: Morag Black, Mum, Dad, Parents House (family/personal).
- Bill ONLY contacts in CONTACT_TO_MATTER below. Everything else is reported under UNMAPPED for review — never assigned to a matter by guessing.
- Never invent Clio matter numbers, descriptions, or statuses. New mappings are confirmed
by the user (via the
clioskill, read-only) before entering the map. - Durations are verbatim from the XML (
durationseconds). Hours = seconds / 3600.
Contact → matter map (user-confirmed)¶
| XML contact_name | Clio matter | Clio id |
|---|---|---|
| Brian Barr | 00975-HJV Consultants Limited | 2660944 |
| Stuart Wilson | 00972-Wilson Developments (Scotland) Ltd | 2646160 |
| Monty Langmuir | 01459-Langmuir and Hay | 9376841 |
| Richard Corrigan Irs | 01403-Insulated Render Systems (Scotland) Ltd | 8335294 |
Ignore list (never billed): Marcus Wallace, David Wallace, Josh Princess.
Procedure¶
- Run
tools/call_log_billing.py <xml-path> --month YYYY-MM. - Optional verification via the
clioskill: check each mapped matter is still Open (get /v4/matters/<id>), and resolve any UNMAPPED caller withcontacts --query "<surname>"before adding it to the map. - Report: one table per matter (Date | Dir | Duration), per-matter totals in seconds/minutes/decimal hours, a combined time-entry draft, then UNMAPPED (calls + total time left out) so nothing is silently dropped.
Clio time entries — read-only limit¶
The firm's Clio integration is read-only (read scopes only; the client issues GETs). This skill never posts time. It produces the draft table below for manual entry (or CSV import) — Date | Matter | Description | Hours:
- Hours per call = duration / 3600, 2dp. August 2026 example totals: 00975 = 0.45h, 00972 = 1.10h, 01459 = 0.39h, 01403 = 0.13h.
Base directory for this skill: .opencode/skills/call-log-billing