Systems and methods for segmenting users of client applications

JP2024519767A5Pending Publication Date: 2025-05-16SKILLZ PLATFORM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2023569884
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-09-03
Filing Date
2022-05-12
Publication Date
2025-05-16

AI Technical Summary

Technical Problem

Client applications provide uniform experiences to all users regardless of their skill level or familiarity, leading to suboptimal user engagement and potential frustration or cancellation.

Method used

Implement a system for segmenting users based on interaction data and characteristics, assigning them to segments with tailored settings, and dynamically modifying the application client to provide personalized experiences.

Benefits of technology

Enhances user engagement by providing customized experiences, optimizing resource utilization through segment-based management, and improving computer processing and memory efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

In an aspect, first interaction data may be received characterizing a first interaction between a user and a mobile device configured to operate an application client. A plurality of segments of a user of the application client may be determined, and each of the plurality of segments may be associated with one or more settings characterizing operational parameters of the application client. The user may be assigned to the first segment based on a correspondence between characteristics of the user and characteristics associated with a first segment of the determined plurality of segments. The application client may be modified based on the one or more settings associated with the first segment. The modified application client may be provided for interaction by the user via the mobile device. Related systems, apparatus, techniques, and articles are also described.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority under 35 U.S.C. § 119 to U.S. Provisional Application No. 63 / 240,549, filed September 3, 2021, and U.S. Provisional Application No. 63 / 187,683, filed May 12, 2021, the contents of each of which are incorporated by reference herein in their entirety.

[0002] Users of a client application may engage with or otherwise interact with a client application in different ways depending, for example, on their level of skill or ability with the client application, how familiar each user is with the operation and mechanisms of the client application, and other similar factors. A client application that provides the same experience to all users, regardless of level of skill, ability, familiarity, etc., may adversely affect each user's experience with the client application, which may lead to suboptimal user engagement and ultimately user churn. For example, a client application that provides a novice user experience to all users may frustrate experienced users who are attempting to challenge themselves or who are expecting a more extensive experience with the client application. However, a client application that provides an advanced or challenging user experience to all users may frustrate novice users who are not yet able to engage with the client application beyond a basic skill or ability level. Summary of the Invention [Means for solving the problem]

[0003] Systems and methods are provided for segmenting users of client applications. Related apparatus, techniques, and articles are also described.

[0004] In an aspect, first interaction data may be received characterizing a first interaction between a user and a mobile device configured to operate an application client. A plurality of segments of a user of the client application may be determined, and each of the plurality of segments may be associated with one or more settings characterizing operational parameters of the application client. The user may be assigned to the first segment based on a correspondence between characteristics of the user and characteristics associated with a first segment of the determined plurality of segments. The application client may be modified based on the one or more settings associated with the first segment. The modified application client may be provided for interaction by the user via the mobile device.

[0005] The one or more features may be included in any feasible combination. For example, second interaction data characterizing a second interaction between a user and a mobile device may be received, the user may be assigned to a second segment of the plurality of segments based on the received second interaction data, the modified application client may be modified based on one or more settings associated with the second segment, and the modified application client may be provided for interaction by the user via the mobile device. For example, characteristic data characterizing a population of one or more users of the application client may be received, and one or more of the plurality of segments may be modified based on the received characteristic data. For example, the characteristic data may characterize an attribute, and the attribute may characterize one or more behaviors of the population. For example, the characteristic data may characterize a criterion, and the criterion may characterize a comparison between the attribute and a predetermined threshold, and the predetermined threshold may be based on a type of attribute. For example, a plurality of user identities for use with the application client can be determined, one or more of the plurality of segments can be associated with each of the determined plurality of user identities, an indication can be received indicating that a new user has installed the application client on the new user's mobile device and begun interacting with the application client, and in response to the indication, one of the plurality of user identities can be assigned to the new user, the user can be assigned to one or more of the plurality of segments associated with the user identity assigned to the new user, and the modified application can be based on one or more settings associated with the one or more of the plurality of segments assigned to the new user. For example, determining the plurality of user identities and associating one or more of the plurality of segments with each of the determined plurality of user identities can occur prior to receiving the first interaction data. For example, modifying the application client can include modifying a graphical display of the application client.For example, each of the plurality of segments may include a priority classification, and the user may be assigned to a first segment based on the priority classification. For example, providing the further modified application client may include determining a push notification that characterizes the further modified application client, and causing the push notification to be sent to a mobile device of the user such that the mobile device is configured to operate the further modified application client.

[0006] In another aspect, a system is provided that can include at least one data processor and a memory storing instructions configured to cause the at least one data processor to perform operations described herein. The operations can include receiving first interaction data characterizing a first interaction between a user and a mobile device configured to operate an application client, determining a plurality of segments of a user of the application client, each of the plurality of segments being associated with one or more settings that characterize an operating parameter of the application client, assigning the user to the first segment based on a correspondence between characteristics of the user and characteristics associated with a first segment of the determined plurality of segments, modifying the application client based on the one or more settings associated with the first segment, and providing the modified application client for interaction by the user via the mobile device.

[0007] The one or more features may be included in any feasible combination. For example, the operations may further include receiving second interaction data characterizing a second interaction between the user and the mobile device, assigning the user to a second segment of the plurality of segments based on the received second interaction data, modifying the modified application client based on one or more settings associated with the second segment, and providing the further modified application client for interaction by the user via the mobile device. For example, the operations may further include receiving characteristic data characterizing a population of one or more users of the application client, and modifying one or more of the plurality of segments based on the received characteristic data. For example, the characteristic data may characterize an attribute, and the attribute may characterize one or more behaviors of the population. For example, the characteristic data may characterize a criterion, and the criterion may characterize a comparison between the attribute and a predetermined threshold, and the predetermined threshold may be based on a type of attribute. For example, the operations may further include determining a plurality of user identities for use with the application client, associating one or more of the plurality of segments with each of the determined plurality of user identities, receiving an indication that a new user has installed the application client on the new user's mobile device and begun interacting with the application client, and in response to the indication, assigning one of the plurality of user identities to the new user, and assigning the user to one or more of the plurality of segments associated with the user identity assigned to the new user, where the modified application client may be based on one or more settings associated with the one or more of the plurality of segments assigned to the new user. For example, the determination of the plurality of user identities, associating one or more of the plurality of segments with each of the determined plurality of user identities may occur prior to receiving the first interaction data. For example, modifying the application client may include modifying a graphical display of the application client.For example, each of the multiple segments may include a priority classification, and a user may be assigned to a first segment based on the priority classification.

[0008] Also described are non-transitory computer program products (i.e., physically embodied computer program products) that store instructions that, when executed by one or more data processors of one or more computing systems, cause at least one data processor to perform the operations described herein. Similarly, described are computer systems that may include one or more data processors and a memory coupled to the one or more data processors. The memory may store, either temporarily or permanently, instructions that cause at least one processor to perform one or more of the operations described herein. Furthermore, the methods may be implemented by one or more data processors, either within a single computing system or distributed among two or more computing systems. Such computing systems may exchange data and / or commands or other instructions, etc., over one or more connections, including connections over a network (e.g., the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, etc.), such as over a direct connection between one or more of the computing systems.

[0009] The above-described embodiments will be more fully understood from the following detailed description taken in conjunction with the accompanying drawings, in which: The drawings are not intended to be drawn to scale. For clarity, not every component is labeled in every drawing. The drawings are as follows: [Brief description of the drawings]

