Client-side Device Bloom Filter Mapping

Bloom filters enable secure and efficient targeted messaging on client devices without transmitting personal information, addressing the challenge of restricted PI transmission and maintaining service viability.

JP7711188B2Active Publication Date: 2025-07-22LIVERAMP
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023523072
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-16
Filing Date
2021-10-12
Publication Date
2025-07-22
Estimated Expiration
2041-10-12

AI Technical Summary

Technical Problem

Conventional targeted messaging systems require personal information (PI) from user devices to be transmitted to remote servers, which is problematic when operating system policies restrict this transmission, threatening the economic viability of services and apps that rely on targeted messaging.

Method used

A system and method using Bloom filters to map targeted messages on client devices without transmitting PI, enabling efficient and secure message targeting by creating Bloom filters from data about message senders, which are mapped to specific app bundle identifiers for targeted downloading, and performing matching locally on the client device.

Benefits of technology

Ensures user privacy by keeping PI on the client device, reduces bandwidth and storage requirements, and maintains the economic viability of services and apps by allowing targeted messaging without PI transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007711188000002
    Figure 0007711188000002
  • Figure 0007711188000003
    Figure 0007711188000003
  • Figure 0007711188000004
    Figure 0007711188000004
Patent Text Reader

Abstract

Targeted messages are sent from the server to the client device via an app installed on the client device but operating without transmitting personal data from the client device to a remote device. A Bloom filter is created from data about the target audience and loaded into the app. User login is resolved against the Bloom filter to target messages based on the user identifier. In this way, the processing to deliver the targeted messages is performed on the client device, not a remote device, and therefore personal information does not leave the client device. Real-time view-through and click-through measurement is performed by triggering conversion events to the integrated mobile network.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63 / 092,990, filed October 16, 2021, which is hereby incorporated by reference in its entirety.

[0002] The field of the invention is to perform mapping on a client device to enable targeted messaging to the client device without transmitting personal information about the user of the client device from that device.

Background Art

[0003] Conventional targeted messaging requires personal information (PI) from the user to be transmitted from the user's electronic device (computer, smartphone, tablet, etc.) to a server that is in remote communication with this client device. This remote device can be operated by a person who wants to send a targeted message, or a supply-side platform (SSP), demand-side platform (DSP), or other network that provides services to a person who wants to send a targeted message. Often, the means by which information is transmitted from the user's electronic device is a software development kit (SDK), a software application installed on the device, or a library bundled with a "mobile application" or "app".

[0004] Ultimately, the parties issuing and maintaining the operating system of an electronic device control the ability of any app to send PI from the user's electronic device to any remote device. For example, Apple Computer issues the iOS operating system used in the company's iPhone® smartphones and iPad® tablet devices, and Microsoft Corporation issues the Windows operating system used in a number of personal computers. If these companies or other operating system providers modify their operating systems or operating system policies in a way that limits the ability of apps to send PI from client devices on which the operating system is installed to remote devices, apps that rely on this ability will cease to function properly and will also cease to function to provide targeted messages to the user's electronic device where the user can view them.

[0005] A very large number of services available through the World Wide Web and a very large number of apps that interact through the Internet are provided to users for free. The funds for providing these services and apps are obtained from parties who want to send targeted messages, and thus, the business models of these services and apps depend on the ability to deliver targeted messages to users of electronic devices. Without the ability to send targeted messages, many of these services and apps that users rely on will become economically infeasible due to loss of revenue and will thus disappear. Accordingly, users of these electronic devices will suffer the disadvantage of losing the services and apps they are currently enjoying. Similarly, messages will still appear, but those messages will no longer be targeted and will thus be less interesting to users than targeted messages directed at client devices. For the same reason, these messages will be of less value to those who have purchased the right to distribute them, and thus the quality and quantity of such apps will decline.

[0006] The inventor has recognized that when an operating system restricts the transmission of PI from a user electronic device to a remote device, it is desirable to develop a system and method for providing targeted messages that do not require the transmission of PI from the user electronic device to the remote device. However, in order to avoid the problems discussed above without transmitting PI from the client device, there must be some means by which the targeting of messages can be done.

