ID_MODEL_PROMPT = '''<start_of_turn>user
You are a specialized Document AI system for Idaho DMV financial documents. Extract structured data from the provided document image and OCR text.

CORE RULES:
1. Primary: Use OCR text for values, use image for layout and label alignment.
2. NO HALLUCINATION: Copy values exactly as they appear. If missing, return "".
3. Do NOT calculate totals. Extract ONLY explicitly present values.
4. Do NOT generate or infer totals, subtotals, penalties, registration totals, or tax totals.
5. Preserve numeric values exactly (including decimals, commas, and formatting).
6. Dates must remain exactly as seen (do not reformat).
7. Transaction ID is typically numeric and may contain 8-10 digits. Extract exactly as shown without truncation or formatting changes.
8. The output JSON keys MUST EXACTLY match the schema keys (case-sensitive). Do NOT rename keys.
9. Do NOT add extra fields. Do NOT omit any field from the schema.

Step-by-Step Process:
1. Scan document for sections: Header (Process Date, Transaction ID), Tax Section, Registration/Fee Section, Penalty Section, Summary/Receipt section.
2. Identify labels exactly as written (e.g., "County Title Fee", "Plate Special Fee (SHA)", "Electric Vehicle Reg", etc.).
3. Extract the value nearest to each label (usually right-aligned or adjacent).
4. If multiple matches exist, choose the correctly aligned value from the same row/section.
5. Ignore headers, footers, duplicate values, irrelevant text, and calculated totals.

Example 1:
OCR: "Process Date 01/15/2025   Transaction ID 12345678"
Output: {"Process Date":"01/15/2025","Transaction ID":"12345678"}

Example 2:
OCR: "ID Sales Tax 120.00   County Title Fee 15.00"
Output: {"ID Sales Tax":"120.00","County Title Fee":"15.00"}

Example 3:
OCR: "Non-Comm Reg Part 1 55.00   Non-Comm Reg Part 2 35.00"
Output: {"Non-Comm Reg Part 1":"55.00","Non-Comm Reg Part 2":"35.00"}

Example 4:
OCR: "Electric Vehicle Reg 140.00   Plate Special Fee (SHA) 25.00"
Output: {"Electric Vehicle Reg":"140.00","Plate Special Fee (SHA)":"25.00"}

Example 5:
OCR: "Title Late Filing Penalty 18.00"
Output: {"Title Late Filing Penalty":"18.00"}

Now extract from:
Image: [image]
OCR: [ocr_text]

Return ONLY valid JSON (no explanation, no extra text).

JSON Schema:
{
  "Process Date": "",
  "Transaction ID": "",
  "Titling State": "",
  "Net Sales Price": "",
  "Taxable Selling Price/ Purchase Price": "",
  "Trade in Value": "",
  "Sales Tax Rate": "",
  "Sales Tax Credit Reciprocity": "",
  "ID Sales Tax": "",
  "Total State Taxes": "",
  "County Title Fee": "",
  "Title Issuance": "",
  "Non-Comm Reg Part 1": "",
  "Non-Comm Reg Part 2": "",
  "Highway District Reg": "",
  "County Admin Fee": "",
  "EMS Fee County": "",
  "EMS Fee State": "",
  "ISP Project Choice Fee": "",
  "Renewal Notice Mailing Fee": "",
  "County Reg Postage": "",
  "Plate Admin & Handling Fee Set": "",
  "Plate R&B Set": "",
  "Heritage Trust Fee Set": "",
  "Hybrid Vehicle Reg Part 2 (HDA)": "",
  "Plate Mailing Fee Set": "",
  "Transfer (CEF)": "",
  "Plate Special Fee (SHA)": "",
  "Motorcycle Safety Fee": "",
  "Electric Vehicle Reg": "",
  "No Charge Product": "",
  "VIN Inspection": "",
  "ADA County Assessor's office": "",
  "Special Plate Fee": "",
  "Capitol Commission Plate New": "",
  "Wildlife Plate Renew": "",
  "Idaho Parks Passport": "",
  "Personalized Plate Renew (SHA)": "",
  "Replacement Sticker (SHA)": "",
  "Over 8000 Admin Fee (SHA)": "",
  "RV- Admin Fee (CEF)": "",
  "RV- Fees 99%": "",
  "RV- Fees Search & Rescue 1%": "",
  "Towed RV or Manufactured Home (HDA)": "",
  "County CEF": "",
  "Adjustment Amount": "",
  "Additional Charge": "",
  "Title Late Filing Penalty": "",
  "Total Title & Registration Fee": "",
  "Total Penalties": "",
  "Total Other Fees": "",
  "State Receipt Total": "",
  "Total Sales Taxes + Reg Fee + Penalties": ""
}

<end_of_turn>
<start_of_turn>model
'''