Method and system for dynamic messaging

Embodiments of methods and systems for dynamic messaging are disclosed. A lookup request may be received for a customer. A plurality of eligible campaigns may be determined for the customer. An eligible campaign of the plurality of eligible campaigns may include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offer of the plurality of eligible campaigns. The available offer of a campaign may be selected from the plurality of eligible campaigns based on metadata of the plurality of eligible campaigns and campaign history data of the customer. A message associated with the selected offer may be provided. The message may be capable of being presented to the customer.

BACKGROUND

An organization may wish to run one or more campaigns for its existing customers and potential customers to provide them with an offer that includes educational information, an encouragement to take advantage of an opportunity, and the like. The customers may be selected by the organization for the campaign based on a criterion. The organization may use a campaign manager to produce a list of users that meet a criterion.

To determine whether a customer is in a campaign, a brute force lookup is performed against a database that contains information regarding all users in the campaign. The brute force lookup may require extensive computing resources to perform the lookup when a real-time result is expected. For example, providing a real-time result would be desired to provide an offer to a customer visiting a web page where the offer is provided within the content of the web page.

DETAILED DESCRIPTION

In an example embodiment, a lookup request may be received for a customer. A plurality of eligible campaigns may be determined for the customer. An eligible campaign of the plurality of eligible campaigns may include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offer of the plurality of eligible campaigns. The available offer of a campaign may be selected from the plurality of eligible campaigns based on metadata of the plurality of eligible campaigns and campaign history data of the customer. A message associated with the selected offer may be provided. The message may be capable of being presented to the customer.

In an example embodiment, a list of customers for an offer may be accessed. The list of customers may be hashed to create a compressed filter representing the list of customers associated with the offer. The compressed filter may be capable of being used to determine whether a particular customer is in the list of customers.

In an example embodiment, a lookup request for a customer may be received. A plurality of eligible campaigns may be determined for the customer. An eligible campaign of the plurality of eligible campaigns may include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offer of the plurality of eligible campaigns. The available offer of the plurality of eligible campaigns may be provided to an agent of the customer.

FIG. 1illustrates an example system100in which a campaign manager102may communicate with a messaging provider108and/or a customer service provider110through a filter provider106to provide an offer of a campaign to a customer.

The campaign manager102may generate campaigns and offers of campaigns to be provided to customers of an organization. The campaign may be a grouping of one or more offers that accomplishes marketing or other goals and may be generally geared toward a particular product, program, or theme. In an example embodiment, the campaign manager102may be AFFINIUM CAMPAIGN by Unica Corporation, MA4 by SAS Institute, Inc., or Customer Management (CM)

Solutions by Teradata by NCR Corporation. Other campaign managers102may also be used.

The campaign manager102may be used to create a list of customers for a campaign. The customers may include users with and/or without a prior relationship to the organization. The campaign manager may use customer data120in a data warehouse118and optionally criterion to select customers for the list. The criterion may include, by way of an example, how long a customer has been a member of an organization, the products previously purchased by the customer, and the like. A customer may be in one campaign or a number of campaigns generated by the campaign manager102.

One or more offers associated with a campaign may be targeted to an audience of customers. There may be multiple offers associated with a campaign, and multiple messaging images126associated with an offer. The messaging images126may be content and/or a message and may include text, images, a document, an executable file, and the like that is provided within or as an offer to the customer.

The filter provider106may format information received from the campaign manager102including an offer, a list of customers to receive the offer, and metadata114. The list of customers may be used by the filter provider106to generate a compressed filter representing the list of customers provided by the campaign manager102. In an example embodiment, the compressed filter may be created by applying a hash function, using a hash table, or otherwise encrypting the list of users.

The compressed filter, the list of users, and/or the metadata114may be provided from the campaign manager102to the messaging provider108and/or the customer service provider110. The compressed filter may be updated daily or at a different frequency (e.g., multiple times per day or less frequently) by the filter provider106and provided to the messaging provider108and/or the customer service provider110.

The messaging provider108may provide messages containing offers to customers in one or more channels. The message may be a non-targeted message available to all customers of the organization and/or a targeted message available to a subset of all customers of the organization. The channel may include, by way of example, direct mail, e-mail, web site, placement on a web site, in an application, or the like. The channel may be controlled by an organization associated with the messaging provider108and/or a different organization. The customer service provider110may provide offers to an agent that may then be made available to a customer. For example, the customer service provider110may present available campaigns to an agent for a customer that is speaking to the agent. An example embodiment of the messaging provider108and the customer service provider110are described in greater detail below.

The messaging provider108and/or the customer service provider110may be used to provide an offer of a campaign to a customer of an organization operating the messaging provider108and/or the customer service provider110or another organization. For example, the organization may provide offers to its customers on behalf of the other organization, or may provide offers to customers of the other organization on behalf of the other organization.

The messaging provider108and the customer service provider110may retain a number of compressed filters112, the metadata114, and/or one or more explicit lists116. The compressed filters112may represent a list of customers that may be in a campaign or a segment of a campaign and may be received from the filter provider106. The compressed filters112may be capable of being used to determine whether a particular customer is in the list of customers. The compressed filters112may be retained and run in memory by the messaging provider108and/or the customer service provider110. The use of the compressed filters112may enable real-time look-up of a number of campaigns for a customer (e.g., for eligibility testing) at a substantially reduced hardware and operational cost. In an example embodiment, the use of a compressed filter may enable an offer to be provided (e.g., to a customer or an agent on behalf of a customer) in real-time at a substantially reduced hardware and operational cost.

The compressed filters112may be Bloom filters, however other types of compressed filters may also be used. The compressed filter112may be created by hashing a number of customer identifiers into a data structure. The resulting data structure may be used to determine through a look up of whether a particular customer identifier of a customer meets the resulting data structure.

The compressed filter112may be used to reduce the size of a data structure retaining the list of customer identifiers by 60-70%, however a greater or lesser percentage of reduction may also be achieved. The reduction in size may enable the compressed filter112to represent millions of customer identifiers in memory without incurring a significant hardware cost.

In an example embodiment, the Bloom filter is a space-efficient probabilistic data structure that may be used to test whether an element is a member of a set. False positives may occur when testing a customer identifier against the Bloom filter at a flexible error rate based on an amount of compression. A higher amount of compression may be used for a campaign in which a higher error rate is acceptable, while a lesser amount of compression may be used for a campaign in which a low error rate is sought.