[0007] The references described in this background art section are not admitted to be prior art with respect to the present invention.

SUMMARY OF THE INVENTION

MEANS FOR SOLVING THE PROBLEM

[0008] The present invention is directed to a system and method for providing targeted messages from a remote electronic device to a user electronic device (i.e., a client device) via an app installed on the client device, without sending the PI from the client device to the remote device. In certain implementations of the present invention, a set of Bloom filters is created from data about the person who wants to send the targeted message. In certain embodiments, these can be mapped to specific app bundle identifiers for efficient, targeted downloading to a group of user devices. A Bloom filter is a very space - efficient data structure such that reasonable bandwidth and storage limitations for sending data to the app on the client device can be met. A user login / matched identifier can be resolved against the set of Bloom filters for the targeted message based on the user identifier. In this way, the process for delivering targeted messages based on matching PIs is executed on the client device rather than on the remote device. Since the process is executed locally on the client device, the PI does not need to leave the client device when all matching against the PI is done locally. In certain implementations, real - time view - through and click - through measurements can be performed by initiating conversion events to an integrated mobile network, thereby analyzing the effectiveness of targeted messaging without providing the PI to the remote device.

[0009] Certain implementations of the invention described herein provide several advantages. First, since the PI never leaves the client device, the privacy of the user of the client device is never put at risk. Thus, there is no PI transmitted over the communication network or stored on the remote device, and the user need not rely on security measures maintained during communication with the remote device or worry about data leakage on the remote device. Second, the use of a very efficient Bloom filter, rather than providing a separate set for every conceivable app, and the use of specific app bundle identifiers greatly limit the bandwidth and storage requirements of the present approach, making them practical for smartphones and similar devices operating with limited storage and bandwidth. Third, even if the transmission of PI to the remote device is no longer facilitated by the applicable operating system, these implementations of the invention provide the ability for those who wish to continue to do so to send targeted messages, thus maintaining the economic viability of free services and apps to the user.

[0010] These and other features, objects, and advantages of the invention will be better understood from the following detailed description of the preferred embodiments in conjunction with the drawings described below.

Brief Description of the Drawings

[0011]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

[0012] Before explaining the present invention in more detail, it should be understood that the scope of the present invention is limited only by the claims in the subsequent non-provisional patent application, so the present invention is not limited to the specific embodiments described in any section of this specification, and the terms used in the description of the specific embodiments are for the purpose of simply describing those specific embodiments and are not intended to be limiting.

[0013] Generally speaking, there are constraints on how much data can be pushed from a remote device to a single client device or to a specific app on a client device. These restrictions can be enforced by the operating system or by individual apps. Thus, in order to minimize the data delivered to a specific app or client device, certain implementations of the present invention use a preliminary step that enables "matchmaking" between app publishers and those who want to provide targeted messages to the users of their apps. In one example, those who want to deliver targeted messages may be given the option of selecting an app bundle (i.e., a specific group of apps) that they believe will have a high overlap with their desired messaging audience. This overlap can be smoothed by past exposure / attribute information. In some cases, one operating system can be used as a proxy for another, for example, data from the Android™ operating system used on a number of non-Apple smartphones can be used as a proxy for iOS overlap regarding Apple-branded smartphones based on the data available through that operating system. In certain implementations, a single group can be created for multiple apps from the same purchaser that exist on the same device, which opens up the possibility of shared storage for multiple apps, further reducing storage and bandwidth requirements when a particular client device has installed those multiple apps. This is common since app developers often issue multiple apps that are intended to complement each other.

[0014] To facilitate this matchmaking, those who wish to deliver targeted messages may be presented with a web-based display 10 as shown in FIG. 1 from a server maintained by a DSP or other network. The display may be understood to classify into various groups of apps based on categories 12, such as "Fashion and Lifestyle," "Entertainment and Arts," and "News and Current Events." Options are presented to the viewer based on the category, along with segment and price information 14. The viewer (e.g., marketer or brand owner) then makes a viewer selection via a graphical user interface in the display 10.

