Account Scoring models
Applies to: B2B
Account scoring algorithm helps identify accounts/ opportunities at different stages of the sale funnel and evaluate their likelihood of making a product purchase/ subscription. This helps marketers identify conversation-ready opportunities.
Also commonly known as: Opportunity scoring, Opportunity qualification
What is Account scoring algorithm?
The Account scoring algorithm scores B2B accounts on their likelihood to purchase or their likelihood to subscribe to a product. The model uses a combination of firmographic attributes, contacts’ information and their engagement behavior to assign a numerical score to each account. Account scores are timestamped for every account, allowing you to more effectively target account segments and align sales and marketing strategies.
Parameters of the model
To create and configure the model the following parameters must be defined:
-
Algorithm: Choose the Predictive Account Scoring B2B algorithm in Unity.
-
Lookback window: You must also set a lookback window (number of days to analyze historical data)
-
-
Queries: The queries you select generate the dataset used for both model training and scoring.
-
Inputs: Inputs are attributes from the Oracle Unity data model that the model uses during training and scoring.
-
Outputs: These are the data objects and attributes from the Unity data model that store the model's output values. You can customize the default output mappings if needed.
Model inputs
The Account scoring model uses the following data. For the model to successfully run, check the sections: key input considerations, key data guidelines and best practices.
| Attribute from Unity data object | Attribute name in the query | Unity Data object | Description of the attribute | Data Type | Must have? |
| AnnualRevenue | annualrevenue | Account/ MasterAccount | Annual Revenue of the company | Float | |
| EmployeeTotal | employeetotal | Account/ MasterAccount | No. of employees in the company | Int | |
| LineOfBusiness | lineofbusiness | Account/ MasterAccount | Industry of the contact | String | |
| NAICSCode | naicscode | Account/ MasterAccount | North American Industry Classification System Code | String | |
| SICCode | siccode | Account/ MasterAccount | Standard Industrial Classification Code | String | |
| SourceAccountID/ SourceMasterAccountID | sourceaccountid | Account/ MasterAccount | Unique identifier for the account | String | Yes |
| SourceID | sourceid | Account | Source ID of the Account | String | Yes |
| YearEstablished | yearestablished | Account/ MasterAccount | Year of establishment of the company | String | |
| Customer | Contact's Email Domain | String | |||
| JobTitle | jobtitle | Customer | Title of the Contact. e.g. VP, Manager, Analyst etc. | String | |
| JobTitleLevel | jobtitlelevel | Customer | Level assigned to each job title | String | |
| okToCall | oktocall | Customer | Flag reflecting whether the contact is Okay to be contacted via Call | String | |
| okToEmail | oktomail | Customer | Flag reflecting whether the contact is Okay to be contacted via mail | String | |
| okToMail | oktoemail | Customer | Flag reflecting whether the contact is Okay to be contacted via Email | String | |
| okToNotify | oktonotify | Customer | Flag reflecting whether the contact is Okay to be contacted via Push Notification | String | |
| okToText | oktotext | Customer | Flag reflecting whether the contact is Okay to be contacted via Text | String | |
| SourceCustomerID | sourcecustomerid | Customer | Unique identifier for the contact | String | Yes |
| AvgCompositeScore | avg_composite_score | Event | Intent score, if available | Float | |
| EventTS | eventts | Event | Timestamp of when an event occurred | Timestamp | Yes |
| Medium | medium | Event | Medium through which the activity happened. e.g. email etc. | String | Yes |
| Type | type | Event | Type of the event. e.g. Open, Sent, Clicked etc. | String | Yes |
| City | city | MasterAccount/ Address | City of the Contact | String | |
| Country | country | MasterAccount/ Address | Country of the Contact | String | |
| State | state | MasterAccount/ Address | State of the Contact | String | |
| ZipCode | zipcode | MasterAccount/ Address | Zip Code where Contact resides | String | |
| IS_CONVERTED/ SalesStage | is_converted | Opportunity | 1 if there was a conversion, 0 otherwise | Boolean/Int | Yes |
| OpportunityDate | opportunitydate | Opportunity | The date when a particular the opportunity converted | Timestamp | Yes |
| ProductID | productid | Opportunity | ID of the Product | String | Yes |
| ProductName | productname | Opportunity | Name of the Product | String |
Key considerations on model inputs
-
Data schema checks: If an attribute is unavailable, assign a constant default value across all records. This allows the model to validate the input schema. This will not impact the model outcomes as the attribute will be excluded during feature importance analysis due to lack of data variance.
-
Product levels: If you have a product hierarchy maintained in the data, choose the right level to model at and map it to the ProductID attribute in the query.
-
Schema consistency: Ensure that the attributes used in the query exactly match the specified 'Attribute name in the query' (in the above table) to avoid schema mismatches during model execution.
-
Non-mandatory attributes: These attributes, when available, can enhance the model’s learning and improve its predictive performance. However, if they are missing, the model will still leverage other available attributes to make predictions.
Key input data guidelines
-
Label requirements: Ensure the model data contains at least 500 positive signals (converted accounts) and 500 negative signals (non-converted accounts)
-
Data requirements:
-
It is recommended to provide at least 50,000 data records for model training. However, it is important to bring as much data as possible to build a robust model
-
It is recommended to keep the dataset under 10M records (soft limit). This limit can vary for every model, but maintain a manageable size helps ensure efficient model performance.
-
Best practices
-
Use case first approach: Begin with a specific use case to determine the data required for solving the problem effectively.
-
Review model data requirements with both business and data teams to ensure alignment
-
-
Contextual parameters: Choose model parameters (such as lookback window) based on the business/ use case context.
-
Query validation: Test both the training and scoring queries to validate that they return data and inspect sample records resulting from the query
Model outputs
Output values will be stored in the AccountProductScore data object. You can review the account score values for each account in the Status attribute. Each status (cold, cool, warm, and hot) is based on the account score generated from 0 to 100.
| Attribute ID | Attribute Name | Attribute Description | Data type | |
| SourceAccountProductScoreID | Source AccountProductScore ID | This attribute contains the unique ID for the table. | STRING | |
| ScoreTS | Score Timestamp | This attribute represents time when the score was computed. | TIMESTAMP | |
| Score | Score | This attribute represents score for the account product. | INT | |
| Status | Status | This attribute represents account status - Cold, Cool, Warm, Hot. | STRING | |
| ProductID | Product ID | This attribute contains the foreign key to the ProductID. | STRING | |
| SourceProductID | Source Product ID | This attribute contains the original form of the Product ID from the source data system. | STRING | |
| ProductName | Product Name | This attribute contains the product Name. | STRING | |
| ProductIDoutput | ProductID Output level | This attribute contains the product ID (if the output level is different). | STRING | |
| MasterAccountID | Master Account ID | This attribute contains the foreign key to the MasterAccountID. | STRING | |
| SourceMasterAccountID | Source Master Account ID | This attribute contains the original form of the Master Account ID from the source data system. | STRING |
The Status attribute will generate one of the following values based on the account score.
| Account score | Status | Sample interpretation |
| 0–25 | Cold | Low engagement/ intent; deprioritize |
| 26–50 | Cool | Place in long-term nurture segment |
| 51-75 | Warm | Enrol in high-touch nurture campaigns |
| 76-100 | Hot | Route to Sales |