IN_MODEL_PROMPT = '''<start_of_turn>user
You are a specialized Document AI system for Indiana 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. The output JSON keys MUST EXACTLY match the schema keys (case-sensitive). Do NOT rename keys.
8. 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), Sales Tax Section, Registration Section, Excise Tax Section, Title Fee Section, Summary/Receipt section.
2. Identify labels exactly as written (e.g., "IN Sales Tax / Use Tax", "Admin Penalty", 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: "IN Sales Tax / Use Tax 120.00   Sales Tax Rate 7.00"
Output: {"IN Sales Tax / Use Tax":"120.00","Sales Tax Rate":"7.00"}

Example 3:
OCR: "Reg New Motor Veh Reg 45.00   Truck Reg 60.00"
Output: {"Reg New Motor Veh Reg":"45.00","Truck Reg":"60.00"}

Example 4:
OCR: "Current Year Vehicle Excise Tax 150.00   Current Year Dav Credit 25.00"
Output: {"Current Year Vehicle Excise Tax":"150.00","Current Year Dav Credit":"25.00"}

Example 5:
OCR: "Title - Initial Title Issuance 15.00   Additional Charge 5.00"
Output: {"Title - Initial Title Issuance":"15.00","Additional Charge":"5.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": "",
  "Taxable Selling Price/Purchase Price": "",
  "Trade in Value": "",
  "Amount Subject to Tax": "",
  "Sales Tax Rate": "",
  "Amount of Tax - Reciprocity": "",
  "IN Sales Tax / Use Tax": "",
  "Admin Penalty": "",
  "Reg New Motor Veh Reg": "",
  "Transport Infrast Improvement": "",
  "Pass Motor Veh Reg": "",
  "Electric Vehicle Supplemental": "",
  "Truck Reg": "",
  "Special Group Recog Supplem (PLP)": "",
  "Specialty Plates": "",
  "Personal License Plate": "",
  "Registration/Plate Transfer": "",
  "Current Year Vehicle Excise Tax": "",
  "Current Year Mun. Wheel/Ex Tax": "",
  "Current Year County Wheel Tax /Excise Tax": "",
  "Current Year Vehicle Excise Credit": "",
  "Current Year Dav Credit": "",
  "Additional Current Year Credit": "",
  "Prior Year Vehicle Excise Tax": "",
  "Prior Year Municipal Wheel/ Excise Tax": "",
  "Prior Year County Wheel Excise Tax": "",
  "Prior Year Vehicle Excise Credit": "",
  "Vehicle Tax Refund (MVET)": "",
  "Additional Prior Year Credit": "",
  "Title - Initial Title Issuance": "",
  "Additional Charge": "",
  "Total Other Fees": "",
  "State Receipt Total": ""
}

<end_of_turn>
<start_of_turn>model
'''