Skip to main content

Phase 1

Overview

In phase 1 we will focus on the following:

  • Creating an application with the following applicant-level verifications (sometimes referred to as stipulations):
    • residence
    • identity
  • Submitting a driver's license image file to satisfy the verifications above
  • Receiving the analyses back from Informed

Checklist

Locate the Python script

In your terminal navigate to the the destination directory containing the unzipped folder:

cd <local directory>/implementation_guide_phases/phase1/python
tip

The accompanying zip file can be accessed here.

Install requirements

While in the directory above, ensure you have the necessary python modules available:

pip install -r requirements.txt

Update the webhook

Update the value of the webhook variable at the top of main.py with the callback endpoint you created.

Run the script

Once the checklist above is complete, run:

python main.py

You can look over the printouts in your terminal to see:

  • All the stages described below:
    • payload printouts
    • synchronous responses
    • steps taken to push payloads and files to Informed
  • That the payloads match the specifications in the documentation
  • The synchronous responses received from Informed

Verify Results

The script did the following:

  1. Converted the CSV data into a valid JSON payload (as described in register application)
  2. Submitted the payload to Informed and received an app_id from Informed in the synchronous response
  3. Used this app_id to send a list of filenames to Informed and received URL's for each image (the filenames are taken from ../test_images/<app_ref_id>)
  4. Used these URL's to upload all the files to their respective URL's
  5. Asynchronous responses were sent to the webhook provided
  6. The webhook received one extractions response for each file uploaded and one verifications response once all files have been classified, extracted, and verified by Informed

Continue to phase 2 to see the process of adding the Income verification.

Example app registration payload

register app payload (seen in terminal at run)
{
"application_reference_id": "Phase1_appid_001_ea03ac83-28dc-49c5-8523-5ee1974abec0",
"application_date": "2021-07-20T00:00:00",
"contract_date": "2021-08-02T00:00:00",
"contract_type": "Paper",
"applicants": {
"applicant1": {
"first_name": "Jo",
"middle_name": "M",
"last_name": "Boren",
"suffix": "JR",
"phone": "919-123-3456",
"ssn": "123445678",
"date_of_birth": "1972-04-11",
"address_info": [
{
"address": {
"street_address": "8717 S 4th Ave",
"city": "Inglewood",
"state": "CA",
"zip": "90305"
},
"start_date": "2019-11-21",
"is_current": true
}
],
"employment_info": [
{
"employment_type": "Employed",
"employer_name": "Home Depot",
"occupation": "Stocker",
"income": {
"period": "Monthly",
"amount": 4000.0
},
"start_date": "2018-04-13",
"is_current": true
}
],
"additional_incomes": [
{
"source": "Other",
"income": {
"period": "Monthly",
"amount": 300.0
}
}
]
}
},
"verifications": {
"residence": [
{
"belongs_to": "applicant1"
}
],
"identity": [
{
"belongs_to": "applicant1"
}
]
},
"services": [
"extract",
"verify"
],
"webhook": "https://your.callback.com/here"
}

Example asynchronous extractions response

extractions response (received at callback url)
{
"event_type": "extractions",
"application_id": "15d6f126-b33f-4beb-8587-c8add4482cf9",
"application_reference_id": "Phase1_appid_001_ea03ac83-28dc-49c5-8523-5ee1974abec0",
"documents": {
"driver_license_front": [
{
"data_action": "create",
"document_id": "93c9bc2f-5eea-4ada-a059-040b8efa475f",
"file_ids": [
"5cdbafa6-1ab7-4d84-8a1d-0c0d0f1d9686"
],
"file_reference_ids": [
"../test_images/appid_001/DriversLicense.png"
],
"url": "https://file-location-in-S3.com",
"extracted_data": {
"applicants": {
"applicant1": {
"address": {
"street_address": "8717 South 4th Avenue",
"street_2": null,
"city": "Inglewood",
"state": "CA",
"zip": "90305"
},
"first_name": "Jo",
"middle_name": null,
"last_name": "Boren",
"suffix": null,
"dob": "1965-10-12"
}
},
"expiration_date": "2027-10-12",
"issue_state": "CA",
"id_number": "D1234568"
},
"updated_at": "2023-04-24T18:58:19Z"
}
]
}
}

