Articles in this section

Converting ITPs to CivilPro Format using AI

Most contractors already have their ITPs written up in Word or Excel. Rather than retyping them line by line, you can use an AI assistant (ChatGPT, Claude, Copilot or Gemini) to convert them into CSV files formatted for CivilPro import – with check types, Hold Points and Witness Points derived from your existing notation.

This article gives you a ready-made prompt to copy into your AI tool, plus the steps to review the result and import it into CivilPro.

ⓘ Always check the output before importing, or after import and before usage onsite. Due to inherently variability between AI models, CivilPro cannot take any ownership of outputs you get using the below process - we just hope it saves you time!

AI conversions are a first pass, not a guarantee. Spot-check row counts, Hold Points and Witness Points against your source document before you import. If anything looks off, contact CivilPro support and we will help you sort it out.

Before you start

  • Word (.docx) and Excel (.xlsx) files work best. If your ITP is an older .doc or .rtf file, open it and save it as .docx first.
  • PDFs are less reliable – give it a try. If consistently bad results, convert to Word first if you can, or expect to check the output line by line.
  • If one document contains many ITPs, convert a few at a time. AI assistants become less accurate on very long documents.

Step 1 – Run the prompt

Copy the entire prompt below into your AI assistant, attach your ITP file(s), and send. The assistant will not produce CSVs straight away – it first shows you how it plans to convert your document (the ITPs it found, the column mapping, and how it read your Hold Point and Witness Point notation) and waits for your confirmation.

You are an expert construction QA data processor. Convert the attached Inspection and Test Plan (ITP) document(s) into CSV files formatted for import into CivilPro, a civil construction quality management platform. Follow every rule below exactly. The output feeds a live software import, and small formatting mistakes (a wrong Check Type value, a stray special character, a real line break inside a cell) cause silent import failures.

=== PROCESS: TWO PHASES ===

PHASE 1 – REVIEW (do this first, output no CSV yet):
1. List every ITP found in the attached file(s): title, reference number if present, and count of item rows. One source document may contain several ITPs as separate tables or sheets – treat each as a separate output CSV.
2. Show a proposed column mapping table: each source column, the CivilPro field it maps to, and any source columns that will not be mapped.
3. State how you interpret the inspection notation (the legend defining H/HP, W/WP, S, R, I, M, V or similar codes), and give the expected count of Hold Points, Witness Points, and Check Items per ITP.
4. If the ITP has a Frequency and/or Lot Size column, ask whether to append them to the Description field (the default is yes, append both).
5. Ask about anything ambiguous. Then STOP and wait for my confirmation before producing any CSV.

PHASE 2 – OUTPUT (only after I confirm):
Produce one CSV per ITP, each in its own plain-text code block, preceded only by a suggested filename (e.g. "ITP-01 - Earthworks.csv"). No commentary inside the code blocks. After the last CSV, add a short report: rows converted, rows skipped and why, and any rows where you defaulted a value that I should double-check.

=== OUTPUT FORMAT ===

Each CSV must have exactly these columns, in this order:

Reference Text, Description, Clause, Responsibility, Records, Inspection Method, Check Type, Item Type, Inspection Reqd, Verify Reqd, Approve Reqd

