Skip to content

Developer Tooling

AV Wire Extract

AV Wire Extract packages a repeatable extraction procedure as a skill an AI agent can execute. Hand it an AV single-line diagram and it returns a structured wire list — the input Clean Taggy was built to consume.

Active development2025 — ongoingPythonAI agentsMCPCAD data
av-300-single-line.dwgSINGLE LINE DIAGRAMW-2210W-2212W-2213W-2214RACK-ARACK-BPATCH-1DSP-01SPK-07EXTRACTED PAIRS4 / 4 CLEANW-2210RACK-ADSP-01W-2212RACK-BDSP-01W-2213RACK-BSPK-07W-2214PATCH-1SPK-07

01 — The problem

What was actually happening

The wire list a project actually needs already exists inside the drawing — but it exists as scattered text scattered across CAD geometry, not as data. Rebuilding it by hand means reading a dense diagram line by line and retyping every cable tag, which is exactly the step that introduces errors downstream.

  • CAD drawings are a binary format built for drafting, not for querying.
  • Cable tags live as loose text entities with no structural relationship to the connections they label.
  • The manual read-and-retype pass is slow and produces the errors the rest of the workflow then has to catch.
  • The same extraction was being repeated per drawing, with no captured procedure to make it consistent.

02 — The solution

What I built, and why

Encode the extraction as an explicit, versioned procedure rather than a one-off script — a skill an AI agent loads on demand, so the knowledge of how to read these drawings is captured once and reused on every sheet.

  • Converts the drawing to a text-parseable interchange format before any interpretation happens.
  • Walks text and geometry together, associating each label with the connection it belongs to instead of dumping strings.
  • Normalises inconsistent tag conventions into a single predictable shape.
  • Outputs clean source-to-destination pairs, ready to feed directly into Clean Taggy.
  • Triggers in plain language — in English or Spanish — so it is usable by whoever has the drawing, not only by its author.

03 — Process

How the work was sequenced

  1. 01

    Study the drawings

    Worked through real single-line diagram sheets to learn how tags, connections and labels are actually laid out — and where the conventions quietly break.

  2. 02

    Find a parseable path

    Established a conversion route out of the binary CAD format into something that can be read programmatically without losing the geometry.

  3. 03

    Associate, don't scrape

    Built the association logic — matching label text to the line it annotates — which is what separates a usable wire list from a list of strings.

  4. 04

    Normalise

    Reduced inconsistent real-world tag formats to one canonical structure so downstream tools can rely on the shape.

  5. 05

    Package as a skill

    Wrapped the whole procedure as an agent skill with explicit triggers, so it is invoked by describing the task rather than by remembering a command.

  6. 06

    Close the loop

    Wired the output format directly to Clean Taggy's input, turning two separate tools into one continuous workflow from drawing to finished tags.

04 — Technology

The stack, as decisions

Extraction

PythonDXF parsingPattern normalisation

Agent layer

Agent skillsModel Context ProtocolStructured output

Integration

Clean TaggyCSV / structured export

05 — Results

What it changed

Drawing → data

A manual read-and-retype pass replaced by a repeatable extraction

Reusable

The procedure is captured once and applied to every sheet the same way

End to end

Output feeds Clean Taggy directly — one workflow, not two tools

The interesting part of applied AI is rarely the model — it is deciding what to hand it. Converting the drawing into a structure the agent could reason over, and capturing the procedure as a reusable skill, is what made the result consistent instead of impressive once.
What it taught

Have a problem worth solving?

Tell me what the process looks like today and where it breaks. If technology is the right answer, I will tell you what I would build — and if it is not, I will tell you that too.