[0015] The core of viewer-based message targeting is to determine whether an impression is of interest to the party who wishes to send a targeted message, based on the available impressions. In other words, whether the users who are to receive the targeted message are a member of a set. Thus, a Bloom filter created from identifiers from the target users can be used to examine the identifiers from a particular user to determine set membership. A Bloom filter is a data structure that enables a search to determine whether a given element is in a state. The downside of a Bloom filter is that it is a probabilistic data structure, and thus, while a Bloom filter can determine whether an element is definitely not in the set or may be in the set, a Bloom filter cannot determine with 100% certainty that an element is actually in the set. An example of a Bloom filter and a search for a particular name in the Bloom filter is shown in FIG. 2.

[0016] As shown in FIG. 2, the basic structure of a Bloom filter is a bit vector or table 20. Each empty cell in table 20 represents a bit and is associated with an index. To add an element to the Bloom filter, such as filter input 22, it is hashed and the bits are set within bit vector 20 at the indices of those hashes to 1. When a string is added, the bits at the indices given by the hash are set to 1. Then, to check the membership of filter query 24 in the bit vector, the string is hashed with the same hash function and then it is determined whether their values are set in bit vector 20. If those bits are not set, then it can be surely known that element 24 is not in the set. However, if those bits are set, then it can only be known that element 24 may be in the set because another element may have set the same bits. This structure does it by sacrificing certainty about the likelihood that the desired data is surely in the set, but it is understood that this structure requires far less storage space than a conventional data structure that stores all of the relevant data completely.

[0017] The false positive rate of a Bloom filter can be corrected by increasing the size of the data structure, and thus the use of Bloom filters allows the implementations described herein to be adjusted in a way that maximizes accuracy within a given limitation of the storage space available for an app or client device. The false positive rate of a Bloom filter is approximately (1 - e -kn / m ) k where k is the number of hashing functions used, m is the number of bits of the Bloom filter, and n is the number of elements expected to be inserted into the filter. Thus, given specific values of m and n, the formula for optimizing the number of hashing functions (i.e., the value of k) is k = (m / n) ln(2).

[0018] Since the remote resolution service for identifiers is not available in this application, conventional identifiers or server-side secret salts cannot be used. Nevertheless, it is likely that data such as email addresses or phone numbers, which are available to the app publisher, exist. Therefore, the Bloom filter can use data such as email addresses, phone numbers, or both. However, since such data elements are PIs, management is performed to prevent disclosure of these inputs. PI items are encrypted by being hashed (e.g., using the SHA256 algorithm) and salted. The salt is separated from other salts to protect other workflows from inadvertent disclosure. In a mobile environment (i.e., when the client device is a smartphone and similar devices), the salt is stored as a server-side secret. The secret can be obtained from the device via a secure (SSL / TLS) connection that utilizes a PIN-locked certificate on the device. As long as the device is not jailbroken and rooted, it will be impossible to intercept any of the traffic. The server-side secret salt can protect the underlying data and can be rotated and / or associated with specific audiences regularly. In certain implementations, the PI items may be the subject of multiple hashes using different algorithms, e.g., an SHA1 / SHA256 / MD5 hash triplet. This will increase the reliability of the match (reduce the false positive rate), but will also increase the size of the Bloom filter data structure.

[0019] To support attributes, the tokens resulting from the hash encryption process can be prefixed with a group identifier (or otherwise identified or associated). This is an indication of a small but unidentifiable set of users (e.g., about 100) that can be incorporated into the conversion signal later.