The explicit list116may include the list of customer identifiers of the customers in a campaign. The explicit list may be used to confirm that a customer is in a campaign after a lookup is performed with the compressed filter112. The explicit list116may include a list of all customer identifiers in a campaign and may be uncompressed. The explicit list116may be used with the compressed filter112to reduce or eliminate the error rate associated with the compressed filter.

The metadata114may define how a campaign functions. The metadata114may be republished to tune a running campaign. For example, a campaign may be retuned by altering fields of the metadata114that define an impression limit or click limit. In an example embodiment, one or more fields of the campaign may be altered during the running of campaign and other fields of the campaign may be prohibited from being altered during the running of the campaign.

The metadata114of a campaign may include, by way of an example, a campaign priority, a placement priority, a maximum number of campaign impressions per day, a maximum number of campaign impressions per week, a maximum number of campaign impressions per life of the campaign, a maximum number of campaign clicks per day, a maximum number of campaign clicks per week, a maximum number of campaign clicks per life of the campaign, a maximum number of offer impressions per day, a maximum number of offer impressions per week, a maximum number of offer impressions per life of the offer, a maximum number of offer clicks per day, a maximum offer clicks per week, a maximum number of offer clicks per life of the offer, or the like.

The metadata114may be defined on a campaign and/or an offer level and may be based on actions taken by the customer or in aggregate. For example, the maximum number of clicks per day may be based in aggregate for all customers of the campaign while the maximum number of impressions may be based on the customer's actions. An example of the metadata114is described in greater detail below.

The metadata114may be provided from the campaign manager102to the messaging provider108and/or the customer service provider110through the filter provider106in extra fields of a campaign definition.

The communication between the campaign manager102, the filter provider106, the messaging provider108, and/or the customer service provider110may occur over a network104. The network104may be a Global System for Mobile Communications (GSM) network, an Internet Protocol (IP) network, a Wireless Application Protocol (WAP) network, a WiFi network, or a IEEE 802.11 standards network as well as various combinations thereof. Other conventional and/or later developed wired and wireless networks may also be used.

In an example embodiment, the campaign manager102, the filter provider106, the messaging provider108and the customer service provider110may operate on a single computer system or be distributed over multiple computer systems.

The messaging provider108and/or the customer service provider110may be used to provider a greater variety of messages (e.g., advertisements) to customers and/or enable more directed messages (e.g., information) to be provided to customers. The messaging provider108and/or the customer service provider110may select eligible campaigns for a customer among a number of campaigns based on the compressed filter and select an offer of an eligible campaign based on the metadata114of the eligible campaigns and campaign history data122of the customer.

The data warehouse118(e.g., an Enterprise Data Warehouse by NCR Corporation) may be database or other storage device that may be accessible to the campaign manager102locally or over the network104. The data warehouse118may be updated on a daily batch or otherwise updated. The data warehouse118may contain the customer data120used by the campaign manager102to create a campaign. The customer data120may include data pertaining to a customer including, by way of an example, transactional information (e.g., items purchased and/or amount paid), another web site with which the customer is associated, and/or product adoption (e.g., ownership) information for the customer. The campaigns may be stored in the data warehouse118. The customer data120may be collected in the system100or another system.

The campaign history data122may include data regarding messages that have been provided to the customers, offers that have been provided to customers, offers that have been accepted by customers, offers that have been rejected by customers, and/or historical impression tracking data. The campaign history data122may be used to determine whether a customer receives an offer or a subsequent offer. For example, a customer that selects an offer of a message in a first channel may not receive the same offer in a second channel, or a customer that rejects an offer made by an agent may not receive the same offer in a different channel. The data tracked in the campaign history data122may relate to one or more fields of the metadata114of one or more campaigns.

The campaign history data122and the messaging images may be stored on a file server124. The campaign history data122on the live server may be provided to the data warehouse118in real-time, near real-time, on a daily basis, or at a greater or lesser frequency. The campaign history data122on the file server124may be used to determine a campaign in which a user should receive an offer, while the campaign history data122in the data warehouse118may be used for list generation. In an example embodiment, the data warehouse118may be combined with the file server124.

As described in greater detail below, the offer may be made available to a customer by providing the message to a client130operating on a customer machine128and/or an offer may be made available to the customer through an agent.

A unified approach may be taken to providing messages for a campaign. For example, a message containing an offer may be sent via an e-mail to a customer on a first week, the message containing the offer may be provided to the customer on a web site during a second week, and the offer may be available to a agent during a third week. The unified approach may enable a cross-channel marketing campaign to increase customer responsiveness. Other types of unified and non-unified approaches for a campaign may also be used.

FIG. 2is an example of a filter provider106that may be deployed in the system100(seeFIG. 1) or another system according to an example embodiment. The filter provider106may include a compressed filter creation subsystem202, a compressed filter matching subsystem204, and/or another subsystem.

The compressed filter creation subsystem202may include a customer list access module206and/or a customer list hash module208. Other modules may also be used.

The customer list access module206accesses a list of customers for an offer from the campaign manager102(seeFIG. 1). The list may be an original list of customers for the offer or an updated list of customers for the offer.

The customer list hash module208hashes the list of customers to create a compressed filter representing the list of customers associated with the offer. The hashing may be performed by applying a hashing function, using a hashing table, and the like. The compressed filter may be capable of being used to determine whether a particular customer is in the list of customers.

The compressed filter matching subsystem204may include a lookup request module210, a compressed filter matching module212, and/or a message provider module214. Other modules may also be used.

The lookup request module210receives a lookup request for a customer to determine whether the customer is affiliated. The compressed filter matching module212determines whether the customer matches the compressed filter (e.g., and is thereby potentially within the list of customers from which the compressed filter was created). The customer may match the compressed filter even though the customer was not in the list of customers from which the compressed filter was made due to an amount of error due from compression. For example, when the compressed filter112is a Bloom compressed filter, the error rate may be tunable between 0.1 percent and 0.0001 percent based on an amount of compression used. However, the Bloom compressed filter and/or other types of compressed filters may have higher or lower error rates. The error rate of other types of compressed filters may or may not be tunable based on compression and/or other factors. In an example embodiment, the explicit list116may be used with the compressed filter112to eliminate error associated with the compressed filter (e.g., reporting that a customer is associated with a campaign when the user is not).

The message provider module214provides a message associated with an offer for the customer in response to the determination of whether the customer matches the compressed filter. The message may be capable of being presented to the customer. The selected offer may be provided for the customer in a channel (e.g., on a web site).

