Local demo: Contractor corrections analysis and response — two-phase flow with a human-in-the-loop pause. Phase 1 reads the corrections letter, researches codes, views plan sheets, and generates questions for the contractor. The agent STOPS and presents questions to the user. After the user provides answers, Phase 2 generates the full response package (response letter, professional scope, corrections report, sheet annotations). Triggers on: 'Analyze these corrections' or 'Run the contractor flow on [path]'.
mikeOnBreeze193 estrellas21 feb 2026
Ocupación
Categorías
Ventas y Marketing
Contenido de la habilidad
Run the contractor-side corrections analysis and response locally. You are helping a contractor understand and respond to a city corrections letter on their ADU permit.
This is a two-phase flow with a pause in the middle. Phase 1 produces questions. You STOP and present them. The user answers. Then Phase 2 generates deliverables.
How to Invoke
The user provides:
Corrections letter — PNG images or a PDF of the corrections letter (typically 1-3 pages)
Plan binder — either a PDF path or a directory of pre-extracted PNGs
(Optional) City name and project address — auto-detected from the corrections letter if not provided
Example invocations:
"Analyze these corrections for my Placentia ADU project. Corrections: test-assets/corrections/. Plans: test-assets/01-extract-test/pages-png/"
"Run the contractor flow. Corrections letter: path/to/corrections-p1.png and path/to/corrections-p2.png. Plan binder: path/to/plans.pdf"
"I got corrections back from the city. Here they are: [paths]"
Skills relacionados
Input Resolution
Corrections letter:
If PNG files: use directly with vision
If a directory: find all PNGs in it, sort by name, read each as a page
If PDF: extract to PNGs first (same as plan binder extraction below)
Plan binder:
If a directory of PNGs: use directly. Check for pre-existing sheet-manifest.json and title-blocks/.
If a PDF: extract with pdftoppm -png -r 200 "<input.pdf>" "<output-dir>/pages-png/page"
Output Directory
Create demo-output/contractor-<city>-<timestamp>/ in the workspace root. All output files go here.
PHASE 1: Analysis
Step 1.1: Parse Corrections Letter (~30 sec)
Read the corrections letter pages visually. Extract:
Project info: address, city, jurisdiction number, job description, date, reviewer name
Each correction item as a structured object:
Item number (preserve original numbering, including sub-items like 3a, 3b, 3c)
Original text (exact wording)
Code references (CRC, CBC, ASCE, CPC, B&P Code, municipal code)
Plan sheet references (Sheet A1, Detail 2/A3, etc.)
Review round (1st review outstanding vs. 2nd review new)
Bold/emphasis flags
Write corrections_parsed.json to output directory.
Step 1.2: Build Sheet Manifest (~30-90 sec)
Run concurrently with Step 1.1.
Follow the adu-targeted-page-viewer skill workflow:
Read page 1 (cover sheet) visually for the sheet index
Match sheet IDs to page numbers (title block reading if count mismatch)
Write sheet-manifest.json
Step 1.3: Parallel Research (~60-90 sec)
After Steps 1.1 and 1.2 complete, launch three concurrent subagents:
Questions are informed by the code research — they ask for specific data, not vague descriptions
Write contractor_questions.json.
Also write state_law_findings.json (from Subagent A) and any city research files.
⛔ STOP HERE — Present Questions to the User
After Phase 1 completes, you MUST stop and wait for the user.
Present the results in this format:
Phase 1 Complete — Corrections Analysis
Project: [address], [city] — [permit number]
Corrections: [N] items parsed from [review round]
Breakdown: [X] auto-fixable, [Y] need your input, [Z] need professional work
Questions for You
For each question group (organized by correction item):
Item [#] — [summary]
[research context — why this matters, what the code says]
[question text]
Options: [if choice type]
[question text]
...
Auto-Fixable Items (no input needed)
Item [#]: [summary] — [what will be done]
...
Professional Items (scoped for your design team)
Item [#]: [summary] — needs [professional role]
...
Answer the questions above and I'll generate your response package.
You can also say:
"Use the mock answers" (loads test-assets/mock-session/contractor_answers.json)
"Skip the questions, just generate with what you have" (Phase 2 runs with TODO placeholders)
Wait for the user's response before proceeding to Phase 2.
PHASE 2: Generate Response Package
Triggered when the user provides answers. Three ways this happens:
User answers inline — Parse their answers from the conversation. Map to question IDs.
User says "use mock answers" — Load test-assets/mock-session/contractor_answers.json
User says "skip" or "generate with what you have" — Proceed with empty answers; TODO placeholders in outputs.
Write contractor_answers.json to the output directory (even if loaded from mock).
Step 2.1: Load Phase 1 Context
Read all Phase 1 outputs from the output directory:
corrections_categorized.json — the backbone, read first
contractor_answers.json — map answers to items
sheet-manifest.json — for sheet references
corrections_parsed.json — for original wording
Step 2.2: Generate Four Deliverables
Follow the adu-corrections-complete skill specification. Generate all four:
1. response_letter.md — Professional letter to the building department
Address EVERY item, even procedural ones
Preserve original correction wording
Incorporate contractor answers with code justification
Reference specific sheets from manifest
End with a sheet revisions summary table
2. professional_scope.md — Work breakdown by professional
Group by role: Designer, Structural Engineer, HERS Rater
Include Key Specifications section with contractor-provided details
Ready-to-use notes for the design team (DFU justification, grade table, dimensions)
Status per item: READY, PENDING, FINAL STEP
3. corrections_report.md — Status dashboard / checklist
Summary table by category
Key findings from contractor answers (capacity conclusions, drainage assessment)
Action items checklist with checkboxes
Critical path (what blocks what, what can run in parallel)