[0020] When a party attempting to send a targeting message provides a list of identifiers that the party wants to target in that message, then conventional ID resolution can be used to find the internal linkages of the DSP itself for those users. The DSP typically maintains consumer, household, or company links or identifiers so that the DSP can unambiguously resolve the IDs of individuals within these groups. For example, this enables the DSP to unambiguously resolve different people with the same name or to appropriately identify a person who has changed their name (e.g., as a result of marriage) as a single person despite two different known names. One such ID resolution system is the AbiliTec service provided by LiveRamp, Inc. of San Francisco, California. After this resolution is complete, an append / enrichment step can be performed to associate all available plain text identifiers with the linkages. Finally, the plain text identifiers can be tokenized / encrypted and used to create the corresponding Bloom filter. A diagram showing this process is shown in FIG. 3, and the process uses LiveRamp technology in this example.

[0021] Starting with customer relationship management (CRM) viewer data 30, this input is provided to a resolution provider 32. In a resolution step 34, the CRM viewer data 30 is used to resolve members of the viewer to specific links. These are then mapped in an append step 36 to a hashed email, a hashed phone number, or both, and appended to a data structure. The data structure is then anonymized in a tokenization step 38. The resulting data is then used in a model step 40 to create an actual Bloom filter. In a launch step 42, the Bloom filter is distributed to partners for use in various apps. These will then ultimately be distributed to a user electronic device 44 when the app is downloaded by the user.

[0022] To accept the Bloom filter created as such, each app first configures the amount of storage allocated for targeted message processing and communicates the availability of this space to the server. In the time series example of Figure 4, at time 50, the app communicates back to the server that it has 10MB of free space. At time 52, the server then matches the app bundle to the Bloom filter created as described above and sets the time-to-live in the Bloom filter. In this example, the created Bloom filter has a size of 2.1MB and is considered "good" until January 1, 2021. The app then attempts to download the bundle at time 54 when convenient, for example, when connected to Wi-Fi and the client device is plugged into an external power source. This can be scheduled at night to minimize the degradation of the user experience associated with a loss of performance on the client device at this time, as shown, for example, at time 56. The filter itself is downloaded into the available partitioned storage within the app or application bundle. On iOS, for example, apps and their SDKs will have made reservations regarding the loading of large amounts of data, such as data conventionally stored on network servers. Thus, in certain implementations, campaigns will "bid" with a particular guaranteed dollar amount (PG) of the publisher to prioritize only the most valuable viewers at a given moment. Finally, at time 58, the Bloom filter has expired according to its own end date and is removed from the app.

[0023] In one particular implementation shown in Figure 4, the gzip file format can be used for compression. The zipped Bloom filter containing the desired viewer segment can be constructed as shown in Table 1 below, with the compression ratio between the raw data and the resulting Bloom filter shown in the rightmost column:

Table 1

[0024] Referring now to FIG. 5, the processing that occurs in the application for the use of the Bloom filter can be described. An issuer that holds a PI such as an email address or phone number 59 will pass it to a function in the tokenization routine 60 to create a token. This token can be queried against a set 62 of Bloom filters. As already described, the Bloom filter will return this via an ad request 64 to the ad exchange 66, giving a probabilistic result as to whether the user is within the set within some confidence interval. The ad exchange 66 communicates with the DSP 68. For example, in certain implementations, the Bloom filter can determine with 99.9% confidence that the user is within the set. Also as previously described, this interval can be adjusted according to storage and accuracy needs. If the user matches, the SDK will flag the ad request 64 with a predefined transaction identifier corresponding to that particular message viewer. Otherwise, the auction will proceed without it. Those DSPs 68 attempting to send targeted messages will know with a high degree of confidence whether their transaction identifiers are included in the bid request and that the desired user is associated with the client device, but the PI is not sent outside the device to make this determination. To prevent attempts to enumerate all members of the set and thereby circumvent the essential privacy of this system, in certain implementations, the call to the Bloom filter can be placed after a speed limiter to make it infeasible to "break" the filter by this type of brute force attack.