FIG. 3is an example of a messaging provider108that may be deployed in the system100(seeFIG. 1) or another system according to an example embodiment. The messaging provider108may include a messaging subsystem302and/or another subsystem.

The messaging subsystem302may include the lookup request module210, an eligible campaigns determination module304, an offer selection module306, the message provider module214, an indicia storage module308, a metadata modification module310, and/or an explicit list determination module312. Other modules may also be used.

The eligible campaigns determination module304determines eligible campaigns for a customer. The eligible campaigns include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offer of the eligible campaigns.

The offer selection module306selects the available offer of a campaign from the eligible campaigns based on the metadata114of the eligible campaigns and campaign history data122of the customer.

The indicia storage module308stores indicia that a message was provided for the customer in the campaign history data122of the customer.

The metadata modification module310modifies one or more fields of the metadata114associated with a campaign. In an example embodiment, one or more fields of the metadata114may be allowed to be changed once a campaign is running and/or one or more fields of the metadata may be prohibited from being changed once a campaign is running.

The explicit list determination module312determines whether the customer meets an explicit list for the campaign of a selected offer.

FIG. 4is an example of a customer service provider110that may be deployed in the system100(seeFIG. 1) or another system according to an example embodiment. The customer service provider110may include a servicing subsystem402and/or another subsystem.

The servicing subsystem402may include the lookup request module210, the eligible campaigns determination module304, an offering providing module404, a selection receiver module406, a storage module408, an access module410, and/or the metadata modification module314. Other modules may also be used.

The offering providing module404provides the available offers of the eligible campaigns to an agent of the customer. The available offers may be provided to the agent in a format based on the metadata and the campaign history data122of the customer.

The selection receiver module406receives a selection of the available offer of a campaign from the eligible campaigns. The storage module408stores indicia regarding the selection of the available offer in the campaign history data122of the customer. The access module410accesses the metadata114of the eligible campaigns and the campaign history data122of the customer.

FIG. 5illustrates a method500for creating a compressed filter according to an example embodiment. The method500may be performed by the filter provider106, the messaging provider108, a combination of the filter provider106and the messaging provider108, or another provider. For example, the operations at blocks502-508may be performed by the filter provider106and the operations at blocks510-516may be performed by the messaging provider108, however other implementations may also be used.

A list of customers for an offer is accessed at block502. For example, the list of customers may be received from the campaign manager102(seeFIG. 102) as being in a campaign or a segment of the campaign.

At block504, the list of customers is hashed to create a compressed filter representing the list of customers associated with the offer. The hashing performed during the operations at block504may include using a hashing function, a hashing table, or utilizing a different of encryption to create the compressed filter that represents the list of customer identifiers in a campaign. Hashing the list of users to create a compressed filter may reduce the size of data to be retained. In an example embodiment, the compressed filter may enable the messaging provider108and/or the customer service provider110to operate cheaper and faster as opposed to retaining an uncompressed list of customer identifiers.

A determination may be made at decision block506whether the list of customers has been updated since creation of the compressed filter. For example, the list of customers may be updated based on modifications to a campaign and/or a segment of a campaign by the campaign manager102. If a determination is made that the list of customers has been updated, an updated list of customers may be accessed for the offer at block508and the method500may return to block504to hash the updated list of customers to create an updated compressed filter representing the updated list of customers associated with the offer. The updated compressed filter may then be used in place of the compressed filter for the offer. If a determination is made at decision block506that the list of customers has been not updated, the method500may proceed to decision block510.

At decision block510, a determination may be made as to whether a lookup request for a customer may be processed. If a determination is made that a lookup request may be processed, a lookup request for a customer may be received at block512.

In an example embodiment, the lookup request may be received in response to the customer visiting a web page of a web site. The customer may be a new customer visiting the web site for the first time, may already be logged in to a web site in which the web page is provided, may be recognized by geocoding while visiting the web page, may be recognized by IP address while visiting the web page, or the like.

A determination of whether the customer matches the compressed filter may be made at block514. The customer may match the compressed filter when the user was in the list of customers from which the compressed filter was created or the compressed filter erroneously matches that the user was in the list of customers due to compression error from the hashing.

A message associated with the offer for the customer may be provided in response to the customer matching the compressed filter at block516. For example, the message may be provided to the user in a web page and indicate to the customer that a limited time discount is available.

In an example embodiment, the list of customers may include a list of customer identifiers and the lookup request of the customer may include a customer identifier, the list of customers may include a list of customer e-mail addresses and the lookup request of the customer may include a customer e-mail address, and the like.

A determination may be made at decision block518whether to perform further processing. If a determination is made to perform further processing, the method500may return to decision block506. If a determination is made not to perform further processing at decision block518, the method500may terminate.

FIG. 6illustrates a method600for conducting campaign messaging according to an example embodiment. The method600may be performed by the messaging provider108(seeFIG. 1) or another provider.

A determination may be made at decision block626whether to modify the metadata114associated with one or more campaigns. If a determination is made to modify the metadata114, the metadata114associated with one or more campaigns may be modified at block604. Modifying the metadata114may retool (e.g., republish) the campaign. If a determination is made not to modify the metadata114at decision block602or upon completion of the operations at block604, the method600may proceed to block606.

A lookup request may be received for a customer at block606. In an example embodiment, the lookup request may be received directly from a web page or though an HTTP request that is separately loaded in a page.

Eligible campaigns are determined for the customer at block608. Each of the eligible campaigns may include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offers of the eligible campaigns. The compressed filter may be retained in memory of a computing system during the operations at block608.

At block610, an available offer of a campaign is selected from the eligible campaigns based on the metadata114of the eligible campaigns and the campaign history data122of the customer.

The available offer may be a targeted or non-targeted offer. The targeted offer may be provided to a subset of the available customers (e.g., selected customers) of a provider while a non-targeted offer may be available to all customers of the provider. For example, the non-targeted offer may notify all customers of a new feature while a targeted offer may provide a discount to a selected or otherwise eligible customer.

A message associated with the selected offer is provided at block612. The message may be capable of being presented to the customer. The message may be an educational message, a sales message, a compliance message, a retention message, or the like.

Indicia that the message was provided for the customer may be stored in the campaign history data122of the customer at block614.

FIG. 7illustrates a method700for providing a message according to an example embodiment. The method700may be performed at block612, by the messaging provider108, or be otherwise performed.