[0010] [Figure 1] FIG. 1 is a block diagram illustrating an example system for real-time segmentation of users of a client application. [Diagram 2]1 is a flowchart of an example method for segmenting users of a client application in real time. [Diagram 3] FIG. 1 is a block diagram illustrating the operation of a real-time segmentation engine for personalizing a player's experience of a mobile game. [Figure 4A] FIG. 13 is a diagram of a graphical user interface for specifying a new real-time segment. [Figure 4B] 1 is a diagram of a graphical user interface for editing an existing real-time segment. [Diagram 5] 1 is a flowchart of an example method for pre-segmenting users of a client application. [Figure 6] 1 is a flowchart of an example method for segmenting users of a client application. [Figure 7] FIG. 1 is a block diagram of an example of a computing device that may perform one or more of the operations described herein, according to the present embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Certain exemplary embodiments are described to provide a general understanding of the principles of the structure, function, manufacture, and use of the devices and methods disclosed herein. One or more examples of these embodiments are illustrated in the accompanying drawings. Those skilled in the art will appreciate that the devices and methods specifically described herein and shown in the accompanying drawings are non-limiting exemplary embodiments, and the scope of the present invention is defined only by the claims. Features illustrated or described in connection with one exemplary embodiment may be combined with features of other embodiments. Such modifications and variations are intended to be included within the scope of the present invention. Furthermore, in this disclosure, like-named components of an embodiment generally have similar features, and therefore, within a particular embodiment, each feature of each like-named component is not necessarily described in full detail.

[0012] Some implementations of the systems and methods of the present invention may be directed to pre-segmentation of users of a client application. According to some implementations of the present invention, segmentation may be used to personalize the experience for each user of the client application by creating groups or cohorts or segments of users from a population of users that share common behaviors, characteristics, etc. The client application experience may be tailored to the users of each segment. To optimize the initial onboarding experience of new users of the client application, prospective users may be pre-segmented into one or more pre-generated segments before installing and using the client application. When a new user installs the client application and begins interacting with the client application, the new user may be immediately (or shortly thereafter) assigned to one or more of the pre-generated segments and presented with a personalized onboarding that improves the initial engagement with the client application. Thus, each segment may be associated with a different user experience in the client application. Thus, some implementations of the present invention may result in an improved customized experience for each user of the client application.

[0013] After being assigned to one or more of the pre-generated segments, a user can generate an event when the user further interacts or otherwise engages with the client application. The real-time segmentation system can react to user events by moving the user into or out of one or more real-time segments to provide a customized user experience in real-time within the client application. As a result, users with similar behaviors, characteristics, etc. can share similar or identical experiences in the client application as other users in the real-time segments. A user can belong to one or more real-time segments. Event-driven user activity can be used to segment users in real-time, thereby updating each user's experience in the client application as the user generates an event in the client application or otherwise interacts or engages with the client application. The real-time segmentation system can react based on the context of the user's actions, such as, for example, the user's location, the user's progress in or with the client application, etc. Such stateful event processing can be used by the real-time segmentation system to react to events in real time and in context as they occur within the client application, especially when the events may be transient in nature (e.g., a short winning streak in a mobile game) and a rapid response is desirable.

[0014] Therefore, some implementations of the present invention can enable modification and / or dynamic update of client and server configuration parameters (e.g., system settings), which can enable dynamic and flexible control of client application operations. Thus, some implementations of the present invention can provide a better overall system experience. In addition, some implementations of the present invention can improve efficiency and utilization of computer processing and memory by grouping users into segments, so that personalization or customization of user experience can be managed at the segment level for a large number of users, rather than managing the user experience of each user individually. Without grouping users into segments, for example, for a client application having millions or tens of millions of users, managing individual user experiences would be virtually impossible. For example, each segment may consist of software components running on computer hardware resources. Grouping users into segments allows the same computer hardware resources (e.g., computer processing and memory) to be used for a large number of users (e.g., hundreds of thousands, millions, tens of millions, etc.), resulting in significant optimization of computer resource utilization. In some implementations of the present invention, pre-segmenting users can be less computationally intensive than segmenting users in real-time (e.g., because the default user experience for future users can be pre-computed rather than performed on-the-fly). Thus, by pre-segmenting users, computational and memory efficiency and utilization can be dramatically improved, especially for client applications with a large or very large number of users.

[0015] For purposes of explanation only, and not limitation, this disclosure refers to a mobile game as an exemplary client application to illustrate various aspects of the present invention. The mobile game may be or include, for example, a sports game, an adventure game, a virtual playing card game, a virtual board game, a puzzle game, a racing game, or any other suitable type of mobile game. In an embodiment, the mobile game may be an asynchronous competitive skill-based game in which players can compete with each other within the mobile game, but do not have to play the mobile game at the same time. In an alternative embodiment, the mobile game may be a synchronous competitive skill-based game in which players can play the mobile game at the same time and compete with each other in the mobile game in real time. Other suitable mobile games are possible. However, some implementations of the present invention may be used with any suitable type of client application in which a user experience can be tailored or customized for a user. The client applications may relate to and / or provide a wide variety of functions and information, including, for example, entertainment (e.g., games, music, videos, etc.), business (e.g., word processing, accounting, spreadsheets, etc.), news, weather, finance, sports, etc.

[0016] FIG. 1 is a block diagram illustrating an exemplary system 100 for real-time segmentation of users of a client application according to an embodiment of the present disclosure that can provide dynamic and flexible control of client application behavior in real-time. In this disclosure, "real-time" refers to the processing of events or other data instantaneously or within a relatively short period of time (e.g., seconds, minutes) such that there is minimal delay between when the information is received, when the information is processed, and when the results are provided. As previously mentioned, segmentation can include personalization of the experience of users of a client application (e.g., players of a mobile game) by creating groups or cohorts or segments of users from a population of users who share common user behavior and / or other suitable characteristics. Segmentation can also include experimentation, such as the ability to randomize users within a group. For example, event-driven player activity (e.g., signing up, playing a game, depositing funds, etc. in the context of a mobile game) can be used to drive segmentation in real-time. An event can be any action a player takes within a mobile game (e.g., playing a game, winning a game, depositing cash, etc.) or the result or outcome of any action a player takes within a mobile game (e.g., winning 10 games in a row, losing 10 games in a row, etc.).

[0017] As shown in FIG. 1, each user may play a mobile game on a suitable client device 102 (e.g., a smartphone, tablet, laptop computer, etc., although any suitable electronic device may be used). The client device 102 may include a processor 104 for executing instructions for the mobile game stored in a memory 106. In an embodiment, a software development kit (SDK) 108 for the mobile game may reside in the memory 106 and be executed by the processor 104. The SDK 108 may consist of a set of instructions for executing the mobile game and may provide an interface through which the mobile game on the client device 102 may communicate with the server system 120, such as in-game player action information communicated from the mobile game when a user interacts with or otherwise engages with the mobile game. In an embodiment, player actions may occur outside of the mobile game. For example, such out-of-game player activity may include ad clicks or other similar activity outside of the mobile game. Thus, player activity may be any suitable type of in-game or out-of-game information associated with actions, events, or other interactions generated by a player. Player activities from the mobile game can be passed to the server system 120 by the SDK 108 via the first server 122. The first server 122 can be any suitable type of server capable of ingesting information in real time (e.g., Apache Kafka, an open source distributed event streaming platform for high performance data pipelines). Player activities received by the first server 122 can be passed to the real-time segmentation engine 126.

[0018] The real-time segmentation engine 126 can receive player activity and determine if a player needs to be added to a segment, removed from a segment, or if no action is required. The real-time segmentation engine 126 can include hardware (e.g., a processing device, circuitry, dedicated logic, programmable logic, microcode, device hardware, integrated circuits, etc.), software (e.g., instructions executed or executed on a processing device), or a combination thereof. For example, in an embodiment, the real-time segmentation engine 126 can use or be otherwise based on Apache Flink, which is a framework and distributed processing engine for large-scale real-time stateful computation of unbounded and bounded data streams. In an embodiment, segments can be predefined or dynamically generated, can be static or can change dynamically, can be of any suitable size (e.g., can be composed of any suitable number of players), and each can be associated with one or more player characteristics, behaviors, etc. Segments can be dynamically generated or altered, for example, as player characteristics, behaviors, etc. change to better address an evolving player population. Suitable machine learning / artificial intelligence techniques can be used to dynamically generate or alter segments. For example, a machine learning model can be trained based on historical data from all players of a mobile game. The machine learning model can then be used to dynamically generate or modify segments based on shared characteristics, behaviors, etc. of a subset of the player population. The machine learning model can be updated or otherwise adapted as player characteristics, behaviors, etc. evolve over time.