- The first line is the header row exactly as above.
- Enclose every field in double quotes so commas inside cells do not break the structure. Double any quote characters inside a field ("" for ").
- Each line is one complete logical row. Never output a real line break inside a field – use the HTML rules below instead.

=== LOGICAL ROWS ===

A new logical row begins wherever the source has content in the item-number or activity column. Lines that continue a cell's text (often with a blank first column in the source) belong to the SAME logical row – consolidate them into it. Multi-line text within one cell is joined using the HTML line-break rules below, never left as separate CSV rows.

=== COLUMN MAPPING ===

- Activity / Inspection Item / Description of work -> Reference Text. Strip any leading item number ("1.1 Approved Work Methodology" becomes "Approved Work Methodology") – CivilPro numbers the rows itself.
- Acceptance Criteria / Quality Requirement / Criteria -> Description.
- Specification Reference / Spec Ref / Standard / Clause -> Clause.
- Inspection or Test Method / Procedure -> Inspection Method.
- Records / Verifying Document / Evidence -> Records.
- Responsibility -> Responsibility, ONLY if the source has such a column. If not, leave it blank on every row. Never invent or default a responsibility.
- Frequency and/or Lot Size columns -> appended to the end of Description (see formatting rules), if confirmed in Phase 1.
- Item number columns, sign-off/signature columns, and tick columns are not carried into the output.

=== CHECK TYPE (critical) ===

The Check Type field accepts EXACTLY these values: "Check Item", "Witness Point", "Hold Point", "Milestone". Any other value – including the word "Check" on its own – imports as blank. Never abbreviate.

Derive Check Type from the ITP's inspection notation columns (commonly Contractor and Client/Superintendent columns, or a single Type column):

- H, HP, or Hold (in the client/superintendent column, or as the row's type) -> Hold Point
- W, WP, or Witness (either party) -> Witness Point
- Everything else (S, R, I, M, V, review, surveillance, monitor, record, a bare tick, or no code at all) -> Check Item
- Where a row carries codes from both parties, the most restrictive wins: Hold beats Witness beats everything else.
- Codes may carry suffixes or role labels (HP1, H(C), "H PM") – read the leading letter.
- If the document has no inspection notation at all, every item row is a Check Item.

Set the three flag columns from the Check Type:

- Hold Point -> Inspection Reqd TRUE, Verify Reqd TRUE, Approve Reqd TRUE
- Witness Point -> TRUE, TRUE, TRUE
- Check Item -> TRUE, FALSE, FALSE

Write TRUE and FALSE in capitals.

=== SECTION HEADING ROWS ===

If an ITP contains section header rows (e.g. "PRELIMINARIES", "EXCAVATION WORKS") between groups of items:
- Reference Text = the section number if the source has one, otherwise blank
- Description = the section title wrapped in <b><u>...</u></b>
- Item Type = Heading; Check Type = blank; all three flag columns = FALSE
Do not mistake document-control footers ("This document is CONTROLLED", title blocks, revision tables) or notation legends for headings – skip those rows entirely.

=== TEXT FORMATTING RULES ===

Reference Text and Description render HTML; Clause, Records, and Inspection Method are plain text where HTML tags would show literally.

1. Reference Text: wrap every item row's text in <b>...</b>. For Hold Point and Witness Point rows, append the type after the text, underlined, inside the bold, separated by " - ":
   <b>Foundation inspection - <u>Hold Point</u></b>
   <b>Topsoil strip - <u>Witness Point</u></b>
   Check Item rows are bold only, with nothing appended.
2. Description line breaks: replace every line break in the source cell with <br>. For numbered or lettered lists, put <br> before each item. For a colon-introduced list, use <br><br> before the first list item, then <br> between items. Bullet lists become: <ul style="margin: 4px 0; padding-left: 22px; list-style-type: disc;"><li style="margin-bottom: 2px;">item</li>...</ul>
3. Frequency / Lot Size (if confirmed): append at the very end of Description as
   <br><br><u>Max Lot Size</u>: value<br><u>Frequency</u>: value
   Include only the line(s) that have a value; skip cells containing just a dash. Exactly two <br> before the block. If frequency text is already embedded mid-description, move it into this standard block instead.
4. Clause: separate multiple references with comma-space ("Spec 213, Drawings"). Convert semicolons between references to comma-space. No HTML, no line breaks.
5. Records: same as Clause – comma-space separated, plain text.
6. Inspection Method: separate multiple methods with " / " ("Survey / Visual"). Convert semicolons to " / ". No HTML.

=== CHARACTERS (critical) ===

Output plain ASCII only – no character above the standard keyboard set. Convert as you go:
- curly quotes -> straight quotes; en/em dashes -> hyphen; ellipsis -> three dots
- plus-minus sign -> +/- ; greater-equal -> >= ; less-equal -> <=
- degree symbol -> " deg" (25 degC becomes "25 deg C")
- superscript 2 and 3 -> plain 2 and 3 (m2, m3)
- section symbol -> "Section " ; tick marks and crosses -> remove
- Watch for degree signs typed as superscript zero in Word – "250C" in extracted text is usually "25 deg C". Fix these, do not copy the corruption.

=== ITEM TYPE ===

For each item row, scan its text and assign the first match, checking in this order:
1. Environmental – environ, disposal, surplus material, stormwater, sediment, erosion, eco
2. Safety – safety, HSE, PPE, hazard, risk, permit, SWMS, underground
3. Community – community, noise, dust, neighbour, vibration
4. Quality – everything else (the default)
Section headers get "Heading" as described above.

=== ROWS TO SKIP ===

- Rows where both the activity and the acceptance criteria are blank
- Notation legend rows and legend tables (e.g. "H = Hold Point...")
- Sign-off/signature record tables and blank sign-off rows
- Document-control rows, title blocks, and revision tables
Count what you skip and report it in Phase 2.

=== FINAL CHECKS BEFORE PRESENTING ===

- Row count per CSV matches the source ITP's item count
- Every Check Type is exactly "Check Item", "Witness Point", "Hold Point", or "Milestone"
- Hold Point and Witness Point counts match the source notation
- No character above ASCII anywhere in the output
- No real line breaks inside any field
- Every field is double-quoted

Begin with Phase 1 now.

Step 2 – Review and confirm

Check the assistant’s summary against your document before confirming:

  • Did it find every ITP, with the right number of rows in each?
  • Is the column mapping sensible?
  • Do the Hold Point and Witness Point counts match your notation?

Correct anything that is wrong, then tell it to proceed. It will output one CSV per ITP.

Step 3 – Save the CSV files

Copy each CSV block into a plain text editor and save it with a .csv file name (remove default '.txt'):

  • Windows: Notepad > File > Save As > set “Save as type” to All Files > name the file, e.g. ITP-01 Earthworks.csv
  • Mac: TextEdit > Format > Make Plain Text > paste > save with the .csv name

ⓘ Do not re-save the file in Excel before importing.

Opening and saving the CSV in Excel can strip the quoting and change special characters. If you want to inspect the file, open it in a text editor, or in Excel without saving.

Step 4 – Import into CivilPro

Follow Import ITP from CSV files to bring each CSV into CivilPro. The columns in your file are named to match CivilPro’s import fields, so mapping the headings during import is straightforward.

After your first import, open a few inspection items and confirm the Hold Points and Witness Points landed where you expect, the bold text renders correctly, and there are no odd characters. Once the first ITP imports cleanly, the rest of the batch will follow the same pattern.

Related articles

Was this article helpful?
0 out of 0 found this helpful

More Resources

  • Watch Demo

    See how CivilPro supports smarter, more efficient Project and QA management

  • Contact Hours:

    8:30am - 5pm AEST Monday to Friday; Closed on Saturday and Sunday

  • Follow Us

    Stay connected - follow us on LinkedIn for updates, tips and announcements