A determination may be made at decision block702as to whether an explicit list has been met by the user (e.g., whether the user is on the explicit list). If a determination is made that the user has met the explicit list, a message associated with the selected offer may be provided for the channel at block704. If a determination is made at decision block702that the explicit list has not been met, an available offer of a different campaign may be selected from the eligible campaigns based on the metadata114of the eligible campaigns and the campaign history data122of the customer at block706. The message associated with the selected offer of the different campaign may be provided at block708.

FIG. 8illustrates a method800for providing a message according to an example embodiment. The method800may be performed at block612, by the messaging provider108, or be otherwise performed.

A placement in a web page is determined at block802.

A messaging image in accordance with the determined placement is accessed from the messaging images126in the data warehouse118at block804.

At block806, the messaging image associated with the selected offer is provided. The messaging image may be capable of being presented to the customer at the determined placement in the web page.

In an example embodiment, if the messaging image may not be retrieved in an allotted period of time, a default image may be provided instead of the messaging image.

FIG. 9illustrates an example user interface900that may be presented to a customer interfacing with the system100(seeFIG. 1) or another system. In an example embodiment, the user interface900may be provided to the customer when the customer is logged into the system100to provide the customer with targeted and/or non-targeted messages.

The user interface900may include a series of tabs902-910including an account tab902, a send money tab904, a request money tab906, a merchant services tab908, and/or auction tools tab910. As illustrated inFIG. 9, the account tab1002is selected and content that relates to the account of the customer is presented on the user interface1000. However, other tabs may also be selected by default or by interaction with the customer.

The send money tab904may provide content to the customer relating to sending money from the customer. The request money tab906may provide content related to receiving money from a different customer. The merchant services tab908may provide content related to services that may be of interest to a customer that is a merchant. The auction tools tab910may provide content relating to the use of payment functionality in auction listings by the customer.

The customer may log out of the account by selecting a logout link912, may seek help information by selecting a help link914, or visit a security center page by selecting a security center link916. The customer may be able to change a language in which the user interface900is presented to the customer by selecting a language button918.

A welcome message920may be presented to the customer. The customer may edit an account profile by selecting an edit profile link922. Financial information may be provided to the customer through a financial section924. The customer may view account activity related information by default and/or selection of a link on the account activity section926. Recent activity related to the financial section924may be presented to the user in a recent activity section928.

Offers for campaigns may be provided to the customer with offers930-938. The offers may be targeted offers and/or non-targeted offers. The customer may navigate to further pages by use of a navigation control940.

FIG. 10illustrates an example user interface1000that may be presented to a customer interfacing with the system100(seeFIG. 1) or another system. In an example embodiment, the user interface1000may be provided to the customer when the customer is not logged into the system100to provide the customer with targeted and/or non-targeted messages. For example, messages may be provided based on recognition that the customer is from a particular country.

The user interface1000may include a series of tabs1002-1010including a welcome tab1002, a send money tab904, a request money tab906, a merchant services tab908, and/or auction tools tab910. As illustrated inFIG. 10, the welcome tab1002is selected and content that welcomes the customer to a web site is presented to the customer on the user interface1000. However, other tabs may also be selected by default or by interaction with the customer.

The customer may sign in to the web site by entering an e-mail address in an identifier field1012and a password in a password field1014. The customer may then select a log in button1018to log into the web site. If the customer does not have an account with the web site, the customer may select a sign up now button1016to sign up for an account with the web site.

The content of the user interface1000may include three categories1020-1024for content including a buyers category1020, an EBAY sellers category1022, and/or a merchant category1024. Other categories may also be used.

Buyer related content1026may be available under the buyers category1020, EBAY seller related content1028may be available under the EBAY sellers category1022, and merchant related content1030may be available under the merchant category1024.

The user interface1000may include a first message1032and a second message1034in the form of educational messages to inform the customer of features and/or functionality provided by the web site. The first message1032and the second message1034may be provided in accordance with the operations at block612, block708, or otherwise provided.

A first category of messages1036may include a number of associated messages for the customer and a second category of messages1038may also include a number of associated messages for the customer. The associated messages of the first category of messages1036and the second category of messages1038may be provided in accordance with the operations at block612, block708, or otherwise provided.

The user interface1000is merely an example of one type of interface that may be presented to a customer accessing the system100or another system. Other user interfaces for accessing the system100or another system may also be provided. For example, a different number of messages, categories of messages, or configuration of the user interface1000may be used.

FIG. 11illustrates a method1100for processing an offer selection according to an example embodiment. The method1100may be performed by the customer service provider110(seeFIG. 1) or another provider.

A lookup request is received for a customer at block1102.

Eligible campaigns are determined for the customer at block1104. The eligible campaigns may include an available offer for the customer. The available offer may be represented by a compressed filter. The customer may match the compressed filter of the available offer of the eligible campaigns.

The metadata114of the eligible campaigns and the campaign history data122of the customer may be accessed at block1106.

The available offers of the eligible campaigns is provided (e.g., through a user interface) to an agent of the customer at block1108. In an example embodiment, the available offer of the eligible campaigns may be provided to an agent of the customer in a format based on the metadata114and the campaign history data122of the customer.

In an example embodiment, the metadata114associated with at least one of the campaigns may be modified and the available offer of the campaign from the eligible campaigns may be provided to the agent based on the modified metadata114of the corresponding campaigns, the unmodified metadata114of the remaining campaigns and the campaign history data122of the customer.

A selection of the available offer of a campaign from the eligible campaigns may be received (e.g., from the agent) at block1110.

Indicia regarding the selection may be stored in the campaign history data122of the customer at block1112.

FIG. 12illustrates an example user interface1200that may be provided to an agent to interface with the system100through the customer service provider110(seeFIG. 1). The user interface1200may also be used in other systems.

The user interface1200may include an identifier1202to identify that the user interface1200relates to the campaigns available to a particular customer. The agent may also be provided with instructional text1204regarding the user interface1200.

A search field1206and a search button1208may enable the agent to perform a keyword search for campaigns. For example, the agent may search on contextual terms received in a conversation with the customer. Upon performing a search, the metadata of a campaign that contains the keywords may be highlighted and, if the campaign is in a collapsed section, the collapsed section may be expanded.

The user interface1200lists for different categories of campaigns: a compliance category1210, an education category1212, a retention category1214, and a sales category1216. However, other categories may also be used. A number next to a category may indicate a number of campaigns under a particular category. An expand/collapse icon1218may be select to list all available campaigns under a category.

