# Marketing data audit: <company>, <window>

## Baseline

- Run date: <YYYY-MM-DD>. Window: <start> to <end>, mature through <date> because <restatement rule>.
- Business time zone: <IANA zone>. Reporting currency: <code>. FX policy: <decisions.md entry, or "undocumented">.
- Warehouse: <BigQuery location | Snowflake region>, datasets <list>.
- Access routes: <execute_sql_readonly | read_only SQL tool | read-only role | exports>, platform reads <tools or exports, with dates>.
- Read time: <first and last query timestamps>. Query budget: <total and per query, agreed with whom>. Audit query cost: <Q23 bytes billed or credits>.
- Scripts: <ran: reconcile_exports.py, classify_channels.py, check_dbt_artifacts.py, score_audit.py | scripts not run, thresholds applied by hand>.
- Inputs used: <stack.md, metrics.md, data-dictionary.md, naming-rules.md, decisions.md, or what the user supplied>.
- Threshold overrides: <check ID, value, reason; or "none">.

## Verdicts per output

- <O1> <name> (<type>), used by <consumer> for <decision>: <Decision-grade | Use with caveats | Do not use until fixed | Not assessable>.
  - Blocking FAIL: <check IDs with one line each>
  - Not assessed: <check IDs and what would close them>
  - Caveats: <blocking WARN check IDs>
  - Recommendation: <for activation outputs with a P1 item: pause until fixed, owner decides>

## Score

- Overall <score> (<unrounded>), <band>, coverage <percent>, <graded | provisional | insufficient evidence>.
- The score ranks where to look between audits; the verdicts above decide what can be used.
- <domain>: <score>, coverage <percent> <(capped from N) when a class A FAIL caps it>

## FAIL findings, by priority

- <P1> <finding ID> <check ID> (<outputs>): <what was found, with the number>. Threshold: <rule> (<default | metrics.md | decisions.md date>). Evidence: <query ID or script output>. Owner: <role>.

## WARN findings

- <P3 or P4> <finding ID> <check ID> (<outputs>): <finding>. Decision needed from: <role>. Due: <date for blocking checks>.

## PASS

- <check ID>: <what was checked and found correct, with the evidence>.

## Not checked and not applicable

- NOT CHECKED <check ID>: <reason>. Closing evidence: <access or export that would close it>.
- N/A <check ID> <for output, if only one>: <reason>.

## Reconciliation results

- <pair, for example Google Ads platform against stg_ads__daily_spend>: contract <approved | drafted>, keys <A> and <B>, matched <n>, missing <n>, unexpected <n>, duplicates <n>, currency mismatches <n>, value mismatches <n>. Per currency: signed <difference>, absolute <difference>. Rollups: <group: percent, status>.
- <bridge, for example CRM to billing>: measures <booked, invoiced, cash, balance>, residual <percent of billed value>, exceptions by category <counts and values>.

## Source behaviour notes

- <source>: <restatement window, reload window, time zone, currency, connector settings that explain a finding, each with the date checked>.

## Manifest

- <system> <account>: native time zone <zone>, currency <code>, connector <name>, reload window <days>, owner <role>, evidence <platform list and date>.

## Proposed martech-context updates (not written until approved)

- stack.md: <manifest entries, owners, reload windows>.
- metrics.md: <metric contracts to add or complete>.
- decisions.md: <FX policy, thresholds, accepted exceptions, pause decisions>.

## Fix list

- <path or link to the fix list>. P1 <n>, P2 <n>, P3 <n>, P4 <n>.
- Reported numbers expected to move after the fixes: <metric, direction, size, who tells the users>.

Nothing was changed by this audit.
