# Key Concepts

Before diving into API calls, it is crucial to establish a common language. The Personalisation Engine operates several core concepts that serve as its building blocks, which are explained below.

### Offer

The Offer is the single most important concept in our system. It is the complete, final decision returned by the Personalisation Engine. When we talk about an Offer, we mean the complete package that a customer sees: [#products](#products "mention"), [#product-rules](#product-rules "mention"), and the [#content](#content "mention") that dictates how it should be displayed.

There are four key components to the Offer Response that are outlined in detail via the API [Reference](/offers/api/reference.md) documentation but are shown below in an example API response from the engine

<figure><img src="/files/q35AMaobwXsvBZ1fpLJe" alt=""><figcaption></figcaption></figure>

### Offer Schema

{% hint style="info" %}
Unless you have a complex integration, Cover Genius will configure one schema for you to use for all of your Offers.
{% endhint %}

The Offer Schema is an attribute that you set in your API request to [Create Offer](/offers/guides/purchase-workflow-overview/create-offer.md).

A partner can have one or more configured Offer Schema's in our system and we will inform you at integration time what Schema is relevant for you.

The Offer Schema will drive what fields you need to send us in the [#offer-context](#offer-context "mention") object of a request and is typically per business line or vertical.

### Offer Context

{% hint style="info" %}
The more information you send via the Context object the more personalised experiences we can provide to your customers into the future

Even if we aren't using all of the data you are sending us **today**, we may want to enhance customer experiences **in the future** and this would mean no re-work for you if you're already sending us this data.
{% endhint %}

The Offer Context is the essential data you provide to the engine in your [Create Offer](/offers/guides/purchase-workflow-overview/create-offer.md) API request. Think of it as the information that paints a picture of the customer and the environment they are in. The engine uses this data to inform its decision. In the travel vertical for example, Context may include trip duration, destination, information about flights and trip cost.

The structure of the Context is dictated by the chosen Offer Schema where you'll be provided with the necessary fields needing to be sent in order for us to provide the relevant Offer to customers.

### Products

{% hint style="info" %}
Products are platform and type agnostic. Whilst most integrations will see Insurance products be displayed to customers, the platform is capable of handling non-insurance products from many providers and mixing these together to form a coherent Offer.
{% endhint %}

Products are foundational elements of the Personalisation Engine, representing the actual insurance or non-insurance products that collectively make up a complete Offer.

An Offer may contain one or more Products in its response, and where multiple Products are returned, [#product-rules](#product-rules "mention") dictate how these individual components interact with each other. The Product itself will contain all the underlying insurance or non-insurance data, which can be used to inform backend processing and determine what is displayed to the customer.

By integrating with the Personalisation Engine's Product system, we establish a pathway to push different insurance and non-insurance products through the customer pipeline in the future without requiring any re-integration work on the partner end.

### Product Rules

Product rules enable dynamic, event-driven Offer flows including upsells, cross-sells, second chance Offers, and complex multi-product configurations. This structure provides partners with a powerful, declarative way to define product relationships and conditional visibility rules.

Most integrations will make use of a single Product per Offer. If a partner integration is planned to use multiple Offer types then a deep integration with the Product Rules concept and functionality is a requisite.

<figure><img src="/files/I1VfCTzRQTqbETNogkhd" alt=""><figcaption></figcaption></figure>

### Content

Content in the Personalisation Engine is structured to enhance the personalization and presentation of Offers to customers.

1. Content Management
   * The Personalisation Engine includes a dedicated section for Offer Content structured according to a presentation JSON Schema. This schema defines how content is organized and should be presented.
   * Content includes both product content (specific to individual products) and offer content (specific to the Offer panel). This content is localized, ensuring it is relevant to the user's language and context they are viewing it in.
2. Content Integration
   * The Offer Engine uses models `OfferContent` and `ProductContent` to manage content dynamically. These models allow for automated linking and synchronization with our CMS, supporting flexible content structures and multi-language support
3. API and Content Delivery
   * The API response includes decoupled content blocks (e.g., `headline`, `benefits`, `cta_text`), allowing partners to render dynamic panels without custom front-end work. Dynamic variables can be injected into the content to personalize Offers further.

Overall, the content in the Personalisation Engine is designed to provide a seamless and personalized experience for users, leveraging structured data and dynamic content delivery to enhance the presentation and relevance of Offers.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://partner-docs.covergenius.com/offers/personalisation-engine/key-concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