The compliance category1210may enable an agent to select among a number of compliance offers available for the customer. Compliance offers may be provided to obtain, for example, compliance with a legal regulation, a site policy (e.g., a privacy policy), or other reason (e.g., functionality may be unavailable for a period of time). The compliance offers may include, by way of an example, a notification that the customer needs to sign an agreement, a notification that the customer may not carry a negative balance in a payment account, a notification that the customer needs to complete a certain number of transactions during a period of time, and the like.

The education category1212may enable an agent to select among a number of education offers available for the customer to increase awareness, understanding, and/or appreciation. The education offers may include, by way of an example, a notification of a new feature on a web site, a notification of a feature not previously used by the customer on the web site, a notification of how to detect a spoofed web site, a notification of how to safely conduct transactions, and the like. The user may not need to take any action in response to an education offer.

The retention category1214may enable an agent to select among a number of retention offers available for the customer. The retention offers may seek to appease a customer and/or improve the relationship with the customer. For example, the retention options may include crediting an account of a good customer, terminating an account of a bad customer, providing a toll free telephone number or special access telephone number for enhanced customer support, and the like.

The sales category1216may enable an agent to select among a number of sales offers available for the customer. The sales offers may include an attempt to encourage the customer to adopt or use a new product or try a new feature. Sales offers may include, by way of an example, a product up-sell, a product cross-sell, or a product trial. Other sales offers may also be used.

As illustrated inFIG. 12, a campaign listing1220under the sales category1216is shown to include three available campaigns. However, different types and numbers of campaigns may be available under any of the categories1210-1216.

In an example embodiment, the campaign categories1210-1216that may be available to the agent may be hierarchical to place greater importance on one or more campaign categories as compared to other campaign categories. For example, the compliance campaign category may be given a higher importance than the education campaign category and the retention campaign category. Other hierarchical configurations with the same campaigns or different campaign categories may also be used.

The customer may notify the agent to opt-in and/or opt-out of campaigns. For example, a box1222may be selected by the agent so that the user will not be contacted with marketing campaigns and/or a box1224may be selected the agent so that the customer will not be offered marketing campaigns when contacting an agent.

The agent may select a first history selection1226to see a recent campaign history of the customer or a second history selection1228to see available history on the customer.

FIG. 13illustrates an example user interface1300that may be provided to an agent to interface with the system100through the customer service provider110(seeFIG. 1). The user interface1300may also be used in other systems. In an example embodiment, the user interface1300is an example user interface shown to the agent in response to selecting a campaign for a customer. However, different user interfaces may be shown to the agent in response to selecting the campaign.

The user interface1300may include an identifier1302to identify that the user interface1300relates to a particular campaign available to an identifier customer. The agent may also be provided with campaign identification1304identifying a category and a campaign within the category. A different language type1306may be selected by the agent to provide the content on the user interface1300in a different language.

A campaign script may be provided to the agent in the form of a suggested opening1308and a suggested closing1310. The suggested opening1308may include an opening script and the suggested closing1320may include a closing script to be read or otherwise presented to the customer.

A FAQ section1312may include a series of questions that may be asked by a customer during the presentation of the campaign information. One or more of the series of questions may be expanded to provide the agent with an answer to an associated question.

A challenges section1314may include a series of challenge points that may be asked to a customer during the presentation of the campaign information. One or more of the series of challenges points may be expanded to provide the agent with acceptable responses to the challenges points.

The agent may record that a particular offer for a campaign has been accepted by selecting accepted button1316or rejected by selecting rejection button1318.

FIG. 14illustrates an example user interface1400that may be provided to an agent to interface with the system100through the customer service provider110(seeFIG. 1). The user interface1400may also be used in other systems. In an example embodiment, the user interface1400is an example user interface shown to the agent in response to selecting a campaign history of a customer. However, different user interfaces may be shown to the agent in response to selecting the campaign history of the customer.

The user interface1400may include an identifier1402to identify that the user interface1400relates to the campaign history of a particular customer. The agent may also be provided with instructional text1404regarding the user interface1400.

A search field1406and a search button1408may enable the agent to perform a keyword search for a particular campaign. For example, the agent may search on contextual terms to identify a campaign in the campaign history. Upon performing a search, a row that contains a campaign with one or more keywords may be highlighted.

A campaign column header1410may be associated with campaigns1418-1422that have been delivered to the customer. The campaign column header1410may be used to sort the campaigns1418-1422in ascending or descending order. A data column header1412may be associated with dates1424-1428that the campaigns1418-1422were delivered to the customer. An action column header1414may be associated with actions1430-1434to indicate whether the campaigns1418-1422were accepted or rejected on the dates1424-1428. An agent column header1416may be associated with agents1436-1438to indicate an agent that delivered an offer associated with the campaigns1418-1422. A return button1442may be used to return the agent to a previous user interface (e.g., the user interface1200).

FIG. 15illustrates an example user interface1500that may be provided to an agent to interface with the system100through the customer service provider110(seeFIG. 1). The user interface1500may also be used in other systems. In an example embodiment, the user interface1500is an example user interface shown to the agent in response to selecting a campaign under the direction of the agent. However, different user interfaces may be shown to the agent in response to selecting a campaign.

The user interface1500may include an identifier1502to identify that the user interface1500relates to a list of customers under the direction of the agent. The agent may also be provided with instructional text1504regarding the user interface1500.

A view by campaign selection1506may enable the agent to view account information grouped by campaign, while a view by account selection1508may enable the agent to view the account information grouped by account.

A name column header1510may be associated with account names of account listings1518-1534. A contact column header1512may provide contact information (e.g., a telephone number) for the account listings1518-1534. A campaigns column header1514may provide eligible campaigns for the account listings1518-1534. A last contacted column1516may provide a date with which a customer of the account listings1518-1534was last contacted by an agent.

FIG. 16illustrates an example user interface1600that may be provided to an agent to interface with the system100through the customer service provider110(seeFIG. 1). The user interface1600may also be used in other systems. In an example embodiment, the user interface1600is an example user interface shown to the agent in response to accounts of customers that are eligible for a particular campaign. However, different user interfaces may be shown to the agent in response to selecting the eligible accounts of customers for a campaign.

The user interface1600may include an identifier1602to identify that the user interface1600relates to a list of accounts of customers that are eligible for a campaign. The agent may also be provided with instructional text1604regarding the user interface1600.

