You are auditing a construction drawing set (the attached PDF) for OBJECTIVE, DOCUMENT-INTERNAL CONSISTENCY ONLY. Scope rules: - Check only whether the drawing set agrees with itself. Do NOT comment on design quality, code compliance, constructability, quantities, takeoff, cost, or anything requiring outside knowledge. - Do not invent sheets, details, schedule rows, keynotes, or legends. If something is not present in the document, say it is absent. Every finding must cite where in the set you saw it. - Review every page of the attached PDF. If you could not read some pages or some text (e.g. too small), say so explicitly in "coverage_notes" rather than guessing. Perform these checks: 1. SHEET INVENTORY. List every sheet: PDF page number (1-based), sheet number, sheet title. 2. SHEET INDEX vs SHEETS PRESENT. If the set contains a sheet index / drawing list, compare it to the sheets actually present. Report: sheets listed in the index but missing from the set ("Sheet is missing"), sheets present but not in the index ("Unused index entry" / not indexed), and duplicate sheet numbers ("duplicated"). If there is no sheet index, say so. 3. CALLOUTS / DETAIL AND SHEET REFERENCES. Find every callout bubble/tag that references another view: section marks, elevation marks, detail callouts, enlarged-plan / room-layout callouts, and any "see sheet X" references. Each typically shows a detail/view number and a target sheet number. For each one, check that the target sheet exists in this set and, where a detail number is given, that the target sheet actually contains a view with that number/title. Classify each callout as one of: - "verified" (target sheet exists and the referenced view/detail is on it) - "Reference Missing" (callout's target sheet or reference text is missing/blank/unreadable as drawn) - "Sheet is missing" (target sheet number does not exist in this set) - "Incorrect Ref. Detail" (target sheet exists but the detail/view number does not exist on it, or points to the wrong view) - "Unused" (a detail/view on a sheet that is never referenced by any callout, if you can detect it) - "duplicated" (two different views share the same number on the same sheet, or the same callout is duplicated) 4. DOOR TAGS vs DOOR SCHEDULE. Find every door tag (door mark/number shown on plans and room layouts) on every sheet, counting each occurrence on each sheet separately. Find the door schedule(s). Match each plan door tag to a schedule row by door number. Matching rule: case-insensitive, ignoring hyphens, spaces and periods (e.g. "106-A" matches "106A"); otherwise exact. Classify each tag occurrence as: - "verified" (matches a schedule row) - "Missing From Schedule" (tag appears on a plan but has no schedule row) - "duplicated" (the same door number appears in the schedule more than once, or one physical door is tagged with conflicting numbers) Also report schedule rows whose door number never appears on any plan ("schedule row unused / missing from plan"). 5. KEYNOTES. Find every keynote legend / keynote list and every keynote tag on the drawings. Match each keynote tag to an entry in the legend on the same sheet (or the set-wide legend if that is how the set is organized). Classify each tag occurrence as "verified", "Missing From Schedule" (tag has no legend entry), or "duplicated"; also report legend entries never used on the drawing ("Unused"). 6. SCHEDULES. List every schedule in the set (door, window, finish, equipment, fixture, panel, etc.). For each schedule row, check that the item it describes is tagged somewhere on the drawings; report rows never used ("Schedule row unused") and duplicate row numbers ("duplicated"). 7. MEP TAGS vs MEP SCHEDULES. Separately for MECHANICAL, ELECTRICAL and PLUMBING: find every equipment / fixture / device tag on the drawings (e.g. AHU-1, RTU-2, EF-3, VAV-1, WH-1, P-1, panel names, circuit references like "LP-1/12") and match it to its schedule, panel schedule, or legend. Classify each tag occurrence as "verified", "Missing From Schedule", "Incorrect Ref. Detail" (e.g. circuit points to a panel or circuit number that does not exist), or "duplicated". If a discipline has no tags or no schedules in this set, say so. 8. ANY OTHER TAGS vs LEGENDS. If the set contains other tagged items with a legend or schedule (e.g. partition/wall types, room/finish tags), check them the same way. Do not invent legends that are not present. OUTPUT FORMAT. Return ONLY a single JSON object (no prose before or after, no markdown fences) with exactly this structure: { "sheets": [ {"page": 1, "sheet_number": "", "title": ""} ], "sheet_index": {"present": true/false, "location": "", "entries": [""] }, "schedules_and_legends_found": [ {"type": "door_schedule|keynote_legend|...", "sheet": "", "page": 0, "row_count": 0, "columns": [""] } ], "schedules_and_legends_absent": [""], "door_schedule_rows": [ {"door_number": "", "sheet": ""} ], "findings": [ {"category": "sheet_index|callouts|door_tags|door_schedules|keynotes|mechanical|electrical|plumbing|", "issue_type": "verified|Reference Missing|Incorrect Ref. Detail|Sheet is missing|Unused|duplicated|Missing From Schedule|Schedule row unused|", "source_sheet": "", "source_page": 0, "source_mark": "", "expected_target": "", "notes": ""} ], "counts": { "callouts": {"detected": 0, "verified": 0, "issues": 0}, "sheet_index": {"detected": 0, "verified": 0, "issues": 0}, "door_tags": {"detected": 0, "verified": 0, "issues": 0}, "door_schedules": {"detected": 0, "verified": 0, "issues": 0}, "keynotes": {"detected": 0, "verified": 0, "issues": 0}, "mechanical": {"detected": 0, "verified": 0, "issues": 0}, "electrical": {"detected": 0, "verified": 0, "issues": 0}, "plumbing": {"detected": 0, "verified": 0, "issues": 0}, "": {"detected": 0, "verified": 0, "issues": 0} }, "coverage_notes": "" } Include one "findings" entry per sheet-index entry, callout occurrence, door-tag occurrence, door-schedule row, keynote tag occurrence and MEP tag occurrence (verified ones included), so the counts can be recomputed from the findings. "detected" = total occurrences found; "verified" = occurrences that check out; "issues" = detected - verified.