[0019] Segments may be defined using any suitable type of computer language or grammar, such as a SQL query. In an embodiment, a domain specific language (DSL) for segmentation may be a grammar that may be used to define segments. Using the DSL, a segment may be defined as a group of users that satisfy one or more attributes that meet specified criteria. A DSL may consist of several components, such as attributes, criteria, and combination logic. In an embodiment, an attribute may be a set of possible player / server behaviors (e.g., login platform, server location, deposits, etc.). Attributes may consist of core attributes, which may be a basic list of attributes used for the majority of segmentation use cases, and non-core attributes, which may be an expanded list of attributes used for "edge case" segmentation use cases, etc. In an embodiment, an attribute may have an attribute type, such as qualitative or quantitative. A qualitative type may be a categorical variable, such as country code, user ID, etc. A quantitative type may be a numerical variable, such as total deposits, number of logins, etc. Other attribute types are possible. In an embodiment, a criterion may be a comparison between the value of the attribute in question and a defined threshold, which may vary based on the attribute type. For example, for an "equal to" comparison, such as "platform=iOS", the criteria can be both qualitative and quantitative. For a "greater than" comparison, such as "deposits>$100", the criteria can be quantitative but not qualitative. For a "wildcard" comparison, such as "win sequence=XX%", the criteria can be qualitative but not quantitative. Other criteria are possible. In an embodiment, the combination logic can be Boolean logic for combining attributes and criteria. For example, an "OR" operator can be used, such as "country=US OR platform=iOS" (e.g., true if either A or B is met). For example, an "AND" operator can be used, such as "daily deposit>$25 AND daily prize<$25" (e.g., true if both A and B are met). Other types of combination logic can be used.In some embodiments, segment entry probabilities may be specified for use in, for example, A / B testing, for randomized experiments with segments, etc. The segment entry probability may be a percentage probability that a player who meets the segment criteria will be added to the segment.

[0020] According to some implementations of the invention, the DSL can support flexibility in segment creation by using a combination of attributes and criteria. Table 1 shows how segments can be more easily defined using the DSL, rather than based on SQL queries, for example. [Table 1]

[0021] FIG. 2 is a block diagram illustrating an example method 200 for segmenting a user of a client application in real time, according to an embodiment of the disclosure. At block 202, a player activity may be generated, such as by a player interacting with a mobile game executing on the client device 102 of FIG. 1. At block 204, the real-time segmentation engine 126 may receive the generated player activity (e.g., from the SDK 108 via the first server 122). In an embodiment, the received player activity may satisfy either an entry or an exit to one or more segments. At block 206, the real-time segmentation engine 126 may make a determination whether the player activity satisfies an entry into one or more segments (wherein "RTS" in FIG. 2 is an abbreviation for "real-time segment"). Since each segment may be defined according to one or more attributes, the real-time segmentation engine 126 may compare the attributes of the player to the attributes defined for the segment to determine whether the player activity satisfies an entry into the segment. If in block 206 the real-time segmentation engine 126 determines that the player activity does not satisfy the entry into one or more segments, then in block 212 the real-time segmentation engine 126 may take no action with respect to the player. If in block 206 the real-time segmentation engine 126 determines that the player activity does satisfy the entry into one or more segments, then in block 208 the real-time segmentation engine 126 may determine whether the player has already been added to one or more segments. In an embodiment, a player may satisfy the entry conditions of one or more segments one or more times. However, a player may be added to one or more segments the first time the player satisfies the entry conditions of one or more segments.If the real-time segmentation engine 126 determines that the player has already been added to one or more segments, then the real-time segmentation engine 126 may take no action with respect to the player, at block 212. However, if the real-time segmentation engine 126 determines that the player has not yet been added to one or more segments, then the real-time segmentation engine 126 may add the player to a segment, at block 210. For purposes of illustration and not limitation, an exemplary attribute-based definition of a segment may be specified as follows: Segment A=[winning streak][is=]

[20] (1)

[0022] According to equation (1), if the player activity is such that the player just had a winning streak equal to 20 games, then the player may be added to segment A. More complex segment definitions are possible because a segment definition can include any suitable combination of one or more attributes and / or criteria. For example, equation (2) is a combination of several attributes. Segment B=[Lifetime spend][is >][$50] AND [winning streak][is=]

[20] (2)

[0023] According to equation (2), a player may be added to segment B if player activity is such that the player's lifetime spending exceeds exactly $50 and the player has a winning streak equal to exactly 20 games. Note that in these examples, the player may be added to both segment A and segment B since the player meets both definitions. Other segment definitions are possible.

[0024] At block 214, the real-time segmentation engine 126 may make a determination whether the player activity satisfies an exit from one or more segments. Since each segment may be defined according to one or more attributes, the real-time segmentation engine 126 may compare the attributes of the player to the attributes defined for the segment to determine whether the player activity satisfies an exit from the segment. If at block 214, the real-time segmentation engine 126 determines that the player activity does not satisfy an exit from one or more segments (e.g., the player activity still satisfies the definition of one or more segments), then at block 212, the real-time segmentation engine 126 may take no action with respect to the player. If at block 214, the real-time segmentation engine 126 determines that the player activity satisfies an exit from one or more segments, then at block 216, the real-time segmentation engine 126 may determine whether the player has already been removed from one or more segments. In an embodiment, a player may satisfy the exit conditions for one or more segments one or more times. However, a player may be removed from one or more segments when the player first meets an exit condition from one or more segments. If the real-time segmentation engine 126 determines that the player has already been removed from one or more segments, then in block 212 the real-time segmentation engine 126 may take no action with respect to the player. However, if the real-time segmentation engine 126 determines that the player has not yet been removed from one or more segments, then in block 218 the real-time segmentation engine 126 may remove the player from the segment. For purposes of illustration and not limitation, a player was previously added to segment A based on meeting the segment definition of equation (1). The player has been in segment A for a period of time.The player then generates player activity indicating that his or her winning streak has increased to 21 games. The real-time segmentation engine 126 may compare the player's attributes (a 21-game winning streak) to the segment definition in equation (1) (i.e., a winning streak equal to 20 games). Because the player's winning streak no longer equals 20 games, the player activity satisfies an exit from the segment. As a result, the real-time segmentation engine 126 may remove the player from segment A.

[0025] According to some implementations of the present invention, as a player enters and exits a segment in real time, the player experience in or associated with the mobile game can be updated in real time or otherwise personalized to the player. FIG. 3 is a block diagram illustrating the operation 300 of a real-time segmentation engine 126 for personalizing a player's experience of a mobile game, according to an embodiment of the present disclosure. At block 302, rules for entering and exiting one or more real-time segments can be defined or otherwise generated. These rules, such as definitions of attributes of each real-time segment, can be used by the real-time segmentation engine 126 at block 304 to determine whether a player is eligible for entering and exiting one or more real-time segments. The rules can be predefined or otherwise specified, for example, by a system administrator via the administrator portal 128 of FIG. 1 (described in more detail below). At block 306, one or more real-time player actions can occur within the mobile game. These in-game events can be passed to the real-time segmentation engine 126 at block 304. Additionally or alternatively, at block 308, one or more real-time player actions can occur outside of the mobile game, such as via a third-party application, website, etc. These out-of-game events can be passed to the real-time segmentation engine 126 (e.g., via Apache Kafka, a distributed stream processing engine for building real-time data pipelines and streaming applications) at block 304. Based on the events received from either or both of blocks 306 and 308, and the segment rules from block 302, players can be added to or removed from real-time segments by the real-time segmentation engine 126 at block 310.The segment settings associated with the segments to personalize the player experience may be applied at block 312. The personalized player experience based on the real-time segment settings from block 312 may be applied at block 306 to a mobile game application executing on the player's client device to generate a tailored or customized experience for the player of the mobile game.