[0025] The post-delivery attributes can be described with respect to FIG. 6. After the delivery of targeted messaging with matching on the device, the user attributes are essentially restricted. Nevertheless, the recording level events can be further supported in real time in certain implementations of the present invention. The system cannot send the user identifier or proxy to the remote device. However, when the user responds by being provided with a targeted message 80 and, for example, clicking on an appropriate area within the display provided by the app publisher or simply viewing the displayed message 80, then a conversion event 82 is initiated to the SDK server for the message 80. That conversion event 82 cannot include user identification information, but can include other ways of imparting knowledge in relation to this. In certain examples, this information can include group identifiers, bundle identifiers, transaction identifiers, timestamps, and creative units related to targeted messaging, as described above with respect to tokenization. Subject to the PI not being sent to the remote device and the user's ID not being reasonably confirmable through the inclusion of these additional attributes, other types of information can be used in alternative implementations. By enabling real-time reporting, those involved in requesting the delivery of targeted messages can better map both "active" and "passive" events related to conversion at the group level, if not at the individual level. Such information can be stored for subsequent analysis in the database 84.

[0026] In the implementations described herein, and in various alternative implementations, the present invention may be implemented by any combination of hardware and software. For example, in one embodiment, the system and method may be implemented by a computer system or a collection of computer systems, each including one or more processors that execute program instructions stored on a computer-readable storage medium coupled to the processor. The program instructions may implement the functionality described herein. The various systems and displays shown in the figures and described herein represent exemplary implementations. The order of any method may be changed, and various elements may be added, modified, or omitted.

[0027] The computing system or computing device described herein may implement the hardware portion of a cloud computing system or a non-cloud computing system as part of various implementations of the present invention. The computer system may be any of a variety of types of devices including, but not limited to, a commodity server, a personal computer system, a desktop computer, a laptop or notebook computer, a mainframe computer system, a handheld computer, a workstation, a network computer, a consumer device, an application server, a storage device, a telephone, a mobile phone, or generally any type of computing node, computing node, computing device, and / or computing device. The computing system includes one or more processors (any of which may include multiple processing cores and may be single or multi-threaded) coupled to system memory via an input / output (I / O) interface. The computer system may further include a network interface coupled to the I / O interface.

[0028] In various embodiments, the computer system may be a single-processor system that includes one processor or a multi-processor system that includes multiple processors. The processor may be any suitable processor having the ability to execute computing instructions. For example, in various embodiments, the processor may be a general-purpose or embedded processor that implements any of a variety of instruction set architectures. In a multi-processor system, each of the processors may generally, but not necessarily, implement the same instruction set. The computer system may also include one or more network communication devices (e.g., network interface) for communicating with other systems and / or components via a communication network, such as a local area network, a wide area network, or the Internet. For example, a client application running on a computing device may use the network interface to communicate with a server application running on a single server or a cluster of servers that implement one or more of the components of the system described herein in a cloud computing or non-cloud computing environment as implemented in various subsystems. In another example, an instance of a server application running on a computer system may use the network interface to communicate with other instances of applications that may be implemented on other computer systems.

[0029] The computing device also includes one or more persistent storage devices and / or one or more I / O devices. In various embodiments, the persistent storage device may correspond to a disk drive, a tape drive, a solid state memory, other mass storage devices, or any other persistent storage device. A computer system (or a distributed application or operating system operating thereon) can store instructions and / or data in the persistent storage device as desired and can retrieve the stored instructions and / or data as needed. For example, in some embodiments, the computer system can implement one or more nodes of a control plane or a control system, and the persistent storage can include an SSD attached to the server node. Multiple computer systems can share the same persistent storage device or can share a pool of persistent storage devices, and the devices in the pool represent the same or different storage technologies.

[0030] A computer system includes one or more system memories that can store code / instructions and data accessible by a processor. The system memory can include, for example, multiple levels of memory and memory caches within the system designed to swap information within the memory based on access speed. Interleaving and swapping can extend to persistent storage in virtual memory implementations. Technologies for implementing memory can include, by way of example, static random access memory (RAM), dynamic RAM, read only memory (ROM), non-volatile memory, or flash type memory. Similar to persistent storage, multiple computer systems can share the same system memory or can share a pool of system memory. One or more system memories can include program instructions executable by the processor to implement the routines described herein. In various embodiments, the program instructions can be encoded in binary, assembly language, any interpreted type language such as Java™, a compiled type language such as C / C++, or any combination thereof, and the specific languages shown herein are merely examples. In some embodiments, the program instructions can implement multiple separate clients, server nodes, and / or other components.

