No audit data loaded.

Trello ↔ Dubsado Sync Audit

Audit run: {{ formatDate(audit.auditAt) }} · Dubsado CSV: {{ formatDate(audit.dataSources.dubsadoCsv.capturedAt) }} · Trello: {{ formatDate(audit.dataSources.trelloCardSessions.capturedAt) }}
Incomplete capture warning: {{ audit.summary.countWarning }}
Dubsado Projects
{{ audit.summary.totalDubsadoProjects }}
In Progress (CSV)
Trello Sessions
{{ audit.summary.totalTrelloSessionsConsidered }}
fresh booking cards
Booked Slots
{{ audit.summary.bookedSlotsTotal }}
across all sessions
Matched
{{ audit.summary.matchedSlots }}
Trello ↔ Dubsado
Orphan Trello
{{ audit.summary.orphanTrello }}
booked, no Dubsado
Orphan Dubsado
{{ audit.summary.orphanDubsado }}
upcoming, no Trello
Stale Skipped
{{ audit.summary.skippedStaleCount }}
>4mo since edit

Slot Classification

No issues: {{ classCount('no-issues') }} Synced with issues: {{ classCount('synced-with-issues') }} Issues: {{ classCount('issues') }}

Issues by Type

{{ type }} {{ count }}
No issues detected. ✨
Sessions Tree {{ audit.boards.length }}
Orphan Trello {{ audit.orphanTrello.length }}
Orphan Dubsado {{ audit.orphanDubsado.length }}
Stale Skipped {{ audit.skippedStale.length }}
No sessions match the current filters.
{{ board.boardName }} {{ board.lists.length }} lists · {{ countBoardSlots(board) }} slots
{{ list.listName }} ({{ list.sessions.length }} sessions)
{{ session.cardName }} {{ session.date }} {{ session.startTime }} – {{ session.endTime }} {{ session.durationDisplay }} 👤 {{ session.associate }} 🌅 {{ session.sunset }} {{ countSessionSlotsByStatus(session, 'booked') }} booked {{ countSessionSlotsByStatus(session, 'open') }} open {{ countSessionSlotsByStatus(session, 'cancelled') }} cancelled
{{ slot.time }}
{{ slot.status }} matched {{ slot.classification }} {{ slot.client }} (open) ({{ slot.alternateTime }}) {{ slot.emojis.join('') }}
📝 {{ slot.notes }}
↔ Dubsado: {{ matchedDubsadoForSlot(slot).projectTitle }} <{{ matchedDubsadoForSlot(slot).clientEmail }}> · 👤 {{ matchedDubsadoForSlot(slot).associateFirst }} · contract: {{ matchedDubsadoForSlot(slot).contractStatus }} · paid: {{ matchedDubsadoForSlot(slot).primaryInvoicePaid }} / {{ matchedDubsadoForSlot(slot).allInvoicesPaid }}
{{ issue.type }} {{ issue.message }}
No orphan Trello slots.
BoardListCardDateTime Trello ClientEmojisNotes
{{ o.boardName }}{{ o.listName }}{{ o.cardName }} {{ o.date || '—' }}{{ o.slot.time }} {{ o.slot.client || '—' }} {{ (o.slot.emojis || []).join(' ') }} {{ o.slot.notes || '—' }}
No orphan Dubsado projects.
Project TitleClientEmailStart Date RegionAssociateContractInvoice Paid
{{ d.projectTitle }} {{ d.clientFirst }} {{ d.clientLast }} {{ d.clientEmail || '—' }} {{ d.startDate || '—' }} {{ d.region || d.sessionRegion || '—' }} {{ d.associateFirst || '—' }} {{ d.contractStatus || '—' }} {{ d.primaryInvoicePaid || '—' }} / {{ d.allInvoicesPaid || '—' }}

{{ audit.skippedStale.length }} Trello cards were excluded from the audit because they haven't been edited in over 4 months.

No stale cards.
BoardListCardLast ActivityLast Date
{{ s.boardName }}{{ s.listName }} {{ s.cardName }} {{ formatDate(s.cardDateLastActivity) }} {{ s.date || '—' }}