[0026] Any suitable aspect of the player experience within or associated with the mobile game may be updated, customized, modified, or otherwise personalized for a player based on the segment to which the player is added. For example, the real-time segmentation engine 126 may personalize any or all aspects of the graphical display of the mobile game (e.g., one or more graphical elements of the mobile game, such as any aspect of the "look and feel" of the graphical interface displayed by the mobile game), information displayed within the mobile game, features and functionality of the mobile game, and the like. For purposes of example only and not limitation, the real-time segmentation engine 126 may personalize the graphical display of the mobile game to display, for example, player incentives, special offers, advertisements, and the like within the mobile game or to a player within the mobile game. In embodiments, different player incentives, special offers, advertisements, and the like may be displayed to a player of the mobile game based on the segment to which the player is added. Additionally or alternatively, the real-time segmentation engine 126 may personalize, for example, prizes, rewards, and / or gifts, which are displayed or presented to the player in an associated gift store. For example, a player in one segment may be presented with different prizes / rewards / gifts than may be presented to another player in another segment. In this manner, a menu or list of prizes, rewards, and / or gifts may be tailored to each or any player in an associated gift store that is displayed in the mobile game. Additionally or alternatively, the real-time segmentation engine 126 may personalize graphical information displayed to the user outside of the mobile game, such as, for example, advertisements or offers surfaced to the player on a client device outside of the mobile game. Other personalizations are possible. The type of personalization may be specified as part of the definition or associated settings for each or any segment.

[0027] For purposes of illustration and not limitation, the first exemplary segment can be based on a winning or losing streak of a predetermined number of games, such as a player winning or losing 10 overall games in a row in a 24-hour period. The segment personalization setting can be, for example, a special limited time offer (LTO) or a new tournament template (e.g., a specialized competition in a skill-based mobile game that can provide a player with a more or less difficult competition). Thus, as soon as a player achieves 10 lost overall games (player action or event), the real-time segmentation engine 126 can determine that the player is eligible for entry into the first segment. Upon entering the first segment, the real-time segmentation engine 126 can apply the segment personalization setting to the player's mobile game via the second server 124 (e.g., Apache Kafka, an open source distributed event streaming platform for high performance data pipelines) and the SDK 108. For example, special LTOs can be displayed to players (either inside or outside the mobile game), or new tournament templates can be provided within the game by modifying the display of the mobile game to allow players to compete in special tournaments that may be less challenging for the player.

[0028] As another example, the second exemplary segment can be based on a player installing a second game from a particular developer. The segment personalization settings can be, for example, special display of information to the player describing collaboration between systems and prizes within and across the developer's game. Thus, as soon as the player installs the second game from the developer (player action or event), the real-time segmentation engine 126 can determine that the player is eligible for entry into the second segment. Upon entering the second segment, the real-time segmentation engine 126 can apply the segment personalization settings to the player's mobile game. For example, special information can be displayed to the player in the mobile game by changing the display of the game to present the special information to the player. According to some implementations of the present invention, once the player exits the segment (in response to a suitable player action), the real-time segmentation engine 126 can cause the segment personalization settings to be removed from the player's mobile game or new segment personalization settings to be applied to the player's mobile game via the second server 124 and SDK 108, depending on the settings specified for the segment. In an embodiment, a player may be retained in a segment until they are no longer eligible for the segment (and are removed from the segment). In another embodiment, a player may be retained in a segment for a predetermined maximum amount of time (e.g., minutes, hours, days) once the player is eligible for entry into the segment, unless removed sooner due to player activity that meets the segment removal criteria.

[0029] By way of further illustration, a third exemplary segment may have the following segment entry conditions: advertisement came from a social media platform, the player is based in the United States, the user installs the mobile game, and the player plays the first game within the first day. The segment personalization settings associated with the third segment may include an immediate display of an LTO to the player upon entry into the segment. An exit condition for the segment is that the player takes the LTO. Thus, if a first player clicks on a mobile game advertisement, the advertisement came from a social media platform, the first player is based in the United States, the first player installs the game, and the first player plays the first game within one day, the first player may be added to the third segment and the LTO is immediately displayed to the first player. If the first player takes the LTO (i.e., accepts the offer), the first player may exit the segment and the LTO may be hidden from display or otherwise removed.

[0030] The definition, rules, attributes, and segment personalization settings of each segment may be specified in any suitable manner. In an embodiment, an administrator or administrator portal 128 of FIG. 1 may be used to specify any or all aspects of each segment. The administrator portal 128 may be a suitable graphical user interface through which an administrator or administrator of the server system 120 may specify segment definitions. For example, FIG. 4A is an illustration of a graphical user interface (GUI) 405 for specifying a new real-time segment. The GUI 405 may include a name field 410, a priority field 415, and a segment descriptor field 420. Additional and / or alternative fields are possible. The name field 410 may be used to enter a name for the real-time segment. The priority field 415 may be used to specify a priority for the real-time segment, as real-time segments may have priorities associated with them. In an embodiment, a player may be eligible for entry into one or more real-time segments, at least two of which share one or more characteristics. In an embodiment, a player may be assigned to the real-time segment associated with the highest priority. For example, a particular personalization or customization for a player may be applied to high priority segments (e.g., the highest priority segment or segments having a priority above a particular threshold) and not to lower priority segments. Additionally or alternatively, real-time segments may be applied in a prioritized order for a player, if desired, such as when a player qualifies for entry into more than one real-time segment. In alternative embodiments, the priority may be used to determine which personalization or customization from multiple segments is displayed to a player. For example, if a player is assigned to multiple segments, each with different values ​​set for a particular characteristic, the characteristic from the highest priority segment may be displayed to the player.For purposes of illustration and not limitation, if a player is assigned to three different segments, each of which sets a custom value for a particular button color, the player may be shown the button color associated with the highest priority segment. Alternatively, if a player is eligible for entry into multiple real-time segments that do not share one or more characteristics, the player may be assigned to each of those multiple segments without prioritizing any of the segments. The segment descriptor field 420 may be used to enter a real-time segment definition or description, for example, using a DSL, as discussed above. Once the information is entered, the administrator may create a new real-time segment by pressing the create button 425. Once created, the information associated with the new real-time segment may be passed to the real-time segmentation engine 126 for use in segmenting players. For example, FIG. 4B is an illustration of a GUI 430 for editing an existing real-time segment. The GUI 430 may include a name field 435, a priority field 440, and a segment descriptor field 445. Additional and / or alternative fields are possible. The name field 435 may be used to enter a name for the real-time segment to be updated. The priority field 415 may be used to specify or update the priority of the real-time segment. The segment descriptor field 420 may be used to update the real-time segment definition or description, for example, using a DSL, as discussed above. Once the information is entered, the administrator can update the real-time segment by pressing an update button 450. Once updated, the information associated with the updated real-time segment can be passed to the real-time segmentation engine 126 and used to update the segmentation of players.