[0031] In some implementations, the program instructions can include instructions executable to implement an operating system (not shown), which can be any of various operating systems, such as UNIX (registered trademark), LINUX, Solaris (trademark), MacOS (trademark), or Microsoft Windows (registered trademark) (trademark). Any or all of the program instructions can be provided as a computer program product or software that can include a non-transitory computer-readable storage medium storing the instructions, which can be used to program a computer system (or other electronic device) to execute processes according to various implementations. The non-transitory computer-readable storage medium can include any mechanism for storing information in a form readable by a machine (e.g., a computer), such as software, a processing application. Generally speaking, the non-transitory computer-accessible medium can include computer-readable storage media or memory media, such as magnetic or optical media, e.g., a disk or a DVD / CD-ROM coupled to the computer system via an I / O interface. The non-transitory computer-readable storage medium can also include any volatile or non-volatile media, such as RAM or ROM, that can be included in some examples of the computer system as system memory or another type of memory. In other implementations, the program instructions can be communicated using optical, acoustic, or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.) that are conveyed via a communication medium such as a network and / or a wired or wireless link, which can be implemented, for example, via a network interface. The network interface can be used to interface with other devices, which can include other computer systems or any type of external electronic device.Generally, system memory, persistent storage, and / or remote storage accessible by other devices via a network can store data blocks, replicas of data blocks, metadata associated with data blocks and / or their states, database configuration information, and / or any other information that can be used in implementing the routines described herein.

[0032] In certain implementations, the I / O interface can regulate I / O traffic between a processor, system memory, and any peripheral devices within the system, including those via a network interface or other peripheral interface. In some examples, the I / O interface can perform any necessary protocol, timing, or other data media conversions to transform data signals from one component (e.g., system memory) into a format suitable for use by another component (e.g., a processor). In some examples, the I / O interface can include support for devices attached via various types of peripheral buses, such as variants of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard. Also, in some examples, some or all of the functionality of the I / O interface, such as the interface to system memory, can be incorporated directly into the processor.

[0033] A network interface can enable data to be exchanged between a computer system attached to a network and other devices, such as other computer systems (which may implement one or more storage system server nodes, primary nodes, read-only nodes, and / or clients of the database systems described herein), and the like. Additionally, an I / O interface can enable communication between a computer system and various I / O devices and / or remote storage. In some embodiments, the input / output devices may include one or more display terminals, keyboards, keypads, touch pads, scanning devices, voice or optical recognition devices, or any other device suitable for inputting or acquiring data by one or more computer systems. These can be directly connected to a particular computer system or, generally, can be connected to multiple computer systems in a cloud computing environment, a grid computing environment, or other systems including multiple computer systems. Multiple input / output devices may be included in communication with a computer system or may be distributed among various nodes of a distributed system including the computer system. The user interface described herein may be visible to a user using various types of display screens, which may include CRT displays, LCD displays, LED displays, and other display technologies. In some implementations, input may be received via a display using touch screen technology, and in other implementations, input may be received via a keyboard, mouse, touch pad, or other input technology, or any combination of these technologies.

[0034] In some embodiments, similar input / output devices may be separated from the computer system and may interact with one or more nodes of a distributed system that includes the computer system via a wired or wireless connection, e.g., via a network interface. The network interface may generally support one or more wireless networking protocols (e.g., Wi-Fi / IEEE 802.11, or another wireless networking standard). The network interface may support communication via any suitable wired or wireless general data network, such as, for example, other types of Ethernet® networks. In addition, the network interface may support communication via a telecommunications / telephony network, such as an analog voice network or a digital fiber communications network, via a storage area network such as a fiber channel SAN, or via any other suitable type of network and / or protocol.

