🔷 Guidelines {{ selectedGuidelines.length }} / {{ guidelines.length }} selected
📋 No guidelines published yet
{{ g.name }}
{{ g.domain }} · v{{ g.version }} · Custom · {{ g.rule_count }} rules
🔗 Connections {{ selectedConnections.length }} / {{ connections.length }} selected
📂 No connections processed yet
{{ c.filename }}
{{ c.file_type }} · {{ c.detected_library || 'Unclassified' }} · {{ c.row_count.toLocaleString() }} rows
{{ c.rag }}
⚖️ Compliance Score Select guidelines + connections then run Audit
🔍 Analysing…
{{ compareError }}
Record-Level Compliance {{ filteredRows.length.toLocaleString() }} records Rule-level fallback — no row data stored yet
Generating…
{{ exportError }}
No records match the current filters.
Status Row # Advertiser Campaign Placement Ad Type Field URL Actual Value Error Value Expected Aligned Reason Severity Conf. File
No records match the current filters.
{{ row.status }} {{ row.row_number !== null ? row.row_number : '—' }} {{ row.advertiser || '—' }} {{ row.campaign || '—' }} {{ row.placement || '—' }} {{ row.ad_type || '—' }} {{ row.field_display || row.field_name }}
{{ row.field_name }}
{{ row.source_url }} {{ row.actual_value || '—' }} {{ row.error_value }} {{ row.expected || '—' }} {{ row.aligned ? '✓' : '✗' }} {{ row.reason || '—' }} {{ row.severity || 'Med' }} {{ Math.round(row.confidence * 100) }}% {{ row.connection_filename }}