[0031] As previously mentioned, the real-time segmentation engine 126 may be used to personalize player experiences in or associated with a mobile game in real-time based on event-driven player activity. In addition to real-time processing, the batch segmentation engine 130 of FIG. 1 may be used to manage segments whose criteria are triggered based on player state, which may be calculated through an offline batch process that may extend to hours or days rather than real-time. Player state may be an aggregation of player events over a certain period of time, such as, for example, games played in a lifetime, games won in the last 180 days, total cash deposited in 120 days, etc. The batch segmentation engine 130 may include hardware (e.g., a processing device, circuitry, dedicated logic, programmable logic, microcode, device hardware, integrated circuits, etc.), software (e.g., instructions executed or executed on a processing device), or a combination thereof. For example, in an embodiment, the batch segmentation engine 130 may use or be otherwise based on Snowflake (a cloud-based data warehouse for storing and analyzing data) or any other suitable database. The batch segmentation engine 130 may receive the same information as the real-time segmentation engine 126 (e.g., via the first server 122) and process the information in parallel or otherwise in cooperation with the real-time segmentation engine 126 (albeit in a slower batch process). Segments for batch processing may be defined using any suitable type of computer language or grammar, such as a DSL, SQL queries, etc. In an embodiment, segments for the batch segmentation engine 130 may be specified in the same manner as described above for the real-time segmentation engine 126 (e.g., via the administrator portal 128).Thus, the segments of the batch segmentation engine 130 can use the same or similar DSL language or grammar and can be specified using the same or similar components, such as attributes, criteria, rules, and combinatorial logic, previously discussed for the real-time segmentation engine 126. For example, a batch segment can be defined as players who have spent more than $100 in any 90 day period. Other segment definitions for the batch segmentation engine 130 are possible.

[0032] According to some implementations of the present invention, a segment may be processed as a real-time process, as a batch process, or as a combination of real-time and batch processes. For example, a segment may be triggered when offline player status (e.g., a player who has spent more than $100 in any 90 days) or real-time player activity or event (e.g., a player who just won 20 games in a row) is met. In an embodiment, a segment may be triggered on criteria based on a combination of offline player status and real-time player activity or event when both criteria are met. For purposes of explanation and not limitation, the aggregate criteria for a segment may be a player who has spent more than $100 in a 90 day period and who just won 20 games in a row. Once triggered and the player enters the segment, the server system 120 may personalize the player experience for the player of the mobile game using the segment personalization settings specified for that segment.

[0033] In an embodiment, the segment personalization settings from the real-time and batch processes of the real-time segmentation engine 126 and the batch segmentation engine 130, respectively, can be applied to the player's mobile game by a user segmentation service (USS) engine 140 shown in FIG. 1. The USS engine 140 can include hardware (e.g., a processing device, circuitry, dedicated logic, programmable logic, microcode, device hardware, integrated circuits, etc.), software (e.g., instructions executed or executed on a processing device), or a combination thereof. For example, in an embodiment, the USS engine 140 can use or otherwise be deployed on Kubernetes, an open source container orchestration system for automating the deployment, scaling, and management of computer applications. The USS engine 140 can receive the appropriate segment settings from the real-time segmentation engine 126 and / or the batch segmentation engine 130 and output segment personalization or customization information to update or modify a player experience in or associated with the mobile game on the player's client device. The USS engine 140 may integrate the output of the real-time segmentation engine 126 and the batch segmentation engine 130 to manage segment entry and exit, where the segments may be either real-time or batch segments. For example, the real-time segmentation engine 126 and the batch segmentation engine 130 may pass player segment mapping information to the USS engine 140 that may be used to map player IDs to specific segment IDs specified in the segment definition. In an embodiment, the player segment mapping information may consist of player segment key value pairs (e.g., player ID, segment ID), although additional and / or alternative information may be included in the player segment mapping information (e.g., attributes, player location, etc.).In additional embodiments, a time to live (TTL) may be assigned to any or all of the player segment mappings to allow the segment mappings (and therefore the segments) to expire after a predetermined time interval specified by the TTL.

[0034] According to one embodiment of the present invention, the USS engine 140 may support a push notification service to push personalization updates to a player's client device to customize or otherwise personalize a player's mobile game experience based on entering or exiting a segment. However, the USS engine 140 may support any suitable type of technology or mechanism that may update, customize, personalize, modify, or otherwise configure a player experience within or associated with a mobile game. By way of illustration and not limitation, the USS engine 140 may support LTO push notifications and triggered push notifications. In an embodiment, the USS engine 140 may send an Amazon Simple Queue Service (SQS) message to a suitable push notification service, which may consume such a message and send an LTO or triggered push notification to the player's client device. SQS is a fully managed message queuing service that allows users to decouple and scale microservices, distributed systems, and serverless applications. For example, a player who enters a segment associated with a new LTO may receive an LTO push notification on their client device informing them that the LTO is available. In an embodiment, each LTO may be associated with a marketing campaign. When a player enters a segment associated with an LTO, the USS engine 140 may perform a lookup or retrieval (from a suitable database or distributed cache, such as Redis) of the LTO and the marketing campaign associated with the LTO (e.g., to ensure that the LTO and associated marketing campaign exist). The USS engine 140 may also perform a lookup or retrieval of the profile of the player who entered the segment.The USS engine 140 can then set the game ID to the mobile game being played by the player or any other appropriate mobile game (e.g., the most played mobile game of the day, week, month, etc.). Based on the obtained information and the game ID, the USS engine 140 can construct an appropriate push message for the player for the LTO. The USS engine 140 can identify or otherwise determine a push notification service or other push provider to deliver the message and can then use the identified service to send an LTO push notification to the player's client device. Once received by the client device, the LTO push notification can be configured to update the client device to display the LTO to the player (e.g., either inside or outside of a mobile game running on the client device). Other types of push notifications are possible.