The agent may select a view script button1606to view a script (e.g., the script may include the suggested opening1308and the suggested closing1310ofFIG. 13). A name column header1608may be associated with account names of account listings1614-1630. A contact column header1610may provide contact information (e.g., a telephone number) for the account listings1614-1630. A last contacted column1612may provide a date with which a customer of the account listings1614-1630was last contacted by an agent.

FIG. 17illustrates a method1700for producing a list of customers for a campaign according to an example embodiment. The method1700may be performed by the campaign manager102(seeFIG. 1) or another provider.

Available customers may be accessed for a campaign at block1702.

A criterion for a campaign may be accessed at block1704. The criterion may include a product that is already owned by the customer, how long the customer has been a member of a web site or organization, meeting a definition of a good or bad customer, and the like. The operations at block1702and block1704may occur in any order or simultaneously.

Customers that meet the criterion for the campaign are selected from the available customers at block1706. The customers may be divided into segments at block1708. For example, the customers in a first segment of a campaign may not be in a second segment of the campaign.

At block1710, a list of customers may be produced from the selected customers to receive an offer for the campaign. In an example embodiment, a list of customers may be produced for each of the segments to receive an offer for the campaign. The list of customers may be provided to the filter provider106(seeFIG. 1) during the operations at block1710.

A determination may be made at decision block1712whether to refine the criterion of the campaign. The criterion may be refined, for example, to add or remove users from a campaign. If a determination is made to refine the criterion, the criterion for the campaign may be refined at block1714. The customers may be reselected from the available customers that meet the refined criterion for the campaign at block1716. The list of customers may be produced from the reselected customers to receive the offer for the campaign at block1718. The list of customers may be provided to the filter provider106during the operations at block1718. If a determination is made not to refine the criterion for the campaign at decision block1712or upon completion of the operations at block1718, the method1700may terminate.

FIG. 18illustrates an example data structure1800for the metadata114according to an example embodiment. The data structure1800may be used as the metadata for an offer of campaign in the system100or in another system. For example, the messaging provider108may include108may include data structures1800for the offers of all campaigns.

The data structure1800may include a campaign identifier field1802, an offer image path field1804, a campaign priority field1806, a placement priority field1808, a maximum campaign impressions per day field1810, a maximum campaign impressions per week field1812, a maximum campaign impressions per life of the campaign field1814, a maximum campaign clicks per day field1816, a maximum campaign clicks per week field1818, a maximum campaign clicks per life of the campaign field1820, a maximum offer impressions per day field1822, a maximum offer impressions per week field1824, a maximum offer impressions per life of the offer field1826, a maximum offer clicks per day field1828, a maximum offer clicks per week field1830, a maximum offer clicks per life of the offer field1832, an offer selection field1834, and/or a placement display logic field. Other fields may also be used.

The campaign identifier field1802receives an identifier used to identify the campaign from which the offer is associated from among other campaigns.

The campaign priority field1806receives a value associated with a campaign that determines the campaign's relative importance to another campaign. For example, a ranking of one to ten may be used, where a ranking of one is the highest value and a ranking of ten is a lowest value.

The placement priority field1808receives a value that may be used to determine which placement should be used among a number of available placements for a web page. For example, a best placement on a web page may be filled first, a next best placement on the web page may be filled second, and so on.

The placement display logic field1836receives a value to limit a number of offers of one or more offer types on a web page. For example, only one of a certain type of offer may be provided on the web page, and remaining available positions on the web page may be provided with other offers.

The maximum campaign impressions per day field1810receives a value indicating a maximum number of campaign impressions (e.g., a cap of the number of views by the customer or all customers in aggregate in the campaign) that may be provided to the customer in a day. The maximum campaign impressions per week field1812receives a value indicating a maximum number of campaign impressions that may be provided to the customer in a week. The maximum campaign impressions per life of the campaign field1814receives a value indicating a maximum number of campaign impressions that may be provided to the customer over a lifetime of a campaign.

The maximum campaign clicks per day field1816receives a value indicating a maximum number of campaign clicks (e.g., selections by the customers or all customers in aggregate in the campaign) that may be provided to the customer in a day. The maximum campaign clicks per week field1818receives a value indicating a maximum number of campaign clicks that may be provided to the customer in a week. The maximum campaign clicks per life of the campaign field1820receives a value indicating a maximum number of campaign clicks that may be provided to the customer over the lifetime of a campaign.

The maximum offer impressions per day field1822receives a value indicating a maximum number of offer impressions (e.g., views by the customer or all customers in aggregate in a campaign) that may be provided to the customer in a day. The maximum offer impressions per week field1824receives a value indicating a maximum number of offer impressions that may be provided to the customer in a week. The maximum offer impressions per life of the offer field1826receives a value indicating a maximum number of offer impressions that may be provided to the customer in a lifetime of the offer.

The maximum offer clicks per day field1828receives a value indicating a maximum number of offer clicks (e.g., selections by the customer or all customers in aggregate that receive the offer) that may be provided to the customer in a day. The maximum offer clicks per week field1830receives a value indicating a maximum number of offer clicks that may be provided to the customer in a week. The maximum offer clicks per life of the offer field1832receives a value indicating a maximum number of offer clicks that may be provided to the customer in a lifetime of the offer.

The offer selection field1834receives a value indicating whether an offer has been accepted or rejected. In an example embodiment, one or more of the fields of the data structure1800may be used to minimize fatigue of a customer and rotate prioritized offers to increase an acceptance rate of the offer by the customer.

In an example embodiment, the metadata relating to an offer may be for a user, while the metadata for the campaign may be for all users in aggregated for a campaign. However, other configurations of the metadata may also be used.

FIG. 19illustrates an example data structure1900for the metadata114according to an example embodiment. The data structure1900may be used as the metadata for an offer of campaign in the system100or in another system. For example, the customer service provider110may include data structures1900for the offers of all campaigns.

The data structure1900may include the campaign identifier field1802, a campaign name field1904, a campaign description field1906, the campaign priority field1806, an active flag field1910, a start date field1912, an end date field1914, a campaign category field1916, a campaign acceptance cap field1918, an offer identifier field1920, an offer name field1922, an offer description field1924, an offer keywords field1926, a target list type field1928, an agent tier level field1930, an offer delivery cap field1932, an offer rejection cap field1934, an offer acceptance cap field1936, a script name field1938, a delivery delay field1940, and/or a languages field1942. Other fields may also be used.

The campaign name field1904receives a name of a campaign. The campaign description field1906receives a description of a campaign.