Example asynchronous verifications response

verifications response (received at callback url)
{
"event_type": "verifications",
"application_id": "15d6f126-b33f-4beb-8587-c8add4482cf9",
"application_reference_id": "Phase1_appid_001_ea03ac83-28dc-49c5-8523-5ee1974abec0",
"data_sources": {
"image_files": [
{
"file_id": "5cdbafa6-1ab7-4d84-8a1d-0c0d0f1d9686",
"file_reference_id": "../test_images/appid_001/DriversLicense.png"
}
],
"structured_data": []
},
"verifications": {
"residence": [
{
"status": "pass",
"belongs_to": "applicant1",
"updated_at": "2023-04-24 18:58:19 +0000",
"description": "Informed searched for a Driver's License and found one in the deal jacket. The Driver's License matches the applicant's name. The Driver's License matches the applicant's address. The Driver's License was issued by a U.S. State. The Driver's License is not expired.",
"verification_questions": {},
"acceptable_documents": {
"driver_license_front": [
{
"document_id": "93c9bc2f-5eea-4ada-a059-040b8efa475f",
"file_ids": [
"5cdbafa6-1ab7-4d84-8a1d-0c0d0f1d9686"
],
"file_reference_ids": [
"../test_images/appid_001/DriversLicense.png"
],
"category": "Driver's License",
"document_questions": {
"matches_applicant_name": {
"question": "Matches the applicant's name?",
"expected": "Jo Boren",
"answer": "Jo Boren",
"status": "pass"
},
"is_us_issued_id": {
"question": "Is a US Driver's License?",
"expected": true,
"answer": "CA",
"status": "pass"
},
"is_expired": {
"question": "Expired?",
"expected": ">08/02/2021",
"answer": "10/12/2027",
"status": "pass"
},
"matches_applicant_address": {
"question": "Matches the applicant's address?",
"expected": "8717 S 4th Ave Inglewood CA 90305",
"answer": "8717 S 4th Ave, Inglewood, CA 90305, USA",
"status": "pass"
}
}
}
]
},
"recommendations": []
}
],
"identity": [
{
"status": "pass",
"belongs_to": "applicant1",
"updated_at": "2023-04-24 18:58:19 +0000",
"description": "Informed searched for a Driver's License and found one in the deal jacket. The Driver's License matches the applicant's name. The Driver's License is not expired. The Driver's License was issued by a U.S. State. The Driver's License may not show the same Identification Number as provided by the Applicant; a manual review is needed. The Driver's License may not show the same Expiration Date as provided by the Applicant; a manual review is needed.",
"verification_questions": {},
"acceptable_documents": {
"driver_license_front": [
{
"document_id": "93c9bc2f-5eea-4ada-a059-040b8efa475f",
"file_ids": [
"5cdbafa6-1ab7-4d84-8a1d-0c0d0f1d9686"
],
"file_reference_ids": [
"../test_images/appid_001/DriversLicense.png"
],
"category": "Driver's License",
"document_questions": {
"matches_applicant_name": {
"question": "Matches the applicant's name?",
"expected": "Jo Boren",
"answer": "Jo Boren",
"status": "pass"
},
"is_us_issued_id": {
"question": "Is a US Driver's License?",
"expected": true,
"answer": "CA",
"status": "pass"
},
"is_expired": {
"question": "Expired?",
"expected": ">08/02/2021",
"answer": "10/12/2027",
"status": "pass"
},
"matches_cudl_driver_license_id": {
"question": "Matches Drivers License identification number?",
"expected": "",
"answer": "D1234568",
"status": "review"
},
"matches_cudl_driver_license_expiration_date": {
"question": "Matches Drivers License expiration date?",
"expected": "",
"answer": "2027-10-12",
"status": "review"
}
}
}
]
},
"recommendations": []
}
]
}
}