AI Adoption GuideOperationsPrioritize
Dependency chain identification
LLM identifies when a new item blocks or is blocked by existing items and adjusts priority ranking accordingly.
Operations processIntakePrioritizeScheduleExecuteVerifyDeliverConfirmClose
By Don, DoneThat’s AI coach · updated
Why dependency chains distort priority
Operations planners rarely fail because they cannot list urgent work. They fail when a high-scoring item sits behind an invisible blocker, or when a low-visibility item silently holds up a queue of downstream tasks. Priority scores that ignore dependencies treat each ticket, work order, or change request as independent. In practice, chains form: a vendor credential expires, a change window slips, a shared environment stays locked, and suddenly half the week’s “top” items cannot start.
Dependency chain identification uses an LLM to read a new item against the open backlog and surface likely “blocks” and “blocked-by” relationships. The model does not invent a schedule. It proposes graph edges and ranking adjustments so a planner can see which work is actually runnable, which work is waiting, and which newly filed item may freeze something already committed.
This page is for planners who already triage by urgency, SLA, and effort, and need dependency risk in the same ranking pass. Pair it with multi-factor priority scoring for the base score, effort estimation for triage when size affects sequencing, and SLA breach prediction when due-date pressure must compete with blocker risk.
What the model inspects
The useful signal lives in structured fields and free text together. Titles and descriptions often name systems, teams, environments, change tickets, or upstream approvals. Linked records, parent epics, related incident IDs, and “waiting on” comments encode edges that humans already wrote once. Status and assignee history show stalls that look like soft dependencies even when no formal link exists.
A typical pass works like this:
- Ingest the new item and a bounded set of related open items (same queue, service, product area, or customer account).
- Extract candidate entities: services, environments, approvals, vendors, shared resources, and named predecessor tickets.
- Propose directed edges: A blocks B, or A is blocked by B, each with a short rationale grounded in the source text.
- Propagate impact: if A blocks B and B blocks C, surface the chain length and which ranked items sit behind the new edge.
- Adjust ranking inputs: demote items that cannot start until a blocker clears; promote blockers that unlock multiple dependents; leave unaffected items untouched.
When related item records are missing, incomplete, or inaccessible, the system returns empty output for dependency detection rather than guessing from titles alone. A planner should see “no dependency analysis” instead of a confident but unsupported graph. Empty output is a feature: it prevents false edges from steering the queue.
How ranking should change when a chain appears
Dependency-aware ranking is not a separate leaderboard. It is a modifier on the existing priority model. After the base score is computed, apply a small set of transparent rules:
- If an item has a confirmed or high-confidence blocker that is not yet done, lower its effective rank so it does not consume the next capacity slot.
- If an item blocks two or more open dependents, raise its rank relative to peers with similar urgency, because clearing it recovers more runnable work.
- If a new item both blocks and is blocked, surface both edges; do not collapse them into a single label. Planners need to know which side they can act on today.
- Keep the original score visible next to the adjusted rank so staff can see what the model changed and why.
Avoid hard-coding “blocked equals zero priority.” Some blocked items still need owner attention: chase the vendor, file the access request, or split the work so a non-blocked slice can start. The ranking adjustment should push blocked items out of the “start now” band, not out of the queue entirely.
Document the adjustment in human language on the item: “Proposed: blocked by CHG-1842 (shared staging lock mentioned in description); demoted below runnable P1s until CHG-1842 closes.” That sentence is what a planner audits, not an opaque weight vector.
Human confirmation before edges stick
The model flags likely blockers; staff still confirm dependencies. Treat every proposed edge as a draft until a planner accepts, edits, or rejects it. Confirmation should be cheap: accept as-is, flip direction, change the related item ID, or dismiss with a reason such as “same theme, not a hard dependency.”
Reasons matter. Dismissals become negative examples for later review, and they teach teams where the model overfits on shared keywords (“Kubernetes,” “billing,” “customer X”) without a real sequencing constraint. Accepted edges should write back to the work system as formal links when your process requires them, so the next triage pass starts from ground truth rather than rediscovering the same chain.
Keep ownership clear. The LLM proposes; the planner owns the graph that drives who starts work. Automation may refresh suggestions when item text changes, but it must not silently reintroduce a rejected edge without a new textual basis.
Failure modes planners should watch for
Keyword collision is the most common false positive. Two items mention the same platform and get linked even though they use different environments or unrelated change windows. Mitigate with entity grounding: require a concrete shared resource, ticket ID, or approval gate in the rationale, not only a shared noun.
Missing records produce empty or thin graphs. If the backlog slice excludes vendor tickets, facilities work, or security reviews that live in another system, the model cannot see the real blocker. Fix the retrieval boundary before you trust chain length.
Over-promotion of blockers can starve unrelated urgent work. A credential renewal that unlocks three enhancements should not outrank a production incident unless your policy says so. Cap dependency boosts and keep SLA-critical incidents in a protected band.
Stale edges are as harmful as missing ones. When a blocker closes, re-run identification on dependents so demotions lift automatically. Otherwise the queue looks empty of runnable work while items remain artificially parked.
Finally, do not use chain detection as a substitute for capacity planning. Long chains often mean process design problems (serial approvals, single shared environments). The model can make those chains visible; fixing them remains an operations design task.
Putting it into the daily triage loop
Run dependency identification when an item is created or materially updated, and again during the daily or shift triage review for the top N ranked items. Present three views side by side: base score, dependency-adjusted rank, and a short chain list for anything in the start-now band that still has an open blocker.
Planners act in this order: confirm or reject new edges, clear or escalate true blockers, then pull the highest-ranked runnable item. Measure success by fewer “started then stuck” handoffs and by how often adjusted ranks match what the team actually could work that day, not by how many edges the model proposes.
Used this way, dependency chain identification keeps priority honest: urgency and effort still matter, but runnable reality shows up in the ranking before someone pulls work that cannot move.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first