[0035] In an embodiment, a triggered push notification may be a push of personalized information to a player triggered by an event from the player. The triggered push notification may be used to determine which players included in the trigger should receive a push based on the segment the player belongs to. For example, the triggered push notification may be used to personalize any segment or segments the player belongs to if the player enters (or exits) any one of those segments. When a player generates an event (e.g., via player activity), the USS engine 140 may perform a lookup or retrieval (from an appropriate database or distributed cache such as Redis) of the profile of the player who generated the event. The USS engine 140 may also perform a lookup or retrieval of all segments (both real-time and batch) for the player who generated the event (e.g., using the player's retrieved profile information). If the player belongs to one or more segments associated with the triggered push notification, the USS engine 140 may set the game ID to the mobile game being played by the player, or any other appropriate mobile game (e.g., the most played mobile games for the day, week, month, etc.). Based on the obtained information and the game ID, the USS engine 140 can construct an appropriate (triggered) push message for the player. The USS engine 140 can identify or otherwise determine a push notification service or other push provider to deliver the message and can then use the identified service to send the triggered push notification to the player's client device. Once received by the client device, the triggered push notification can be configured to personalize or customize, or cause personalization or customization, of a player experience within or associated with the mobile game.

[0036] In embodiments, there may be a delay in identifying various characteristics and behaviors for a new player (other than being a “new player”) entering or participating in a mobile game for the first time after installation. For example, it may take time for each new player to fully interact or engage with the mobile game before such characteristics and behaviors are fully identified. Such a situation may cause an initial delay in assigning the new player to one or more segments. According to an embodiment, a prospective player may be pre-segmented into one or more segments before installing and participating in a mobile game or other initial event. In an embodiment, multiple segments may be pre-generated by the real-time segmentation engine 126, the batch segmentation engine 130, or a combination of both. Any suitable number of segments may be pre-generated according to some embodiments of the present invention. Each pre-generated segment may be based on any suitable combination of player characteristics and / or behaviors, and each pre-generated segment may be used to personalize the mobile game experience for the new player in any suitable manner. Such pre-generated segments may be assigned to prospective players before they exist and participate in a mobile game such that various aspects of the player experience may be customized before the player interacts with or otherwise engages with the mobile game for the first time. In embodiments, the pre-generated segments may be associated with player identifications (IDs) that exist and will be assigned at some point in the future, where each player ID may be, for example, any suitable unique combination of numbers and / or letters or other suitable unique identifiers. The real-time segmentation engine 126 and / or the batch segmentation engine 130 may pre-allocate multiple player IDs and assign or associate one or more pre-generated segments with each pre-allocated player ID. Any suitable number of player IDs may be pre-allocated and any suitable number of segments may be pre-generated in such a manner.

[0037] When a new player installs and joins the mobile game, each new player may be assigned one of the pre-allocated IDs, such as the next consecutive pre-allocated player ID, the lowest numbered available pre-allocated player ID, or any suitable one of the pre-allocated player IDs, for example, when the new player creates his / her game account or based on other suitable criteria. There may be one or more pre-generated segments associated with each pre-allocated player ID, so that the new player may enter one or more pre-generated segments associated with the pre-allocated player ID immediately (or shortly thereafter) after joining the mobile game. In an alternative embodiment, each new player may be assigned to one or more pre-generated segments based on a correspondence between the characteristics / behavior of the new player and the characteristics / behavior of the segments. For purposes of illustration and not limitation, a new player having a particular geographic location, device platform, and device OS version may be assigned to a pre-generated segment having identical or overlapping characteristics immediately (or shortly thereafter) upon installing and joining the mobile game. In such an alternative embodiment, the new player may be assigned a player ID associated with the segment to which the new player was assigned. If a new player is assigned to multiple pre-generated segments, the new player may be assigned, for example, a player ID associated with the highest priority segment. According to some embodiments of the present invention, a new player may be segmented immediately (or shortly thereafter) upon joining a mobile game, such as after creating a game account, after completing an initial training or initial experience within the mobile game, or at any other suitable time.

[0038] FIG. 5 is a block diagram illustrating an example method 500 for pre-segmenting a user of a client application, according to an embodiment of the disclosure. In an embodiment, the method 500 may be performed using a real-time process (e.g., using the real-time segmentation engine 126 of FIG. 1), a batch process (e.g., using the batch segmentation engine 130 of FIG. 1), or a combination of both. For purposes of explanation only, and not limitation, the method 500 illustrates various aspects of the present embodiment with reference to the batch segmentation engine 130. However, the method 500 may be performed by the real-time segmentation engine 126, the batch segmentation engine 130, or a combination of both. At block 505, a number of player IDs may be pre-allocated, such as, for example, by the batch segmentation engine 130. Any suitable number of player IDs may be pre-allocated. At block 510, the batch segmentation engine 130 may pre-generate a number of segments. Any suitable number of segments may be pre-generated by the batch segmentation engine 130. At block 515, the batch segmentation engine 130 may associate one or more of the plurality of pre-generated segments with each pre-allocated player ID. At block 520, an indication or other suitable notification may be received indicating that a new player has installed and joined the mobile game. For example, the indication may be received when the new player creates a game account with the mobile game. In embodiments, the indication may be received by the batch segmentation engine 130. At block 525, one of the plurality of pre-allocated player IDs may be assigned to the new player, such as the next consecutive pre-allocated player ID, the lowest numbered available pre-allocated player ID, or any suitable one of the plurality of pre-allocated player IDs.In an embodiment, the batch segmentation engine 130 may assign a pre-allocated player ID to the new player, although the pre-allocated player ID may be assigned by any suitable process (e.g., a real-time process, a batch process, or a combination of both) executing or otherwise operating on the server system 120. At block 530, the batch segmentation engine 130 may assign the new player to one or more pre-generated segments associated with the assigned pre-allocated player ID. At block 535, the batch segmentation engine 130 may personalize a player experience for the new player based on settings of the assigned one or more pre-generated segments. At block 540, the personalized player experience may be provided to the new player of the mobile game. For example, the batch segmentation engine 130 may suitably modify a mobile game running on the new player's mobile device based on settings of the assigned one or more pre-generated segments. After the initial assignment of a pre-generated segment to a new player, the player may be assigned to other (non-pre-generated) segments in real-time by the real-time segmentation engine 126 as the player continues to interact within and with the mobile game, for example, according to the method 200 shown in FIG. 2.

[0039] Any suitable aspect of the initial player experience within or associated with the mobile game may be updated, customized, modified, or otherwise personalized for a new player based on the pre-generated segment to which the new player is added. For example, the real-time segmentation engine 126, the batch segmentation engine 130, or a combination of both, may personalize any or all aspects of the graphical display of the mobile game (e.g., one or more graphical elements of the mobile game, such as any aspect of the "look and feel" of the graphical interface displayed by the mobile game), information displayed within the mobile game, features and functionality of the mobile game, etc. For purposes of example only and not limitation, the real-time segmentation engine 126, the batch segmentation engine 130, or a combination of both, may personalize the graphical display of the mobile game to display, for example, player incentives, special offers, advertisements, etc., within the mobile game or to new players within the mobile game. In embodiments, different player incentives, special offers, advertisements, etc. may be displayed to new players of the mobile game based on the pre-generated segment to which the new player is added. The type of personalization may be specified as part of the definition or associated settings of each pre-generated segment. For example, pre-segmentation may be used to customize and / or optimize initial or early aspects of a mobile game, such as a first-time user experience (FTUE). For purposes of illustration and not limitation, a pre-generated segment personalization setting may be, for example, a special LTO applicable to a new player. In embodiments, one or more special LTOs may be presented to a new player immediately or shortly thereafter after the new player completes a FTUE with the mobile game.

[0040] Additionally or alternatively, pre-segmentation may be used to support testing (e.g., A / B testing, etc.) of various aspects of a new player's onboarding experience in a mobile game. In embodiments, pre-segmentation may be used to more quickly and efficiently support testing and comparison of different initial configurations of user experience against each other. For example, A / B testing (or other suitable testing) may be performed within an initial period of a new player in a mobile game (e.g., within the first few minutes of installing, joining, creating a mobile game account, etc.) based on the pre-generated segment to which the new player is assigned. As a result, pre-segmentation may provide the ability to run tests on different aspects of one or more new player's initial experience in a mobile game, such as, for example, testing the effect of different LTOs across different new players simultaneously. Such testing may be used, for example, to optimize a new player's initial or first-time experience in a mobile game.

[0041] FIG. 6 is a block diagram illustrating an example method 600 for segmenting users of a client application, according to an embodiment of the disclosure. In an embodiment, the method 600 may be performed using a real-time process (e.g., using the real-time segmentation engine 126 of FIG. 1), a batch process (e.g., using the batch segmentation engine 130 of FIG. 1), or a combination of both. Furthermore, in an embodiment, the method 600 may be used for real-time segmentation and / or pre-segmentation of users of a client application. For purposes of discussion only and not limitation, the method 600 refers to the real-time segmentation engine 126 to illustrate various aspects of the present embodiment. However, the method 600 may be performed by the real-time segmentation engine 126, the batch segmentation engine 130, or a combination of both.

[0042] At block 605, first interaction data may be received that characterizes a first interaction between a user and a mobile device configured to operate the application client. For example, in some embodiments, the first interaction data may characterize a user's interaction or engagement with a client application. In some embodiments, the first interaction data may characterize a user's interaction with a mobile device outside of the client application. For example, such out-of-application user activity may include ad clicks or other similar activity outside of the client application. Thus, user interaction may be any suitable type of in-application or out-of-application information associated with an action, event, or other interaction generated by a user. In an embodiment, the first interaction data may be received by the real-time segmentation engine 126.

[0043] At block 610, multiple segments of users of the client application may be determined, and each of the segments may be associated with one or more settings that characterize operating parameters of the application client. In an embodiment, the multiple segments may be predefined or dynamically generated, may be static or may change dynamically, may be of any suitable size (e.g., may consist of any suitable number of users), and each may be associated with one or more user characteristics, behaviors, etc. In an embodiment, the multiple segments may be determined by real-time segmentation engine 126.

[0044] In block 615, the real-time segmentation engine 126 may assign the user to a first segment based on a correspondence between the characteristics of the user and the characteristics associated with the first segment of the determined plurality of segments. For example, each segment of the plurality of segments may be defined according to one or more attributes, so that the attributes of the user may be compared to the attributes defined for the plurality of segments to determine whether the user activity satisfies entry into one or more of the plurality of segments. In an embodiment, each of the determined plurality of segments may include a priority classification, and the user may be assigned to the first segment based on the included priority classification.

[0045] At block 620, the real-time segmentation engine 126 may modify an application client running on the mobile device based on one or more settings associated with the first segment. For example, in an embodiment, the real-time segmentation engine 126 may modify a graphical display of the application client based on one or more settings associated with the first segment.

[0046] In block 625, the real-time segmentation engine 126 may provide the modified application client to the mobile device, and a user may interact with the modified application client via the mobile device.

[0047] In some embodiments, second interaction data characterizing a second interaction between the user and the mobile device may be received, and the user may be assigned to a second segment of the plurality of segments based on the received second interaction data. The modified application client may be further modified based on one or more settings associated with the second segment, and the further modified application client may be provided to the mobile device for user interaction with the further modified application client via the mobile device. In some embodiments, providing the further modified application client may include determining a push notification characterizing the further modified application client, and causing the push notification to be sent to the mobile device such that the mobile device is configured to operate the further modified application client.

[0048] In some embodiments, characteristic data characterizing a population of one or more users of the application client can be received, and one or more of the plurality of segments can be modified based on the received characteristic data. In some embodiments, the characteristic data can characterize an attribute characterizing one or more behaviors of the population. In some embodiments, the characteristic data can characterize a criterion characterizing a comparison between the attribute and a predefined threshold based on a type of attribute.

[0049] FIG. 7 is a block diagram of an exemplary computing device 700 that may perform one or more of the operations described herein, according to the present embodiment. The computing device 700 may be connected to other computing devices in a LAN, an intranet, an extranet, and / or the Internet. The computing device 700 may operate in the capacity of a server machine in a client-server network environment, or in the capacity of a client in a peer-to-peer network environment. The computing device 700 may be provided by a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Furthermore, although only a single computing device 700 is shown, the term "computing device" should be construed to include any collection of computing devices that individually or jointly execute a set (or sets) of instructions to perform the methods discussed herein.

[0050] The exemplary computing device 700 may include a computer processing device 702 (e.g., a general purpose processor, an ASIC, etc.), a main memory 704, a static memory 706 (e.g., a flash memory, etc.), and a data storage device 708, which may communicate with each other via a bus 730. The computer processing device 702 may be provided by one or more general purpose processing devices, such as a microprocessor, a central processing unit, etc. In an exemplary example, the computer processing device 702 may include a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or a processor implementing a combination of instruction sets. The computer processing device 702 may also include one or more special purpose processing devices, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, etc. The computer processing device 702 may be configured to perform the operations described herein in accordance with one or more aspects of the present disclosure to perform the operations and steps described herein.

[0051] Computing device 700 may further include a network interface device 712 that may communicate with a network 714. Data storage device 708 may include a machine-readable storage medium 728 on which one or more sets of instructions may be stored, e.g., instructions for performing operations described herein, in accordance with one or more aspects of the present disclosure. Also, instructions 718 implementing core logic instructions 726 may reside, completely or at least partially, within main memory 704 and / or within computer processing device 702 during execution by computing device 700, main memory 704, and computer processing device 702 constituting computer-readable media. Instructions may further be transmitted or received over network 714 via network interface device 712.

[0052] While machine-readable storage medium 728 is shown to be a single medium in the illustrative example, the term "computer-readable storage medium" should be interpreted to include a single medium or multiple media (e.g., centralized or distributed databases and / or associated caches and servers) that store one or more sets of instructions. The term "computer-readable storage medium" should also be interpreted to include any medium capable of storing, encoding, or carrying a set of instructions for execution by a machine and causing the machine to perform the methods described herein. Thus, the term "computer-readable storage medium" should be interpreted to include, but is not limited to, solid-state memory, optical media, magnetic media, and the like.

[0053] The subject matter described herein provides many technical advantages. For example, some implementations of the present invention can enable modification and / or dynamic updating of client and server configuration parameters (e.g., system settings), which can enable dynamic and flexible control of client application operations. Thus, some implementations of the present invention can provide a better overall system experience. In addition, some implementations of the present invention can improve efficiency and utilization of computer processing and memory by grouping users into segments, such that personalization or customization of user experience can be managed at the segment level for a large number of users, rather than managing the user experience of each user individually. Without grouping users into segments, for example, for a client application having millions or tens of millions of users, managing individual user experiences would be virtually impossible. For example, each segment may consist of software components running on computer hardware resources. Grouping users into segments can allow the same computer hardware resources (e.g., computer processing and memory) to be used for a large number of users (e.g., hundreds of thousands, millions, tens of millions, etc.), resulting in significant optimization of computer resource utilization. In some implementations of the present invention, pre-segmenting users can be less computationally intensive than segmenting users in real-time (e.g., because the default user experience for future users can be pre-computed rather than performed on-the-fly). Thus, by pre-segmenting users, computational and memory efficiency and utilization can be dramatically improved, especially for client applications with a large or very large number of users.

[0054] The embodiments of the subject matter and operation described in this disclosure can be implemented in digital electronic circuitry, or in hardware including computer software, firmware, or structures disclosed in this disclosure and their structural equivalents, or in one or more combinations thereof. The embodiments of the subject matter described in this disclosure can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by or control of the operation of a data processing apparatus. Alternatively or additionally, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to a suitable receiving device for execution by the data processing apparatus. The computer storage medium can be, or can be included in, a computer readable storage device, a computer readable storage substrate, a random access or serial access memory array or device, or one or more combinations thereof. Furthermore, the computer storage medium is not a propagating signal, but the computer storage medium can be a source or destination of computer program instructions encoded on an artificially generated propagated signal. A computer storage medium may also be, or be contained in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).

