What this audit checks
Authentication & access
- API key + token still valid (auth on /1/members/me)
- Token grants write scope to the configured intake board (can create cards)
- Done-list mapping resolves to real lists on each vortex_iq_outbound board
- Trello rate-limit headroom > 30% (300 req / 10s per token)
Board health
- Open card count vs 30-day baseline (sudden growth = board drowning)
- Blocked-label card count + change WoW
- Oldest open card age by dateLastActivity (>90 days = backlog rot)
- Unassigned cards (empty idMembers) > 5 - work nobody owns
- Backlog concentrated on a single Backlog / Inbox list (planning gap, not execution gap)
VortexIQ findings lifecycle (the stickiness test)
- Abandoned cards - VortexIQ-created, no dateLastActivity change >14d
- Finding resolution rate over rolling 90d (target >75%)
- Avg time-to-fix for resolved finding cards
- Cards archived (closed) without reaching a Done list - silent dismissals
- Regression rate - finding cards moved back off a Done list after resolution
Team capacity
- Members with >10 open cards (overload signal via idMembers)
- Members with zero cards moved to Done in 14d (parked work)
- Cycle time degradation > 25% week-over-week (from card action history)
- Cards added to a weekly-cycle list after the cycle started (scope creep)
Cross-connector signals
- Critical findings from sibling connectors (shopify/bigcommerce/adobe/datadog/newrelic) older than 7 days with no Trello card - coverage gap
- Trello cards referencing decommissioned/archived integrations - stale work
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
vortexiq_findings_abandoned | 5 | 15 |
vortexiq_finding_resolution_rate | 75 | 50 |
blocked_tickets | 3 | 8 |
unassigned_tickets | 5 | 20 |
oldest_open_ticket_age_days | 60 | 90 |
cycle_time_change_pct | 25 | 50 |
rate_limit_headroom_pct | 30 | 10 |
Data sources
GET https://api.trello.com/1/members/me- Token + member infoGET https://api.trello.com/1/members/me/boards- Discover the member’s boards (filter to vortex_iq_outbound)GET https://api.trello.com/1/boards/{id}/cards- Open/all card reads (open count, blocked, unassigned, abandoned, by-assignee, etc.)GET https://api.trello.com/1/boards/{id}/lists- List names → status / done-list / sprint-cycle mappingGET https://api.trello.com/1/boards/{id}/actions- createCard / updateCard:idList / updateCard:closed history for cycle time + resolution eventsGET https://api.trello.com/1/boards/{id}/members- Assignee resolution + capacity calc