---
description: Support ticket investigation. Parallel data gathering from DB, Datadog, OpsGenie, vtb, then hypothesis formation and user-guided exploration.
category: verkada
---
flowchart TD
_HEADER_["
Verkada Investigate
Support ticket investigation. Parallel data gathering from DB, Datadog, OpsGenie, vtb, then hypothesis formation and user-guided exploration.
"]:::headerStyle
classDef headerStyle fill:none,stroke:none
subgraph _MAIN_[" "]
%% Phase 1: Setup
subgraph Setup["Phase 1: Setup"]
TICKET[Linear Support Ticket] --> CHECKOUT[Checkout Master
+ Ticket Branch]
CHECKOUT --> MARK_IP[Mark In-Progress]
end
%% Phase 2: Context Gathering
subgraph Context["Phase 2: Context Gathering (parallel)"]
MARK_IP --> READ_TICKET[Read Ticket
+ All Comments] & READ_DOCS[Read Service Docs
+ Test Patterns] & RECENT_PRS[Search Recent PRs
Around Issue Timeline]
READ_TICKET & READ_DOCS & RECENT_PRS --> CTX[Context Built]
end
%% Phase 3: Parallel Investigation
subgraph Investigate["Phase 3: Parallel Investigation"]
CTX --> DB_QUERY[DB Querying
Org + User State] & DATADOG[Datadog
Traces + Logs] & OPSGENIE[OpsGenie
Alerts + Incidents] & VTB[vtb
Org + Device Info] & VERKURL[verkurl
Replicate on Staging]
DB_QUERY & DATADOG & OPSGENIE & VTB & VERKURL --> EVIDENCE[Collect Evidence]
end
%% Phase 4: Hypothesis
subgraph Hypothesis["Phase 4: Hypothesis"]
EVIDENCE --> THINK[Ultrathink:
Possible Causes]
THINK --> ROUTES[Propose Investigation
Routes]
ROUTES --> ASK{User Selects
Routes}
end
%% Phase 5: Explore
subgraph Explore["Phase 5: Parallel Exploration"]
ASK --> AGENTS[Spawn Sub-Agents
per Selected Route]
AGENTS --> TDD[TDD Tests
Confirm Thesis] & DB_DEEP[Deep DB Analysis
Cross-Org Compare] & CODE_DIG[Code Archaeology
Blame + History] & STAGING[Staging Repro
via verkurl]
TDD & DB_DEEP & CODE_DIG & STAGING --> RESULTS[Collect Findings]
RESULTS --> REPORT[Report Results
+ Next Steps]
end
click TICKET "#" "**Linear Support Ticket**\nA support or bug ticket from Linear.\nContains: customer report, org ID, user ID, timestamps, error descriptions.\n\nPassed as `$ARGUMENTS` to `/v:investigate`."
click CHECKOUT "#" "**Checkout Master + Ticket Branch**\nImmediately checkout and pull latest master,\nthen create/checkout the ticket branch based off master.\n\nThis branch is for tracking investigation work,\nnot necessarily for code fixes."
click MARK_IP "#" "**Mark In-Progress**\nUpdate the Linear ticket status to in-progress.\nSignals to the team that investigation has started."
click READ_TICKET "#" "**Read Ticket + Comments**\nRead the full Linear ticket:\n- Description with customer report\n- All comments (may have additional context)\n- Associated services mentioned\n- Org ID, user ID, timestamps\n\nRuns in parallel with other context reads."
click READ_DOCS "#" "**Read Service Docs**\nRead documentation for the associated services:\n- `vcerberus/docs/` for access control\n- Service-specific `/docs` folders\n- Test files to understand intended behavior\n\nTests and docs imply correct intended behavior."
click RECENT_PRS "#" "**Search Recent PRs**\nLook for code changes around the timeline the issue was reported.\n`gh pr list --search 'merged:>YYYY-MM-DD' --json ...`\n\nRecent deploys are a common root cause for new issues."
click CTX "#" "**Context Built**\nAll parallel context reads complete.\nNow have: ticket details, service docs, and timeline of recent changes."
click DB_QUERY "#" "**DB Querying**\nQuery the organization's shard database:\n- Org settings and configuration\n- User credentials and state\n- Door/schedule/access policy records\n- Compare against known-good orgs\n\nUse `verkada-db-querying` skill."
click DATADOG "#" "**Datadog Traces + Logs**\nSearch Datadog for:\n- Error traces around the reported timestamps\n- Service logs for the affected org/user\n- Latency spikes or anomalies\n- Associated service dependencies\n\nUse `datadog-cli` skill."
click OPSGENIE "#" "**OpsGenie Alerts**\nCheck for related:\n- Alerts fired around the issue timeline\n- Active incidents\n- On-call escalations\n- Recurring alert patterns\n\nUse `opsgenie-cli` skill."
click VTB "#" "**vtb: Org + Device Info**\nGather information about:\n- The organization's configuration\n- Device firmware and settings\n- Feature flags enabled\n- Mobile NFC/Apple Wallet settings\n\nUse `vtb` (Verkada Toolbox) skill."
click VERKURL "#" "**verkurl: Replicate on Staging**\nAttempt to replicate the issue:\n- Use existing verkurl profiles\n- Test against staging and production\n- Compare behavior between environments\n\nUse `verkurl` skill with authenticated requests."
click EVIDENCE "#" "**Collect Evidence**\nGather findings from all 5 parallel investigation streams.\nCross-reference: do DB state, logs, and alerts tell a consistent story?"
click THINK "#" "**Ultrathink: Possible Causes**\nUse extended thinking to reason through:\n- What could cause the observed symptoms?\n- Do recent code changes explain it?\n- Is it data/config-specific or systemic?\n- Are there multiple possible root causes?\n\nForm ranked hypotheses with supporting evidence."
click ROUTES "#" "**Propose Investigation Routes**\nPresent concrete next steps to explore each hypothesis.\nExamples:\n- Write TDD tests to confirm a thesis\n- Deep-dive DB comparing affected vs healthy orgs\n- Git blame/history around suspicious code paths\n- Staging reproduction with specific parameters"
click ASK "#" "**User Selects Routes**\nPresent routes via AskUserQuestion with checkboxes (not single-select).\nUser can pick multiple routes to explore in parallel.\n\nThis ensures investigation effort is directed, not open-ended."
click AGENTS "#" "**Spawn Sub-Agents**\nLaunch one background agent per selected route.\nAll run in parallel for maximum throughput.\nEach agent focuses on one investigation angle."
click TDD "#" "**TDD Tests**\nWrite targeted tests to confirm or disprove a hypothesis.\nIf the test fails as expected, the thesis is supported.\nIf it passes, the thesis is wrong -- valuable signal either way."
click DB_DEEP "#" "**Deep DB Analysis**\nCompare the affected org's database state against healthy orgs.\nLook for abnormal settings, missing records, or corrupted state.\nSQL queries across the shard's PostgreSQL."
click CODE_DIG "#" "**Code Archaeology**\nGit blame and history around suspicious code paths.\nTrace when behavior changed.\nCorrelate with deploy dates and the issue timeline."
click STAGING "#" "**Staging Reproduction**\nTargeted reproduction via verkurl with specific parameters\nderived from the hypothesis.\nCompare staging vs production behavior."
click RESULTS "#" "**Collect Findings**\nGather results from all parallel exploration agents.\nDo findings converge on a single root cause?\nOr do they reveal additional complexity?"
click REPORT "#" "**Report Results + Next Steps**\nPresent to the user:\n- Confirmed/disproved hypotheses\n- Root cause (if identified)\n- Recommended fix or further investigation\n- Evidence supporting each conclusion\n\nUpdate the Linear ticket with findings."
classDef setup fill:#d1ecf1,stroke:#7ec8d8
classDef context fill:#d1ecf1,stroke:#7ec8d8
classDef investigate fill:#dfe6ff,stroke:#5b7bce
classDef hypothesis fill:#fff3cd,stroke:#f0c040
classDef explore fill:#e8daef,stroke:#b07cc6
classDef approved fill:#d4edda,stroke:#5cb85c
class TICKET,CHECKOUT,MARK_IP setup
class READ_TICKET,READ_DOCS,RECENT_PRS,CTX context
class DB_QUERY,DATADOG,OPSGENIE,VTB,VERKURL,EVIDENCE investigate
class THINK,ROUTES,ASK hypothesis
class AGENTS,TDD,DB_DEEP,CODE_DIG,STAGING,RESULTS explore
class REPORT approved
end
style _MAIN_ fill:none,stroke:none,padding:0
_HEADER_ ~~~ _MAIN_