[0035] Any of the distributed system embodiments described herein, or any of their components, may be implemented as one or more network-based services in a cloud computing environment. For example, read / write nodes and / or read-only nodes within the database layer of a database system may present a database service and / or other type of data storage service that uses the distributed storage system described herein to a client as a network-based service. In some embodiments, the network-based service may be implemented by software and / or a hardware system designed to support machine-to-machine interactions that are interoperable over a network. A web service may have an interface described in a machine-processable format, such as the Web Services Description Language (WSDL). Other systems may be able to interact with the network-based service in a manner defined by the description of the interface of the network-based service. For example, the network-based service may define various operations that other systems can call, and may define a specific application programming interface (API) that other systems are expected to conform to when requesting the various operations.

[0036] In various embodiments, a network-based service may be requested or invoked through the use of messages that include parameters and / or data related to the network-based service request. Such messages may be formatted according to a specific markup language such as Extensible Markup Language (XML) and / or encapsulated using a protocol such as Simple Object Access Protocol (SOAP). To execute a network-based service request, a network-based service client can assemble a message that includes the request and carry the message to an addressable endpoint corresponding to the web service (e.g., a Uniform Resource Locator (URL)) using an Internet-based application layer transfer protocol such as the Hypertext Transfer Protocol (HTTP). In some embodiments, a network-based service may be implemented using Representational State Transfer (REST) techniques rather than message-based techniques. For example, a network-based service implemented according to REST techniques may be invoked via parameters included in HTTP methods such as PUT, GET, or DELETE.

[0037] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Any methods and materials similar or equivalent to those described herein can be used in the practice or testing of the present invention, but only a limited number of exemplary methods and materials are described herein. It will be apparent to those skilled in the art that many more modifications are possible without departing from the concept of the invention described herein.

[0038] All terms used in this specification should be interpreted in the broadest possible way consistent with the context. When a group is used in this specification, all individual members of that group as well as all possible combinations and sub - combinations of that group are intended to be individually included. When a range is stated in this specification, the range is intended to include all sub - ranges and individual points within the range. All references cited in this specification are incorporated herein by reference, unless there is a conflict with the disclosure of this specification.

Claims

1. A system for client - side mapping, comprising: A data storage device storing a plurality of app bundles, each app bundle being associated with a different one of a plurality of categories of targeted content; a data storage device; At least one data service processor coupled to at least one data service memory storing a sequence of instructions, the instructions, when executed, Using a hashing algorithm to encrypt a plurality of personal information items that form a set of personal information items; Constructing a Bloom filter including the bit vector including a plurality of bits in which bits are set within the bit vector at an index corresponding to each encrypted personal information item; Based on the campaign period, determining a time - to - live parameter for the Bloom filter; Receiving a notification of the storage capacity indicating available storage within a predetermined storage estimate allocated for processing targeted messages in the app bundle; Determining that the available storage is sufficient to store the Bloom filter; and Monitoring a connection state and a power state Causing the at least one data service processor to perform; at least one data service processor; A communication network electronically linked to the data service processor; A client device electronically linked to the communication network Wherein the client device comprises a display, an app data storage area, and at least one client processor coupled to at least one client memory storing a sequence of instructions, the instructions, when executed, During a period when the client device is connected to the communication network and connected to an external power source, receiving the Bloom filter from the data service processor across the communication network; Storing the Bloom filter in the app data storage area; Hashing the client-side items of personal information according to the hashing algorithm to produce a token including the locally hashed items of personal information; Searching the bit vector of the Bloom filter to determine whether hits occur at the bits in the bit vector of the token; When hits occur at the bits in the bit vector of the token, setting a targeted message on the display, and when no hits occur at the bits in the bit vector of the locally hashed items of personal information, not setting a targeted message on the display; and Automatically deleting the Bloom filter from the application data storage area according to the expiration of the time-to-live parameter A system for causing the client processor to execute.

