Topics on this page

Configure ISO VINMASTER in BriteSuite

VINMASTER allows you to locate the correct ISO statistical symbols, as well as other relevant insurance information, for vehicles that are contained in ISO’s symbol and identification manual.

You can search the database by either VIN (vehicle identification number) or by the model name/description of the vehicle. VINMASTER also offers a trailer dataset that uses different search parameters (year_built and price_new).

VINMASTER files are flat files that are loaded into a table to look up the information. Unlike other integrations that call out to the vendor each time, this integration only involves calling out to the table(s). 

VINMASTER offers several benefits:

  • Saves time during application intake.
  • Makes risk assessment much easier and more accurate.  
  • Increases data management efficiency.

Implement ISO VINMASTER

You have two options to implement VINMASTER with your BriteSuite:

  • Use BriteCore’s LexisNexis C.L.U.E. plugin to provide vehicle information. If you choose to use our pre-written plugin, all you need to do is map your data (Steps 2 and 3.) 

Note: Our team provides data mapping as an additional service.

  • You can write your own plugin using custom logic.

Note: At this point, plugins are available only in the quote flow for auto policy.

To learn more about plugins, please refer to BriteCore’s plugins documentation.

This tutorial walks you through implementing VINMASTER in BriteCore if you want to write your own plugin. It can also help you understand how VINMASTER integrates with BriteSuite.

VINMASTER functionality

This section provides an overview of how VINMASTER works in BriteQuote.

Vehicle screen (Request data)

The VINMASTER button (labeled Lookup Vehicle) is located on the Vehicles screen of the quote flow. The required request parameters include:

  • VIN
  • Vehicle year
  • State
  • Policy effective date

Note: The Make and Model fields are blank when a new vehicle is added and prior to calling VINMASTER, Vehicle Performance has a default value of “Standard,” and Anti-lock brakes has a default value of “No.”

VINMASTER will update the default values if needed.

This response data from VINMASTER is updated on the Vehicles screen.

Note:  This integration does not run automatically. The Agent must initiate the VINMASTER request by selecting the Lookup Vehicle button.

Vehicle screen (Response data)

The data returned from VINMASTER updates the following fields:

  1. VINMASTER updates the following fields: 
    • Make 
    • Model
  2. To continue, select the Primary Driver Assignment (a required field). 
  3. VINMASTER updates the following additional fields:
    • Performance
    • Anti-lock brakes 
  4. Select Comprehensive Coverage. VINMASTER updates the Comprehensive Symbol and the Anti-Theft Code so they can be used in rating.
  5. Select Collision Coverage. VINMASTER updates the Collision Symbol so it also can be used in rating.

Set up VINMASTER in BriteSuite

To set up VINMASTER  in BriteSuite, you need to do the following:

Step 1: Obtain your VINMASTER license

Once you sign up with VINMASTER you will receive your licensed data. VINMASTER will send the data to BriteCore directly. The datasets are updated quarterly.

Step 2: Contact your BriteCore support team

BriteCore will load and deploy the data files to your site.  Since this requires AWS access, a BriteCore engineer will handle this.

Step 3: Consider your configuration options

Consider your configuration options and fill out the VINMASTER configuration questionnaire.

Step 4: Create the data mapping

Map the data from VINMASTER to your lines configuration. In this step, you are taking your specific user-defined fields from lines and mapping them to the data you are receiving from VINMASTER. (and back).

 To learn more about how data mapping works in BriteCore, please refer to our data mapping documentation. Sample data for a POST/mappings request.

View code
{
    "data": {
        "type": "mapping",
        "attributes": {
            "from": "vinmaster_vehicle",
            "to": "quote",
            "mapping": {
			“template”: "””
{% set has_anti_lock = source.anti_lock_brake_indicator == 'S'%}
{% if source.anti_theft_indicator %}
    {% set anti_theft_code = source.anti_theft_indicator|lower %}
    {% else %}
    {% set anti_theft_code = 'None' %}
    {% endif %}
{% set performance = {
    '1': 'performance_intermediate',
    '2': 'performance_high',
    '3': 'performance_sports',
    '4': 'performance_sportsPremium'
    }[source.performance_indicator] | default('performance_standard') %}
{
    \"model\": \"{{source.basic_model_name}}\",
    \"comprehensiveSymbol\": \"comprehensiveSymbol_{{source.comprehensive_rating_symbol}}\",
    \"collisionSymbol\": \"collisionSymbol_{{source.collision_rating_symbol | int}}\",
    \"hasAntiLock\": {{has_anti_lock}},
    \"antiTheftCode\": \"antiTheftCode_{{anti_theft_code}}\",    \"grossWeight\": {% if source.gross_vehicle_weight is not none %} \"{{source.gross_vehicle_weight}}\" {% else %} 0 {% endif %},
    \"bodyStyle\": \"{{source.body_style}}\",
    \"performance\": \"{{performance}}\",
    \"circular_number\": \"{{source.circular_number}}\",
    \"class_code\": \"{{source.class_code}}\",
    \"combined_symbol\": \"{{source.combined_symbol}}\",
    \"curb_weight\": \"{{source.curb_weight}}\",
    \"daytime_running_lights\": \"{{source.daytime_running_lights}}\",
    \"effective_date\": \"{{source.effective_date}}\",
    \"electronic_stability_control_indicator\": \"{{source.electronic_stability_control_indicator}}\",
    \"engine_cylinders\": \"{{source.engine_cylinders}}\",
    \"engine_size\": \"{{source.engine_size}}\",
    \"engine_type\": \"{{source.engine_type}}\",
    \"field_change_indicator\": \"{{source.field_change_indicator}}\",
    \"four_wheel_drive_indicator\": \"{{source.four_wheel_drive_indicator}}\",
    \"full_model_name\": \"{{source.full_model_name}}\",
    \"height\": \"{{source.height}}\",
    \"horsepower\": \"{{source.horsepower}}\",
    \"iso_make_code\": \"{{source.iso_make_code}}\",
    \"make\": \"{{source.make}}\",
    \"model_year\": \"{{source.model_year}}\",
    \"ncic_make_code\": \"{{source.ncic_make_code}}\",
    \"payload_capacity\": \"{{source.payload_capacity}}\",
    \"price_new_symbol\": \"{{source.price_new_symbol}}\",
    \"price_new_symbol_one_position\": \"{{source.price_new_symbol_one_position}}\",
    \"restraint_indicator\": \"{{source.restraint_indicator}}\",
    \"special_information_selector\": \"{{source.special_information_selector}}\",
    \"state_exception\": \"{{source.state_exception}}\",
    \"symbol_change_indicator\": \"{{source.symbol_change_indicator}}\",
    \"tonnage_indicator\": \"{{source.tonnage_indicator}}\",
    \"vehicle_series_rating_symbol\": \"{{source.vehicle_series_rating_symbol}}\",
    \"vin\": \"{{source.vin}}\",
    \"vin_change_indicator\": \"{{source.vin_change_indicator}}\",
    \"wheelbase\": \"{{source.wheelbase}}\",
    \"wmi\": \"{{source.wmi}}\"
    }"””
}
        }
    }
}