The active flag field receives an indication of whether or not a campaign is active. The start date field1912receives a start date of a campaign. The end date field1914receives an end date of a campaign.

The campaign category field1916retains a category under which a campaign is organized. For example, the campaign category field1916may include a value of “COMPLIANCE”, “EDUCATION”, “RETENTION”, or “SALES”, however other values related to different categories may also be received.

The campaign acceptance cap field1918receives a maximum number of times a campaign may be accepted (e.g., by the customer or aggregate across all customers in a campaign).

The offer identifier field1920receives an identifier for an offer associated with a campaign.

The offer name field1922receives a name of an offer associated with a campaign.

The offer description field1924receives a description of an offer associated with a campaign.

The offer keywords field1926receives one or more keywords that may be used to search for a campaign.

The target list type field1928receives a value indicating whether customer identifiers associated with an offer is targeted or non-targeted. The value may also indicate whether or not the explicit list116is used with the campaign.

The agent tier level field1930may indicate an agent tier level of which agents at or below the level are qualified to deliver an offer.

The offer delivery cap field1932receives a value indicating a number of times the offer may be delivered. For example, a retention campaign may be delivered multiple times, a sales campaign may be delivered once, or the like.

The offer rejection cap field1934receives a value indicating a number of times an offer may be rejected (e.g., over a lifetime of a campaign).

The offer acceptance cap field1936receives a value indicating a number of times an offer may be accepted (e.g., over a lifetime of a campaign).

The script name field1938includes a URL or other locator of a script file that is presented to the agent and may be delivered to the customer.

The delivery delay field1940receives a value indicating a minimum number of days for which an already delivered offer may be suppressed before allowing the agent to deliver the offer again.

The languages field1942receives a list of languages in which the offer is available.

FIG. 20is a network diagram depicting a client-server system2000, within which one example embodiment may be deployed. For example, the system100(seeFIG. 1) may be deployed with the client-server system2000(e.g., where the customer machine128is a client machine2010) or another system.

A networked system2002, in the example forms of a network-based marketplace or publication system, provides server-side functionality, via a network2004(e.g., the Internet or Wide Area Network (WAN)) to one or more clients.FIG. 20illustrates, for example, a web client2006(e.g., a browser, such as the Internet Explorer browser developed by Microsoft Corporation of Redmond, Wash. State), and a programmatic client2008executing on respective client machines2010and2012.

An Application Program Interface (API) server2014and a web server2016are coupled to, and provide programmatic and web interfaces respectively to, one or more application servers2018. The application servers2018host one or more marketplace applications2020and payment applications2022. The application servers2018are, in turn, shown to be coupled to one or more databases servers2024that facilitate access to one or more databases2026.

The marketplace applications2020may provide a number of marketplace functions and services to users that access the networked system2002. The payment applications2022may likewise provide a number of payment services and functions to users. The payment applications2022may allow users to accumulate value (e.g., in a commercial currency, such as the U.S. dollar, or a proprietary currency, such as “points”) in accounts, and then later to redeem the accumulated value for products (e.g., goods or services) that are made available via the marketplace applications2020. While the marketplace and payment applications2020and2022are shown inFIG. 20to both form part of the networked system2002, in alternative embodiments the payment applications2022may form part of a payment service that is separate and distinct from the networked system2002.

Further, while the system2000shown inFIG. 20employs a client-server architecture, the present invention is of course not limited to such an architecture, and could equally well find application in a distributed, or peer-to-peer, architecture system, for example. The various marketplace and payment applications2020and2022could also be implemented as standalone software programs, which need not have networking capabilities.

The web client2006accesses the various marketplace and payment applications2020and2022via the web interface supported by the web server2016. Similarly, the programmatic client2008accesses the various services and functions provided by the marketplace and payment applications2020and2022via the programmatic interface provided by the API server2014. The programmatic client2008may, for example, be a seller application (e.g., the TurboLister™ application developed by eBay Inc., of San Jose, Calif.) to enable sellers to author and manage listings on the networked system2002in an off-line manner, and to perform batch-mode communications between the programmatic client2008and the networked system2002.

FIG. 20also illustrates a third party application2028, executing on a third party server machine2030, as having programmatic access to the networked system2002via the programmatic interface provided by the API server2014. For example, the third party application2028may, utilizing information retrieved from the networked system2002, support one or more features or functions on a website hosted by the third party. The third party may, for example, provide one or more promotional, marketplace or payment functions that are supported by the relevant applications of the networked system2002.

FIG. 21is a block diagram illustrating multiple applications2020and2022that, in one example embodiment, are provided as part of the networked system2002(seeFIG. 20). The applications2020may be hosted on dedicated or shared server machines (not shown) that are communicatively coupled to enable communications between server machines. The applications themselves are communicatively coupled (e.g., via appropriate interfaces) to each other and to various data sources, so as to allow information to be passed between the applications or so as to allow the applications to share and access common data. The applications may furthermore access one or more databases2026via the database servers2024.

The networked system2002may provide a number of publishing, listing and price-setting mechanisms whereby a seller may list (or publish information concerning) goods or services for sale, a buyer can express interest in or indicate a desire to purchase such goods or services, and a price can be set for a transaction pertaining to the goods or services. To this end, the marketplace applications2020are shown to include at least one publication application2100and one or more auction applications2102which support auction-format listing and price setting mechanisms (e.g., English, Dutch, Vickrey, Chinese, Double, Reverse auctions etc.). The various auction applications2102may also provide a number of features in support of such auction-format listings, such as a reserve price feature whereby a seller may specify a reserve price in connection with a listing and a proxy-bidding feature whereby a bidder may invoke automated proxy bidding.

A number of fixed-price applications2104support fixed-price listing formats (e.g., the traditional classified advertisement-type listing or a catalogue listing) and buyout-type listings. Specifically, buyout-type listings (e.g., including the Buy-It-Now (BIN) technology developed by eBay Inc., of San Jose, Calif.) may be offered in conjunction with auction-format listings, and allow a buyer to purchase goods or services, which are also being offered for sale via an auction, for a fixed-price that is typically higher than the starting price of the auction.

Store applications2106allow a seller to group listings within a “virtual” store, which may be branded and otherwise personalized by and for the seller. Such a virtual store may also offer promotions, incentives and features that are specific and personalized to a relevant seller.