[0055] The operations described in this disclosure may be implemented as operations performed by a data processing apparatus on data stored in one or more computer-readable storage devices or received from other sources.

[0056] The term "data processing apparatus" encompasses any kind of apparatus, device, and machine for processing data, including, for example, a programmable processor, a computer processing device, a computer, a system on a chip, or a plurality or combination of the above. A computer processing device may include one or more processors, which may include special purpose logic circuitry, for example, an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit), a central processing unit (CPU), a multi-core processor, etc. In addition to hardware, an apparatus may also include code that creates an execution environment for the computer program in question, for example, code that constitutes a processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or one or more combinations thereof. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0057] A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, declarative, procedural, or functional languages, and it may be deployed in any form, including as a stand-alone program or as modules, components, subroutines, objects, or other units suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language resource), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program may be deployed to run on one computer or multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.

[0058] The processes and logic flows described in this disclosure may be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows may also be performed by, and apparatus may be so implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

[0059] Processors suitable for executing computer programs include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor receives instructions and data from a read-only memory, a random access memory, or both. The most important elements of a computer are a processor for performing actions according to instructions, and one or more memory devices for storing instructions and data. Generally, a computer also includes or is operatively connected to one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, optical disks, slit-state drives, etc., for receiving data from or transferring data to or from the mass storage devices, or both. However, a computer need not have such devices. Furthermore, a computer can be incorporated in other devices, such as a smartphone, a portable audio or media player, a game console, a global positioning system (GPS) receiver, or a portable storage device, such as a universal serial bus (USB) flash drive, to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, by way of example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0060] To provide for interaction with a user, embodiments of the subject matter described herein may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, etc., for displaying information to a user, and a keyboard and pointing device, such as a mouse, trackball, touch pad, stylus, etc., by which a user can provide input to the computer. Other types of devices may also be used to provide for interaction with a user, for example, feedback provided to a user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from a user may be received in any form, including acoustic, speech, or tactile input. Additionally, a computer may interact with a user by sending resources to devices used by the user and receiving resources from the user, for example, by sending a web page to a web browser on the user's client device in response to a request received from the web browser.

[0061] An embodiment of the subject matter described in this disclosure can be implemented in a computing system that includes a back-end component, e.g., as a data server, a middleware component, e.g., as an application server, or a front-end component, e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described herein, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the Internet), peer-to-peer networks (e.g., ad-hoc peer-to-peer networks), and the like.

