Skip to content
Testaroo
md4.4 KB

Tern Client Services: Document set README

Document set README for Tern Client Services. 27 files, 1 of them intentionally invalid, with the reconciliation identities and the exact defect in each broken file named in full.

Preview, first 50 linesmd
# Tern Client Services: timesheet, progress bill, expense claim and work-in-progress documents

The billing pack a small professional services firm produces for one month: the timesheet in three formats, the fee schedule it prices from, the retainer the first two invoices are drawn against, a progress bill for the third, work in progress at a mid-month cut-off and its roll-forward, an expense claim with mileage, and the pipeline, quote, activity and contact exports behind them.

All parties, amounts and identifiers are fictional. Fixed snapshot: 2026-09-08. Every record is derived from the shared operating model `crm-services`, so identifiers join across this set and across the business-kit fixtures that use the same model.

## Reconciliation identities this set asserts

- hours times hourly_rate equals billable_amount on all 24 time entries, totalling 7200.00.
- The 3 invoices total the same 7200.00, so every recorded hour is billed exactly once.
- The retainer of 4000.00 is drawn to 0.00 by SVCINV-1 and SVCINV-2, leaving 3200.00 payable in cash on SVCINV-3.
- Work in progress rolls forward from 0.00 to 0.00: everything added in the period was transferred to billed.
- The expense claim of 221.57 allocates by project without residue and is the expenses column of project-profitability.csv.
- Won deals total 9000.00, the sum of the three project budgets.

## Files

| File | Format | Validity | What it is |
| --- | --- | --- | --- |
| `timesheet-export.csv` | csv | valid | Timesheet export CSV |
| `timesheet-export.json` | json | valid | Timesheet export JSON |
| `timesheet-export.xlsx` | xlsx | valid | Timesheet export workbook |
| `timesheet-PROJECT-3.pdf` | pdf | valid | Project timesheet PDF |
| `fee-schedule.csv` | csv | reference | Professional fee schedule |
| `fee-schedule.pdf` | pdf | reference | Fee schedule PDF |
| `retainer-ledger.csv` | csv | valid | Retainer ledger |
| `invoice-register.csv` | csv | valid | Invoice register with retainer draws |
| `invoice-register.json` | json | valid | Invoice register JSON |
| `progress-bill-SVCINV-3.pdf` | pdf | valid | Progress bill PDF |
| `retainer-statement.pdf` | pdf | valid | Retainer statement PDF |
| `wip-report.csv` | csv | valid | Work in progress at 2026-08-15 |
| `wip-rollforward.csv` | csv | valid | Work in progress roll-forward |
| `mileage-log.csv` | csv | valid | Mileage log |
| `expense-claim.csv` | csv | valid | Expense claim with mileage |
| `expense-claim-mileage-rate-drift.csv` | csv | invalid | Expense claim whose mileage was paid at a superseded rate |
| `expense-claim.pdf` | pdf | valid | Expense claim PDF |
| `project-profitability.csv` | csv | valid | Project profitability |
| `utilisation-report.csv` | csv | valid | Specialist utilisation report |
| `pipeline-export.csv` | csv | valid | Sales pipeline export |
| `pipeline-export.xlsx` | xlsx | valid | Sales pipeline workbook |
| `quotes-export.csv` | csv | valid | Quote export |
| `activities-export.csv` | csv | valid | Sales activity export |
| `contacts-export.csv` | csv | valid | Contact export with quoted fields |
| `contacts-export-semicolon.csv` | csv | valid | Contact export in the semicolon dialect |
| `services-reconciliation.json` | json | reference | Professional services reconciliation assertions |

## Deliberate defects

These files are broken on purpose. Each one is a single named mutation of a correct file in the same directory, so a parser under test can be checked against both.
… 60 lines total: download for the full file.

Specifications

Document Set
professional-services
Industry
professional-services
Source Kit
crm-services
Synthetic
true
As Of
2026-09-08
Documented Files
27
Documented Defects
1

Testing contract

Reference control
Scenario
Read the README before using the set, then check that every filename it lists exists in the same directory and that the defect list matches the files marked invalid.
Expected result
The file table lists 27 entries including this README, and the deliberate-defect section names 1 file(s). The reconciliation section states the arithmetic identities the valid files satisfy exactly.

What is a .md file?

Markdown (MD) is a lightweight plain-text markup language that uses simple punctuation conventions to denote headings, lists, links, emphasis, and code. It is designed to be readable as-is and to convert cleanly to HTML. It is widely used for documentation, READMEs, and content authoring.

How to use this file

Use an example Markdown file to test parsers and renderers, verify GitHub-Flavored Markdown extensions like tables and fenced code, and exercise HTML-conversion pipelines.

How to use this file for testing

“Tern Client Services: Document set README” is a deterministic Testaroo fixture for Data import. Realistic faker-generated datasets with documented schemas for testing import and ETL flows.

Documented properties for this file: MD · 4,473 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.

Document fixtures list their internal structure (pages, fields, tracked changes, embedded objects) in the spec table. Test extractors, converters, and OCR against that known structure, and compare searchable↔scanned or format-twin companions when present.

Code examples

import markdown  # pip install markdown

html = markdown.markdown(open("README.md").read())
print(html[:200])

Generated by generation/industry_documents.py. Free for any use, no attribution required, license.