2. The system according to claim 1, wherein at least one of the plurality of application bundles includes a plurality of applications developed by a common issuer.

3. The system according to claim 1, wherein each of the plurality of personal information items is a telephone number or an email address.

4. When the sequence of instructions in the client memory is executed, further causing the at least one client device processor to graphically generate a prompt on the display for the user to input the client-side items of personal information. The system according to claim 1.

5. When the sequence of instructions in the client memory is executed, further causing the at least one client device processor to add a group identifier related to the locally hashed items of personal information to the token. The system according to claim 1.

6. The system according to claim 5, wherein each group identifier is derived from a set of group identifiers, and each group identifier in the set of group identifiers is uniquely related to a user group.

7. When the sequence of instructions in the data service memory is executed, it further causes the at least one data service processor to receive a set of target identifiers from a messaging server that is operated by a person who intends to send a targeted message in the data service provider, perform ID resolution on the set of target identifiers to create a set of links, and each of the links is uniquely associated with a specific user in an ID resolution database that communicates with the at least one data service processor. The system according to claim 1.

8. A computerized method for client-side mapping, comprising: In a data service provider server, constructing a plurality of app bundles, each app bundle being associated with a different category among a plurality of categories of targeted content; In a data service provider server, encrypting a plurality of personally identifiable information items that form a set of personally identifiable information items using a hashing algorithm; Constructing a Bloom filter including the Bloom filter including a plurality of bits in which bits are set in a bit vector at an index corresponding to each encrypted personally identifiable information item; Determining a time-to-live parameter for the Bloom filter based on a campaign period; Receiving from the client device an indication of available storage within a predetermined storage estimate allocated for processing targeted messages in an app bundle on the client device; Determining that the available storage is sufficient to store the Bloom filter; Monitoring the state of the client device to identify when the client device is connected to both a communication network and an external power source; While the client device is connected to the communication network and to an external power source, pushing the Bloom filter from the data service provider server across the communication network to the client device and storing the Bloom filter in an application data storage area associated with the client's application bundle on the client device; Receiving client-side items of personal information from an application of the client's application bundle; Hashing the client-side items of personal information according to the hashing algorithm to produce a token including locally hashed items of personal information; Searching the bit vector of the Bloom filter to determine whether a hit occurs at bits within the bit vector of the token; If a hit occurs at bits within the bit vector of the token, setting a targeted message on the display of the client device using the application, and if no hit occurs at bits within the bit vector of the locally hashed items of personal information, not setting a targeted message on the display of the client device; Automatically deleting the Bloom filter from the application data storage area in response to expiration of the time-to-live parameter A method comprising.

9. The method according to claim 8, wherein at least one of the plurality of application bundles includes a plurality of applications developed by a common issuer.

10. The method according to claim 8, wherein each of the plurality of personal information items is a telephone number or an email address.

11. The method according to claim 8, wherein the step of receiving the client-side items of personal information from the application further includes graphically generating a prompt on the display of the client device for the user to input the client-side items of personal information.

12. The method according to claim 8, wherein the token further includes a group identifier associated with the locally hashed items of personal information.

13. The method according to claim 12, wherein each group identifier is derived from a set of group identifiers, and each group identifier of the set of group identifiers is uniquely associated with a user group.

14. The method according to claim 8, further comprising receiving a set of target identifiers from a messaging server operated by a party attempting to send a targeted message in the data service provider, and performing ID resolution on the set of target identifiers to create a set of links, each of the links being uniquely associated with a particular user within an ID resolution database communicating with the data service provider server.

Citation Information

Patent Citations

  • System and method for targeting broadcast messages

    JP2012529194A

  • Information processing device, terminal device, information processing method, and information processing program

    JP2016119123A

  • System, resource server, control method and program of system

    JP2018093407A

  • Program related information transmission device, program related information reception device, and program thereof

    JP2019120876A

  • Advertisement Selection Using Uncertain User Data

    US20160371729A1