Reputation applications2108allow users that transact, utilizing the networked system2002, to establish, build and maintain reputations, which may be made available and published to potential trading partners. Consider that where, for example, the networked system2002supports person-to-person trading, users may otherwise have no history or other reference information whereby the trustworthiness and credibility of potential trading partners may be assessed. The reputation applications2108allow a user, for example through feedback provided by other transaction partners, to establish a reputation within the networked system2002over time. Other potential trading partners may then reference such a reputation for the purposes of assessing credibility and trustworthiness.

Personalization applications2110allow users of the networked system2002to personalize various aspects of their interactions with the networked system2002. For example a user may, utilizing an appropriate personalization application2110, create a personalized reference page at which information regarding transactions to which the user is (or has been) a party may be viewed. Further, a personalization application2110may enable a user to personalize listings and other aspects of their interactions with the networked system2002and other parties.

The networked system2002may support a number of marketplaces that are customized, for example, for specific geographic regions. A version of the networked system2002may be customized for the United Kingdom, whereas another version of the networked system2002may be customized for the United States. Each of these versions may operate as an independent marketplace, or may be customized (or internationalized and/or localized) presentations of a common underlying marketplace. The networked system2002may accordingly include a number of internationalization applications2112that customize information (and/or the presentation of information) by the networked system2002according to predetermined criteria (e.g., geographic, demographic or marketplace criteria). For example, the internationalization applications2112may be used to support the customization of information for a number of regional websites that are operated by the networked system2002and that are accessible via respective web servers2016.

Navigation of the networked system2002may be facilitated by one or more navigation applications2114. For example, a search application (as an example of a navigation application) may enable key word searches of listings published via the networked system2002. A browse application may allow users to browse various category, catalogue, or system inventory structures according to which listings may be classified within the networked system2002. Various other navigation applications may be provided to supplement the search and browsing applications.

In order to make listings available via the networked system2002as visually informing and attractive as possible, the marketplace applications2020may include one or more imaging applications2116utilizing which users may upload images for inclusion within listings. An imaging application2116also operates to incorporate images within viewed listings. The imaging applications2116may also support one or more promotional features, such as image galleries that are presented to potential buyers. For example, sellers may pay an additional fee to have an image included within a gallery of images for promoted items.

Listing creation applications2118allow sellers conveniently to author listings pertaining to goods or services that they wish to transact via the networked system2002, and listing management applications2120allow sellers to manage such listings. Specifically, where a particular seller has authored and/or published a large number of listings, the management of such listings may present a challenge. The listing management applications2120provide a number of features (e.g., auto-relisting, inventory level monitors, etc.) to assist the seller in managing such listings. One or more post-listing management applications2122also assist sellers with a number of activities that typically occur post-listing. For example, upon completion of an auction facilitated by one or more auction applications2102, a seller may wish to leave feedback regarding a particular buyer. To this end, a post-listing management application2122may provide an interface to one or more reputation applications2108, so as to allow the seller conveniently to provide feedback regarding multiple buyers to the reputation applications2108.

Dispute resolution applications2124provide mechanisms whereby disputes arising between transacting parties may be resolved. For example, the dispute resolution applications2124may provide guided procedures whereby the parties are guided through a number of steps in an attempt to settle a dispute. In the event that the dispute cannot be settled via the guided procedures, the dispute may be escalated to a merchant mediator or arbitrator.

A number of fraud prevention applications2126implement fraud detection and prevention mechanisms to reduce the occurrence of fraud within the networked system2002.

Messaging applications2128are responsible for the generation and delivery of messages to users of the networked system2002, such messages for example advising users regarding the status of listings at the networked system2002(e.g., providing “outbid” notices to bidders during an auction process or to provide promotional and merchandising information to users). Respective messaging applications2128may utilize any one have a number of message delivery networks and platforms to deliver messages to users. For example, messaging applications2128may deliver electronic mail (e-mail), instant message (IM), Short Message Service (SMS), text, facsimile, or voice (e.g., Voice over IP (VoIP)) messages via the wired (e.g., the Internet), Plain Old Telephone Service (POTS), or wireless (e.g., mobile, cellular, WiFi, WiMAX) networks.

Merchandising applications2130support various merchandising functions that are made available to sellers to enable sellers to increase sales via the networked system2002. The merchandising applications2130also operate the various merchandising features that may be invoked by sellers, and may monitor and track the success of merchandising strategies employed by sellers.

The networked system2002itself, or one or more parties that transact via the networked system2002, may operate loyalty programs that are supported by one or more loyalty/promotions applications2132. For example, a buyer may earn loyalty or promotions points for each transaction established and/or concluded with a particular seller, and be offered a reward for which accumulated loyalty points can be redeemed.

A filter provider application2134may implement the functionality of the filter provider106, a messaging provider application2136may implement the functionality of the messaging provider108, and the customer service provider application2138may implement the functionality of the customer service provider110.

FIG. 22shows a diagrammatic representation of machine in the example form of a computer system2200within which a set of instructions may be executed causing the machine to perform any one or more of the methods, processes, operations, or methodologies discussed herein. The campaign manager102, the filter provider106, the messaging provider108, and/or the customer service provider110(seeFIG. 1) may operate on or more computer systems2200.

The example computer system2200includes a processor2202(e.g., a central processing unit (CPU) a graphics processing unit (GPU) or both), a main memory2204and a static memory2206, which communicate with each other via a bus2208. The computer system2200may further include a video display unit2210(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system2200also includes an alphanumeric input device2212(e.g., a keyboard), a cursor control device2214(e.g., a mouse), a drive unit2216, a signal generation device2218(e.g., a speaker) and a network interface device2220.

The drive unit2216includes a machine-readable medium2222on which is stored one or more sets of instructions (e.g., software2224) embodying any one or more of the methodologies or functions described herein. The software2224may also reside, completely or at least partially, within the main memory2204and/or within the processor2202during execution thereof by the computer system2200, the main memory2204and the processor2202also constituting machine-readable media.

The software2224may further be transmitted or received over a network2226via the network interface device2220.

Certain systems, apparatus, applications or processes are described herein as including a number of modules or mechanisms. A module or a mechanism may be a unit of distinct functionality that can provide information to, and receive information from, other modules. Accordingly, the described modules may be regarded as being communicatively coupled. Modules may also initiate communication with input or output devices, and can operate on a resource (e.g., a collection of information). The modules be implemented as hardware circuitry, optical components, single or multi-processor circuits, memory circuits, software program modules and objects, firmware, and combinations thereof, as appropriate for particular implementations of various embodiments.