Sample data mapping for trailers

View code
{
    "data": {
        "type": "mapping",
        "attributes": {
            "from": "vinmaster_trailer",
            "to": "quote",
            "mapping": {
                "template":
                    """{\"collisionSymbol\": \"collisionSymbol_{{source.two_position_symbol|sub(\"^0+\", \"\")}}\", \"comprehensiveSymbol\": \"comprehensiveSymbol_{{source.two_position_symbol|sub(\"^0+\", \"\")}}\"}"""
            },
        },
    }
}

Step 5: Write the plugin

If you are using BriteCore’s VINMASTER  plugin, skip this step.

To write your own plugin, interface with VINMASTER at:

View code
POST <integrations url>/vinmaster/physical-damage/search-by-vin/

For trailers:

View code
POST <integrations url>/vinmaster/physical-damage/search-trailers/

Add this following script to the header of your HTML file:

View code
<script src="https://unpkg.com/@britecore/ui-plugins-client"> </script>

You can now use the BriteCorePlugin helper so your plugin can communicate with BriteCore:

View code
import { enabled, visible, onClick, plugin } from './lib';

plugin.initialize({
  "button-row": {
    buttons: [
      {
        text: "Lookup Vehicle",
        callback: onClick,
        visible: visible,
        enabled: enabled,
      },
    ],
  },
});

Sample response from VINMASTER

View code
{
  "data": {
    "anti_lock_brake_indicator": "S",
    "anti_theft_indicator": "P",
    "basic_model_name": "C230",
    "body_style": "SEDAN 4D",
    "circular_number": "0708",
    "class_code": "34",
    "collision_rating_symbol": "18",
    "combined_symbol": "1818",
    "comprehensive_rating_symbol": "18",
    "curb_weight": 3405.0,
    "daytime_running_lights": "S",
    "effective_date": "2007-10-01",
    "electronic_stability_control_indicator": "S",
    "engine_cylinders": "6",
    "engine_size": "2.5",
    "engine_type": null,
    "field_change_indicator": null,
    "four_wheel_drive_indicator": null,
    "full_model_name": "C230 SPORT",
    "gross_vehicle_weight": 0.0,
    "height": 55.6,
    "horsepower": 201.0,
    "iso_make_code": "MBNZ",
    "make": "Mercedes Benz",
    "model_year": 2006,
    "ncic_make_code": "MERZ",
    "payload_capacity": 0.0,
    "performance_indicator": null,
    "price_new_symbol": null,
    "price_new_symbol_one_position": "L",
    "restraint_indicator": "R",
    "special_information_selector": null,
    "state_exception": null,
    "symbol_change_indicator": null,
    "tonnage_indicator": "S",
    "vehicle_series_rating_symbol": "L",
    "vin": "WDBRF52H&6",
    "vin_change_indicator": null,
    "wheelbase": 106.9,
    "wmi": "WDB"
  }
}
}

Sample response for trailers

View code
{
 "data": {
   "model_year_from": 1990,
   "model_year_to": 2010,
   "one_position_symbol": "1",
   "price_bracket_from": 0,
   "price_bracket_to": 6500,
   "two_position_symbol": "01"
 }
}

Step 6: Host your plugin in a public location

If you are using BriteCore’s VINMASTER plugin, BriteCore hosts the plugin for you. 

Otherwise, each plugin is a HTML document rendered in a hidden iframe. BriteCore’s UI queries the plugins available and renders any plugin on the specified pages.

Since BriteCore’s UI runs in a browser, the request for the plugin must occur without credentials to a publicly available location, or BriteCore must host the plugin placing the HTML file behind our authentication.

Step 7: Register the plugin in BriteIntegrations

If you are using BriteCore’s VINMASTER plugin, BriteCore registers the plugin for you. 

Otherwise, send an API call to BriteIntegrations using the /plugins/ endpoint to POST.

Sample request payload

View code
{
    "type": "plugin",
    "attributes": {
      "name": "VINMASTER",
      "base_url": "integrations.integrations-sandbox.britecore.com",
      "plugin_slots": [
        {
          "location": {
            "type": "bottom-row"
          },
          "plugin_file_path": "/VINMASTER/plugin",
          "slot_name": "britequote:risk-edit:button-row"
        }
      ],
      "configuration": {}
    }
  }