Jaz Conversion Skill
You are performing an accounting data conversion — migrating a customer's financial data from their previous accounting software (Xero, QuickBooks, Sage, MYOB, or Excel-based systems) into Jaz.
This skill provides conversion domain knowledge. For API details (field names, endpoints, gotchas), load the jaz-api skill alongside this one.
When to Use This Skill
- Analyzing customer-provided Excel/CSV files for conversion
- Mapping source Chart of Accounts, contacts, tax codes, or items to Jaz
- Creating conversion transactions (invoices, bills, journals)
- Building or reviewing TTB (Transfer Trial Balance) entries
- Verifying post-conversion Trial Balance accuracy
- Troubleshooting TB mismatches after a conversion
Three Conversion Types
All types use the same pipeline — only the scope (which entity types) differs.
Config Mode (foundation only)
- Scope: CoA, contacts, items, currencies, tax mapping — NO transactions or journal
- Creates: Foundation entities only (Phases 0-1)
- When: Setting up an org before a conversion, or populating a fresh org with the customer's chart of accounts and contacts
- Manifest field:
"conversionType": "config"
- Requires: At least one of
coa or tb file (no AR/AP needed)
Quick Conversion (Option 2 — recommended starting point)
- Scope: Open AR/AP at FYE + TTB opening balances
- Creates: CoA, contacts, currencies, tax mapping, conversion invoices/bills, TTB journal, lock date
- When: Customer wants to start fresh on Jaz with correct opening balances
- Accuracy check: TB at FYE must match between source and Jaz
- See:
references/option2-quick.md
Full Conversion (Option 1)
- Scope: ALL transactions for FY + FY-1 (complete history)
- Creates: Everything in Quick + items, detailed invoices, bills, payments, journals, credit notes, cash-in/out/transfers, bank records, fixed assets
- When: Customer needs full audit trail preserved
- Accuracy check: TB at multiple dates, plus detailed ledger comparison
- See:
references/option1-full.md
Conversion Pipeline
Every conversion follows this pipeline. Steps 1-3 use the parser + AI. Steps 4-8 use the jaz-api skill.
Step 1: Intake
Receive customer files. Organize by type. Expect messy Excel files with grouped sections, merged cells, subtotals, and inconsistent formatting.
Common file types:
- Chart of Accounts (CoA export)
- Trial Balance (TB at FYE)
- AR Aging / AP Aging (outstanding receivables/payables at FYE)
- Contact list (customers and suppliers)
- Tax profile list
- Exchange rates (closing rates at FYE)
- General Ledger detail (for Full only)
- Invoice/bill detail (for Full only)
Step 2: Parse (3-pass approach)
See references/file-analysis.md for parsing guidance and references/file-types.md for the comprehensive file type catalog (22 types across all source systems).
Pass A — Raw dump: Run the parser (parseFile()) to extract all cells + merge metadata from Excel files. The parser handles merged cell propagation automatically.
Pass B — AI structure detection: Read the raw JSON dump and identify:
- Where are the data tables? (header row + data rows)
- What are subtotal/total rows? (exclude from data extraction)
- What is metadata vs actual data? (company name, report date = metadata)
- Are there multiple data frames per sheet? (some exports have AR and AP on same sheet)
Pass C — AI classification: For each identified data table:
- What type of data is this? (TB, AR aging, AP aging, CoA, contacts, etc.)
- What are the column headers mapped to? (Account Code, Account Name, Debit, Credit, etc.)
- What date range does it cover?
- What currency is it in?
Step 3: Map
See references/mapping-rules.md for detailed rules.
For each entity type, map source data → Jaz entities:
- CoA: Match by code AND name. Fresh org = replace non-system accounts. Existing org = fuzzy match.
- Contacts: Match by name. Create if not found.
- Tax: Read-only in Jaz — discover existing profiles, match source codes to Jaz tax types.
- Currencies: Enable required currencies, set FYE exchange rates.
Assign confidence scores (high/medium/low) to each mapping. Flag low-confidence for human review.
Step 4: Transform
Convert mapped data into Jaz API payloads. Different per conversion type:
- Quick: See
references/option2-quick.md — clearing account pattern
- Full: See
references/option1-full.md — detailed transaction creation
Step 5: Dry Run
Before any API calls, present a summary for human review:
- Entity counts (how many of each type will be created)
- CoA mapping table (source → Jaz, with confidence)
- Contact list to be created
- For Quick: each conversion invoice/bill (contact, amount, currency)
- Edge cases flagged (FX, unmapped accounts, partial payments)
Do NOT project a Trial Balance. TB comes from the ledger after execution. Projecting it is unreliable and misleading.
Step 6: Execute
Create records via Jaz API. Follow the dependency order:
- Phase 0: Probe (discover existing resources — accounts, contacts, tax profiles)
- Phase 1A: Currencies → FX Rates (rates must come AFTER currencies are enabled)
- Phase 1B: CoA via
POST /api/v1/chart-of-accounts/bulk-upsert
- Phase 1C: Contacts → Items (items reference accounts + tax profiles)
- Phase 1D: Cleanup stale conversions (search + delete CONV-INV-, CONV-BILL-, etc.)
- Phase 2: Conversion invoices (AR), bills (AP), customer credit notes, supplier credit notes
- Phase 3: TTB journal (routes AR/AP through clearing accounts)
- Phase 4: Lock dates (per-account, at FYE date)
Rollback: If Phase 2 or 3 fails, all Phase 2 resources are automatically rolled back.
Step 7: Verify
After execution, pull the Trial Balance from Jaz and compare against the source TB.
See references/verification.md for the full checklist format.
Step 8: Triage (if TB doesn't match)
If TB doesn't match, identify the discrepancy:
- Missing accounts? → Create them + journal adjustment
- Rounding drift? → Small adjustment journal
- FX differences? → Check rates, may need unrealized gain/loss journal
- Missed transactions? → Create them
- Re-verify after each fix until TB matches
Critical Rules
- TTB is a regular journal entry — Jaz's TTB module is not yet on the API. Create via
POST /journals. Lock date is set separately via CoA API.
- Fixed asset transfers use
POST /api/v1/transfer-fixed-assets — not the "new asset" endpoint. Preserves accumulated depreciation.
- Clearing accounts must net to zero — if they don't, something was missed in the conversion.
- Never project TB before execution — verify AFTER, then triage.
- FYE exchange rates + original dates — Quick conversion uses original dates (for aging) but explicit FYE rate via
currency: { sourceCurrency, exchangeRate } on every FX transaction. Prior UGL is in the TTB; explicit rate ensures zero UGL in Jaz. See references/edge-cases.md.
- System-generated CoA accounts cannot be deleted — discover them via API before attempting a wipe-and-replace.
- 100% accuracy is required — customer's accountant signs off on TB match. No rounding errors, no missing balances.
- Always load
jaz-api skill alongside this one — this skill has conversion domain knowledge, jaz-api has API field names, endpoints, and gotchas.
- Filter noise from aging reports before creating contacts — AR/AP aging reports contain subtotal rows, dates, column headers, and numeric-only strings that are NOT contact names. Reject them to avoid creating garbage contacts. See
references/mapping-rules.md.
- TTB routing differs between Quick and Full — Quick routes AR/AP through clearing accounts (conversion invoices already hold the real AR/AP). Full posts directly to all accounts (detailed transactions follow). See
references/option1-full.md.
See Also
- jaz-api — Field names, endpoints, error codes, and gotchas (load alongside this skill)
- jaz-recipes — Transaction recipes for complex IFRS scenarios encountered during conversion
- jaz-jobs — Post-conversion operational workflows (month-end close, bank recon, etc.)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: teamtinvio-claude-plugins-conversion3description: Jaz Conversion Skill4---56# Jaz Conversion Skill78You are performing an **accounting data conversion** — migrating a customer's financial data from their previous accounting software (Xero, QuickBooks, Sage, MYOB, or Excel-based systems) into Jaz.910**This skill provides conversion domain knowledge. For API details (field names, endpoints, gotchas), load the `jaz-api` skill alongside this one.**1112## When to Use This Skill1314- Analyzing customer-provided Excel/CSV files for conversion15- Mapping source Chart of Accounts, contacts, tax codes, or items to Jaz16- Creating conversion transactions (invoices, bills, journals)17- Building or reviewing TTB (Transfer Trial Balance) entries18- Verifying post-conversion Trial Balance accuracy19- Troubleshooting TB mismatches after a conversion2021## Three Conversion Types2223All types use the **same pipeline** — only the scope (which entity types) differs.2425### Config Mode (foundation only)26- **Scope:** CoA, contacts, items, currencies, tax mapping — NO transactions or journal27- **Creates:** Foundation entities only (Phases 0-1)28- **When:** Setting up an org before a conversion, or populating a fresh org with the customer's chart of accounts and contacts29- **Manifest field:** `"conversionType": "config"`30- **Requires:** At least one of `coa` or `tb` file (no AR/AP needed)3132### Quick Conversion (Option 2 — recommended starting point)33- **Scope:** Open AR/AP at FYE + TTB opening balances34- **Creates:** CoA, contacts, currencies, tax mapping, conversion invoices/bills, TTB journal, lock date35- **When:** Customer wants to start fresh on Jaz with correct opening balances36- **Accuracy check:** TB at FYE must match between source and Jaz37- **See:** `references/option2-quick.md`3839### Full Conversion (Option 1)40- **Scope:** ALL transactions for FY + FY-1 (complete history)41- **Creates:** Everything in Quick + items, detailed invoices, bills, payments, journals, credit notes, cash-in/out/transfers, bank records, fixed assets42- **When:** Customer needs full audit trail preserved43- **Accuracy check:** TB at multiple dates, plus detailed ledger comparison44- **See:** `references/option1-full.md`4546## Conversion Pipeline4748Every conversion follows this pipeline. Steps 1-3 use the parser + AI. Steps 4-8 use the jaz-api skill.4950### Step 1: Intake51Receive customer files. Organize by type. Expect messy Excel files with grouped sections, merged cells, subtotals, and inconsistent formatting.5253**Common file types:**54- Chart of Accounts (CoA export)55- Trial Balance (TB at FYE)56- AR Aging / AP Aging (outstanding receivables/payables at FYE)57- Contact list (customers and suppliers)58- Tax profile list59- Exchange rates (closing rates at FYE)60- General Ledger detail (for Full only)61- Invoice/bill detail (for Full only)6263### Step 2: Parse (3-pass approach)64See `references/file-analysis.md` for parsing guidance and `references/file-types.md` for the comprehensive file type catalog (22 types across all source systems).6566**Pass A — Raw dump:** Run the parser (`parseFile()`) to extract all cells + merge metadata from Excel files. The parser handles merged cell propagation automatically.6768**Pass B — AI structure detection:** Read the raw JSON dump and identify:69- Where are the data tables? (header row + data rows)70- What are subtotal/total rows? (exclude from data extraction)71- What is metadata vs actual data? (company name, report date = metadata)72- Are there multiple data frames per sheet? (some exports have AR and AP on same sheet)7374**Pass C — AI classification:** For each identified data table:75- What type of data is this? (TB, AR aging, AP aging, CoA, contacts, etc.)76- What are the column headers mapped to? (Account Code, Account Name, Debit, Credit, etc.)77- What date range does it cover?78- What currency is it in?7980### Step 3: Map81See `references/mapping-rules.md` for detailed rules.8283For each entity type, map source data → Jaz entities:84- **CoA:** Match by code AND name. Fresh org = replace non-system accounts. Existing org = fuzzy match.85- **Contacts:** Match by name. Create if not found.86- **Tax:** Read-only in Jaz — discover existing profiles, match source codes to Jaz tax types.87- **Currencies:** Enable required currencies, set FYE exchange rates.8889Assign confidence scores (high/medium/low) to each mapping. Flag low-confidence for human review.9091### Step 4: Transform92Convert mapped data into Jaz API payloads. Different per conversion type:93- **Quick:** See `references/option2-quick.md` — clearing account pattern94- **Full:** See `references/option1-full.md` — detailed transaction creation9596### Step 5: Dry Run97Before any API calls, present a summary for human review:98- Entity counts (how many of each type will be created)99- CoA mapping table (source → Jaz, with confidence)100- Contact list to be created101- For Quick: each conversion invoice/bill (contact, amount, currency)102- Edge cases flagged (FX, unmapped accounts, partial payments)103104**Do NOT project a Trial Balance.** TB comes from the ledger after execution. Projecting it is unreliable and misleading.105106### Step 6: Execute107Create records via Jaz API. Follow the dependency order:1081. **Phase 0:** Probe (discover existing resources — accounts, contacts, tax profiles)1092. **Phase 1A:** Currencies → FX Rates (rates must come AFTER currencies are enabled)1103. **Phase 1B:** CoA via `POST /api/v1/chart-of-accounts/bulk-upsert`1114. **Phase 1C:** Contacts → Items (items reference accounts + tax profiles)1125. **Phase 1D:** Cleanup stale conversions (search + delete CONV-INV-*, CONV-BILL-*, etc.)1136. **Phase 2:** Conversion invoices (AR), bills (AP), customer credit notes, supplier credit notes1147. **Phase 3:** TTB journal (routes AR/AP through clearing accounts)1158. **Phase 4:** Lock dates (per-account, at FYE date)116117**Rollback:** If Phase 2 or 3 fails, all Phase 2 resources are automatically rolled back.118119### Step 7: Verify120After execution, pull the Trial Balance from Jaz and compare against the source TB.121See `references/verification.md` for the full checklist format.122123### Step 8: Triage (if TB doesn't match)124If TB doesn't match, identify the discrepancy:125- Missing accounts? → Create them + journal adjustment126- Rounding drift? → Small adjustment journal127- FX differences? → Check rates, may need unrealized gain/loss journal128- Missed transactions? → Create them129- Re-verify after each fix until TB matches130131## Critical Rules1321331. **TTB is a regular journal entry** — Jaz's TTB module is not yet on the API. Create via `POST /journals`. Lock date is set separately via CoA API.1342. **Fixed asset transfers use `POST /api/v1/transfer-fixed-assets`** — not the "new asset" endpoint. Preserves accumulated depreciation.1353. **Clearing accounts must net to zero** — if they don't, something was missed in the conversion.1364. **Never project TB before execution** — verify AFTER, then triage.1375. **FYE exchange rates + original dates** — Quick conversion uses original dates (for aging) but explicit FYE rate via `currency: { sourceCurrency, exchangeRate }` on every FX transaction. Prior UGL is in the TTB; explicit rate ensures zero UGL in Jaz. See `references/edge-cases.md`.1386. **System-generated CoA accounts cannot be deleted** — discover them via API before attempting a wipe-and-replace.1397. **100% accuracy is required** — customer's accountant signs off on TB match. No rounding errors, no missing balances.1408. **Always load `jaz-api` skill alongside this one** — this skill has conversion domain knowledge, `jaz-api` has API field names, endpoints, and gotchas.1419. **Filter noise from aging reports before creating contacts** — AR/AP aging reports contain subtotal rows, dates, column headers, and numeric-only strings that are NOT contact names. Reject them to avoid creating garbage contacts. See `references/mapping-rules.md`.14210. **TTB routing differs between Quick and Full** — Quick routes AR/AP through clearing accounts (conversion invoices already hold the real AR/AP). Full posts directly to all accounts (detailed transactions follow). See `references/option1-full.md`.143144## See Also145146- **jaz-api** — Field names, endpoints, error codes, and gotchas (load alongside this skill)147- **jaz-recipes** — Transaction recipes for complex IFRS scenarios encountered during conversion148- **jaz-jobs** — Post-conversion operational workflows (month-end close, bank recon, etc.)149150---151> Converted and distributed by [TomeVault](https://tomevault.io/claim/teamtinvio) — claim your Tome and manage your conversions.152<!-- tomevault:4.0:skill_md:2026-04-14 -->