Repeat-issue clustering.
The same problem, raised eleven times, in eleven places, by eleven people who each thought it was theirs. Individually each is a small item. Together they are a design fault, and only the cluster shows it.
Nothing raised gets lost. Everything ageing escalates. That is the whole job.
Last updated
Zepth Core module
The issues log is a project’s working memory: the coordination clash, the access conflict, the missing dimension, the thing somebody noticed and said out loud. Everything that needs fixing or deciding but does not yet warrant formal machinery.
Its job is simple, and it is almost never done. Nothing raised gets lost. Everything ageing escalates.
The site already publishes an escalation ladder, and this page uses it rather than inventing a second one: an observation, fixed and photo-verified. Repeated or ignored, and it becomes a site instruction directing correction. Confirmed as actual non-compliance, and it becomes an NCR. Unresolved at handover, and it blocks completion.
An issue sits below all of that — informal, fast, and cheap. And that is not a weakness; it is the point. The issues log is where most problems SHOULD die quietly, having been raised, owned and fixed, without ever consuming a formal instrument. A project where everything becomes an NCR has not achieved rigour. It has achieved a paper war, and the people fighting it have stopped looking at the building.
What makes the ladder work is the triggers — the published rules that move an item up it. A ladder applied by mood produces both failure modes simultaneously: paper wars, where everything escalates, and buried problems, where nothing does. Write down the rungs, and write down what moves an item between them.
An issue without an owner and a date is not an issue. It is a future dispute with a timestamp on it, and the timestamp is the part that will be read out.
So: a named person, never a company or a discipline. A date. And a weekly review that looks at the log by AGE rather than by status — because status is what people report and age is what is true. An item that has been open for sixty days is telling you something regardless of what its status field says, and what it is usually telling you is that its owner cannot resolve it and has not said so.
That is the escalation trigger, and it should fire by rule. Ageing past a threshold moves the item up, whether or not anyone feels like escalating it — because the reason an item ages is very often that escalating it would be awkward.
They come out of meetings as actions. Out of walks as observations. Out of coordination reviews as clashes. Out of a phone call as a promise.
And they resolve into other instruments — a fix, an RFI, a site instruction, an NCR — which is exactly where they get lost, because the moment an issue becomes an RFI, the issue is typically closed and the RFI is tracked somewhere else by somebody else. Two systems, one problem, and a gap between them precisely where the handover happens.
The linkage is what stops the evaporation. An issue that spawned an RFI stays visible until the RFI is answered, not until the RFI is raised. Otherwise the log tells you the issue was resolved, and it means the issue was forwarded.
Nothing raised gets lost, because capture is fast enough that people actually use it.
Ageing items escalate by rule rather than by whoever is willing to have the awkward conversation.
Most problems die quietly at the cheapest rung, instead of becoming a formal instrument and a paper war.
An issue that became an RFI stays visible until the RFI is answered — so “resolved” cannot quietly mean “forwarded”.
A photo, a location, one line. Friction is what determines whether the log records the issues, or only the issues somebody had time for.
A person and a date on every item — because a company cannot be asked why something is sixty days old.
Review by age, not by status. Escalation fires on the threshold rather than on somebody’s willingness to raise it.
Into a fix, an RFI, an instruction or an NCR — with the thread kept, so the issue closes when the instrument is answered rather than when it is raised.
Friction is the enemy here more than anywhere else on the project. An issues log that takes two minutes to fill in is an issues log that records the issues somebody had time for.
A person, not a company. An issue without both is a future dispute with a timestamp on it.
Not by status. Status is what people report; age is what is true. And ageing past the threshold escalates by rule, because the reason an item ages is often that escalating it is awkward.
A fix, an RFI, an instruction, an NCR. And the issue stays open until the instrument it became is answered. Otherwise “resolved” means “forwarded”.
The same problem, raised eleven times, in eleven places, by eleven people who each thought it was theirs. Individually each is a small item. Together they are a design fault, and only the cluster shows it.
Items that have met a published trigger — repeated, ignored, aged past the threshold — surfaced by rule, so escalation stops depending on somebody being willing to have the conversation.
Written from the log itself: what aged, what escalated, what closed, and who has the oldest item on the project.
The engineer’s judgment stays in charge; the AI removes the latency and the blind spots.
The log by age, by owner and by zone — with age leading, because status is what people report and age is what is true. Escalation candidates against the published triggers. Repeat clusters, which is where a design fault hides as eleven small items. And the resolution thread: which issues became RFIs, instructions or NCRs, and whether those have actually been answered — because until they are, the issue is forwarded rather than resolved.
An issue is the informal, fast layer: raise it, own it, fix it. An observation is a recorded condition, fixed and photo-verified. Repeated or ignored, it becomes a site instruction. Confirmed as actual non-compliance, it becomes an NCR. A snag is a minor defect at or near completion. Worth being honest: this taxonomy is convention rather than code, and it varies by project — which is exactly why you should publish your own definitions and your own escalation triggers.
Read the full answerA named person, with a date. Never a company and never a discipline — “the MEP subcontractor” cannot be asked why an item is sixty days old, cannot be escalated to, and cannot explain itself. An issue without an owner and a date is not an issue; it is a future dispute that has helpfully recorded the date on which you knew.
By published trigger, not by judgement-of-the-day: typically on repetition, on being ignored past its due date, or when it turns out to need information or a direction nobody on site can give. And when it does escalate, keep the thread — the issue should stay open until the RFI is ANSWERED, not until it is raised. Otherwise your log will tell you the issue was resolved when what actually happened is that it was forwarded.
Review it by age rather than by status, weekly, and escalate on a rule rather than on a feeling. A log becomes a graveyard when items can sit at “in progress” indefinitely without anything happening to them — and they can do that because nobody is looking at the age column, and because escalating somebody else’s stale item is socially expensive. Make the rule do it instead.
Read the full answerRelated modules
Related answers
Zepth is the construction project delivery platform — it runs construction, procurement and asset management on one record, and does the work: reading the drawings, reviewing the submittals, matching the invoices and flagging the risks, with a human sign-off on anything consequential.
A short, tailored walkthrough on your real workflow — no generic demo.