File size: 2,899 Bytes
52c1998
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
p60_prompt = """
You are an expert document parser. Extract the structured information from a UK P60 End of Year Certificate and return it as a JSON object.

Use the following format and structure. Ensure numerical values are parsed correctly, and fields with missing data should use null where appropriate. The "national_insurance_contributions" field should be an array to accommodate multiple NIC letters.

{
  "employee_details": {
    "surname": "",                       // Employee's last name
    "forenames_or_initials": "",        // Employee's first name or initials
    "national_insurance_number": "",    // NI number (e.g. AB123456C)
    "works_payroll_number": ""          // Internal payroll identifier
  },
  "pay_and_income_tax_details": {
    "previous_employments": {
      "pay": 0.00,                       // Pay from previous jobs in the tax year
      "tax_deducted": 0.00              // Tax deducted from previous jobs
    },
    "current_employment": {
      "pay": 0.00,                       // Pay from this employment
      "tax_deducted": 0.00              // Tax deducted from this employment
    },
    "total_for_year": {
      "pay": 0.00,                       // Total pay for the year
      "tax_deducted": 0.00              // Total tax deducted for the year
    },
    "final_tax_code": ""                // Final PAYE tax code (e.g. 1257L)
  },
  "national_insurance_contributions": [
    {
      "nic_letter": "",                 // NIC table letter (e.g. A, B, C, J)
      "earnings": {
        "at_or_above_lel": 0.00,        // Earnings above Lower Earnings Limit
        "above_lel_up_to_pt": 0.00,     // Earnings above LEL up to PT
        "above_pt_up_to_uel": 0.00      // Earnings above PT up to UEL
      },
      "employee_contributions_above_pt": 0.00 // Contributions on earnings above PT
    }
    // ... Add more entries if needed
  ],
  "statutory_payments": {
    "maternity_pay": 0.00,              // Statutory Maternity Pay included
    "paternity_pay": 0.00,              // Statutory Paternity Pay included
    "adoption_pay": 0.00,               // Statutory Adoption Pay included
    "shared_parental_pay": 0.00         // Statutory Shared Parental Pay included
  },
  "other_details": {
    "student_loan_deductions": 0.00     // Student loan deductions (whole £ only)
  },
  "employer_details": {
    "employer_name_and_address": "",    // Employer's name and full address
    "paye_reference": ""                // Employer's PAYE reference (e.g. 123/AB456)
  }
}

✅ Additional Instructions (Optional):
- Extract values as they appear on the document (e.g., keep leading zeroes, currency format).
- If an amount field is empty or not present, use null.
- Preserve all textual details like addresses or names exactly as shown.
- While extracting user full name, then make sure to extract first name followed by last name

"""