[0062] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communications network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server sends data (e.g., HTML pages) to a client device (e.g., for the purposes of displaying the data to a user interacting with the client device and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., results of user interaction) can be received from the client device at the server.

[0063] One or more computer systems may be configured to perform particular operations or actions by having software, firmware, hardware, or a combination thereof installed on the system that, during operation, causes the system to perform the actions. One or more computer programs may be configured to perform particular operations or actions by including instructions that, when executed by a data processing device, cause the device to perform the actions.

[0064] References throughout this disclosure to "one embodiment" or "an embodiment" mean that a particular feature, structure, or characteristic described in connection with an embodiment may be included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" in various places throughout this specification are not necessarily all referring to the same embodiment. Further, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or."

[0065] Although the present disclosure includes many specific implementation details, these should not be construed as limitations on the scope of the claims of the present invention, but rather as descriptions of features specific to certain embodiments of a particular invention. Certain features described in the present disclosure in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, although features have been described above as acting in a particular combination, and are initially further claimed as such, one or more features from the claimed combinations can be deleted from the combinations in some cases, and the claimed combinations can be reassigned to subcombinations or variations of the subcombinations.

[0066] Similarly, although the figures depict acts in a particular order, this should not be understood as requiring such acts to be performed in the particular order shown, or sequentially, or to perform all of the acts depicted, to achieve desirable results. In certain situations, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and further, it should be understood that the program components and systems described may generally be integrated together in a single software product or packaged into multiple software products.

[0067] Thus, certain embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

[0068] The above description of the illustrated implementations of the invention is not intended to be exhaustive or to limit the invention to the exact form disclosed. Specific implementations and examples of the invention are described herein for illustrative purposes, however, various equivalent modifications are possible within the scope of the present disclosure, as those skilled in the relevant art will recognize. The words "embodiment" or "exemplary" are used herein to mean "serving as an example, instance, or illustration." Any aspect or design described herein as "embodiment" or "exemplary" should not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "embodiment" or "exemplary" is intended to present concepts in a specific manner. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless otherwise specified or clear from the context, "X includes A or B" is intended to mean any of the natural inclusive permutations. That is, if X includes A, or X includes B, or X includes both A and B, then "X includes A or B" is satisfied under any of the preceding examples. Furthermore, the articles "a" and "an" used in this application and the appended claims should generally be construed to mean "one or more" unless otherwise specified or clear from the context directed to the singular. Furthermore, use of the terms "embodiment" or "one embodiment" or "implementation" or "one implementation" throughout is not intended to refer to the same embodiment or implementation unless so described. Furthermore, the terms "first", "second", "third", "fourth", etc., used herein are meant as labels to distinguish different elements and may not necessarily have a sequential meaning according to their numerical designations.

Claims

1. 1. A method comprising: receiving first interaction data characterizing a first interaction between a user and a mobile device configured to operate an application client; determining a plurality of segments of users of the application client, each of the plurality of segments being associated with one or more settings characterizing operating parameters of the application client; assigning the user to a first segment based on a correspondence between a characteristic of the user and a characteristic associated with the first segment of the determined plurality of segments; modifying the application client based on the one or more settings associated with the first segment; and providing the modified application client for interaction by the user via the mobile device.

2. receiving second interaction data characterizing a second interaction between the user and the mobile device; assigning the user to a second segment of the plurality of segments based on the received second interaction data; modifying the modified application client based on the one or more settings associated with the second segment; The method of claim 1 , further comprising: providing the further modified application client for interaction by the user via the mobile device.

3. receiving characteristic data characterizing a population of one or more users of the application client; The method of claim 1 , further comprising: modifying one or more of the plurality of segments based on the received characteristic data.

4. The method of claim 3 , wherein the characteristic data characterizes attributes, the attributes characterizing one or more behaviors of the population.

5. The method of claim 4 , wherein the characteristic data characterizes a criterion, the criterion characterizing a comparison between the attribute and a predetermined threshold, the predetermined threshold being based on a type of the attribute.

6. determining a plurality of user identities for use with the application client; associating one or more of the plurality of segments with each of the determined plurality of user identities; receiving an indication that a new user has installed the application client on the new user's mobile device and has begun interacting with the application client; in response to said instruction, assigning one of said plurality of user identities to said new user; assigning the user to the one or more of the plurality of segments associated with the user identity assigned to the new user; The method of claim 1 , wherein the modified application client is based on the one or more settings associated with the one or more of the plurality of segments assigned to the new user.

7. 7. The method of claim 6, wherein the determining of the plurality of user identities and the association of the one or more of the plurality of segments to each of the determined plurality of user identities occurs prior to the receiving of the first interaction data.

8. The method of claim 1 , wherein the modifying the application client comprises modifying a graphical display of the application client.

9. The method of claim 1 , wherein each of the plurality of segments includes a priority classification, and the user is assigned to the first segment based on the priority classification.

10. said providing said further modified application client further comprising: determining a push notification that characterizes the further modified application client; and The method of claim 2 , comprising causing the push notification to be sent to the mobile device of the user such that the mobile device is configured to operate the further modified application client.

11. 1. A system comprising: at least one data processor; and a memory storing instructions that, when executed by the at least one data processor, cause the at least one data processor to: receiving first interaction data characterizing a first interaction between a user and a mobile device configured to operate an application client; determining a plurality of segments of users of the application client, each of the plurality of segments being associated with one or more settings characterizing operating parameters of the application client; assigning the user to a first segment based on a correspondence between a characteristic of the user and a characteristic associated with the first segment of the determined plurality of segments; modifying the application client based on the one or more settings associated with the first segment; providing the modified application client for interaction by the user via the mobile device.

12. The operation, receiving second interaction data characterizing a second interaction between the user and the mobile device; assigning the user to a second segment of the plurality of segments based on the received second interaction data; modifying the modified application client based on the one or more settings associated with the second segment; The system of claim 11 , further comprising: providing the further modified application client for interaction by the user via the mobile device.

13. The operation, receiving characteristic data characterizing a population of one or more users of the application client; The system of claim 11 , further comprising: modifying one or more of the plurality of segments based on the received characteristic data.

14. The system of claim 13 , wherein the characteristic data characterizes attributes, the attributes characterizing one or more behaviors of the population.

15. The system of claim 14 , wherein the characteristic data characterizes a criterion, the criterion characterizing a comparison between the attribute and a predetermined threshold, the predetermined threshold being based on a type of the attribute.

16. The operation, determining a plurality of user identities for use with the application client; associating one or more of the plurality of segments with each of the determined plurality of user identities; receiving an indication that a new user has installed the application client on the new user's mobile device and has begun interacting with the application client; in response to said instruction, assigning one of said plurality of user identities to said new user; assigning the user to the one or more of the plurality of segments associated with the user identity assigned to the new user; The system of claim 11 , wherein the modified application client is based on the one or more settings associated with the one or more of the plurality of segments assigned to the new user.

17. 17. The system of claim 16, wherein the determining of the plurality of user identities and the association of the one or more of the plurality of segments to each of the determined plurality of user identities occurs prior to the receiving of the first interaction data.

18. The system of claim 11 , wherein the modifying the application client comprises modifying a graphical display of the application client.

19. The system of claim 11 , wherein each of the plurality of segments includes a priority classification, and the user is assigned to the first segment based on the priority classification.

20. A non-transitory computer program product storing executable instructions, said executable instructions, when executed by at least one data processor forming part of at least one computing system, receiving first interaction data characterizing a first interaction between a user and a mobile device configured to operate an application client; determining a plurality of segments of users of the application client, each of the plurality of segments being associated with one or more settings characterizing operating parameters of the application client; assigning the user to a first segment based on a correspondence between a characteristic of the user and a characteristic associated with the first segment of the determined plurality of segments; modifying the application client based on the one or more settings associated with the first segment; providing the modified application client for interaction by the user via the mobile device.