Information processing using machine-readable codes

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for accessing, using an image capture device, a machine-readable code, the machine-readable code describing one or more rules that instruct a user device to determine whether the user satisfies one or more criteria; processing the machine-readable code to obtain the one or more rules; determining, based on the one or more obtained rules, that the user satisfies the one or more criteria; in response to determining, based on the one or more obtained rules, that the user satisfies the one or more criteria, displaying, on a display screen of the user device, data confirming that the user satisfies the one or more criteria.

BACKGROUND

This specification relates to selectively providing access to private information on a device in response to scanning a machine-readable code.

Machine-readable codes, e.g., bar codes or QR codes, can provide a visual representation of data that describes a product or service.

SUMMARY

Codes that describe addresses or Uniform Resource Locators (URLs) may appear in magazines, on billboard signs, or on almost any object about which users might need information. Users can interact with devices, e.g., mobile phones equipped with a camera, with a reader application to scan the code and, in response to scanning the code, be presented with text, contact information, or open a web page in the device's browser.

A first user operating a first user device can interact with a system to define one or more rules. The rules can be embedded in a machine-readable code, which, when scanned by a second user device, instruct the second user device to perform one or more actions, e.g., display certain types of information or perform various operations. For example, the rules can instruct the second user device to determine whether the second user pre-qualifies for a financial benefit, e.g., a credit card or loan. In another example, the rules can instruct the second user device to display, on a display screen of the second user device, relevant user information. The second user can present the displayed user information to a person or organization for authentication purposes, e.g., proving the user's identity or age, or to provide relevant personal information, e.g., providing proof of insurance. Once the rules have been defined, the system can generate a machine-readable code that encodes the defined rules.

The second user operating the second user device, e.g., a mobile device, can scan the generated machine-readable code, e.g., using a camera on a mobile device, for example, from a tangible surface, e.g., a wall, from the display screen of a different device, or magazine. In response to scanning the machine-readable code, software on the second user device can decode the machine-readable code to obtain the rules described by the machine-readable code. Once decoded, software on the second user device can process the rules to perform one or more actions that are described by the rules.

For example, the rules can instruct the second user device to determine whether the second user is qualified to enter an establishment that requires attendees to be at least of age 21, female, and a civil service employee. The second user device can access the second user's personal data that is stored on the second user device to determine whether the second user meets these requirements. In response to determining that the second user meets these requirements, the second user device can display, on a display of the second user device, that the second user is permitted to enter the establishment. Conversely, if the second user does not meet these requirements, e.g., if the second user is under age 21, then the second user device can display, on the display of the user device, that the second user is not permitted to enter the establishment.

As described in this specification, a user may need to be identified as “valid” before the user can scan codes. For example, to become “valid,” the user can be verified by the Social Security Administration and/or the Department of Motor Vehicle (DMV). Once verified, the user is issued a personalized account number that can be used to verify the user's identity to others. The personalized account number can reference an account that stores the user's personal information that has been collected from various sources, e.g., the Social Security Administration, DMV, financial institutions, etc. The account referenced by the personalized account number can be updated when the user's personal information is updated in the various sources.

For example, if the user purchases a new house, an authorized entity, e.g., the realtor, can provide the DMV with the user's new house address. The DMV can update the user's driver's license with the new house address. Once the DMV updates the user's driver's license, the user's account that is referenced by the user's personalized account number is also updated.

The user can control which entities have permission to access the account that is referenced by the user's personalized account number. For example, if a bank wants to open a savings account for the user, the bank needs to be “valid,” e.g., the bank has been verified by the Social Security Administration and/or the DMV and has been assigned a personalized account number. A bank representative can ask the user to scan a machine-readable code for opening the savings account. After scanning the machine-readable code, the user will be asked to allow the bank's representative to add the user's email address to receive an electronic monthly statement. The bank is authorized to email the user electronic monthly statements after the user approves the bank representative's request. If the bank ever decides to sell the user's email address to advertisers, the advertisers will not be able to email the user or view any of the user's personal information, since these advertisers have not been given permission by the user.

In general, one aspect of the subject matter described in this specification may be embodied in methods that involve accessing, using an image capture device, a machine-readable code, the machine-readable code describing one or more rules that instruct the user device to determine whether the user satisfies one or more criteria; processing the machine-readable code to obtain the one or more rules; determining, based on the one or more obtained rules, that the user satisfies the one or more criteria; and in response to determining, based on the one or more obtained rules, that the user satisfies the one or more criteria, displaying, on a display screen of the user device, data confirming that the user satisfies the one or more criteria.

These and other embodiments can each optionally include one or more of the following features. The one or more rules instruct the user device to determine whether the user satisfies an age requirement, and wherein determining, based on the one or more obtained rules, that the user satisfies the one or more criteria comprises determining, using the data storage system, whether the user satisfies the age requirement. The one or more rules instruct the user device to determine whether the user satisfies a credit history requirement, and wherein determining, based on the one or more obtained rules, that the user satisfies the one or more criteria comprises determining, using the data storage system, whether the user has a clean credit history and has a threshold credit score.

Processing the machine-readable code to obtain the one or more rules comprises decoding the machine-readable code to obtain data describing the one or more rules. Processing the machine-readable code to obtain the one or more rules comprises decoding the machine-readable code to obtain data describing a Uniform Resource Locator; accessing a machine-readable code system using the Uniform Resource Locator; and obtaining, from the machine-readable code system, data describing the one or more rules. The machine-readable code is an optically-readable label that describes data. The one or more rules are defined using various programming languages or Boolean expressions

In general, one aspect of the subject matter described in this specification may be embodied in methods that involve accessing, using an image capture device, a machine-readable code, the machine-readable code describing one or more rules that instruct the user device to display, on a display screen of the user device, information relating to the user; processing the machine-readable code to obtain the one or more rules; processing, using the data storage system, the one or more obtained rules that instruct the user device to display, on the display screen of the user device, information relating to the user; and in response to processing the one or more obtained rules that instruct the user device to display, on the display screen of the user device, information relating to the user, displaying, on the display screen of the user device, the information relating to the user.

These and other embodiments can each optionally include one or more of the following features. The one or more rules instruct the user device to display, on a display screen of the user device, information relating to the user's credit history and wherein displaying, on the display screen of the user device, the information relating to the user comprises displaying, on the display screen, the user's credit score. The one or more rules instruct the user device to display, on a display screen of the user device, information relating to the user's insurance information, medical history, travel passport information, family background information, information relating to a background check, or a security clearance status. The machine-readable code to obtain the one or more rules comprises: decoding the machine-readable code to obtain data describing the one or more rules. Processing the machine-readable code to obtain the one or more rules comprises: decoding the machine-readable code to obtain data describing a Uniform Resource Locator; accessing a machine-readable code system using the Uniform Resource Locator; and obtaining, from the machine-readable code system, data describing the one or more rules. The machine-readable code is an optically-readable label that describes data.

Particular embodiments of the subject matter described in this specification can be implemented so as to realize one or more of the following advantages. Users can provide access to private information on a device in response to scanning a machine-readable code.

DETAILED DESCRIPTION

FIG. 1illustrates an example machine-readable code processing system100used for generating and processing machine-readable codes. A system101, a user120interacting with a user device, e.g., a desktop or laptop computer, and a user130also interacting with a user device, are connected through a network114. Some examples of user devices include computers, tablets, mobile devices, e.g., cellular phones, smart watches equipped with a camera, and wearable device equipped a camera.

The system101can be implemented as, for example, computer programs running on one or more computers in one or more locations that are in communication with each other through a network. The network114may include, for example, a wireless cellular network, a wireless local area network (WLAN) or Wi-Fi network, a Third Generation (3G) or Fourth Generation (4G) mobile telecommunications network, a wired Ethernet network, a private network such as an intranet, a public network such as the Internet, or any appropriate combination thereof.

In general, the system101includes a rule generator104, a rule verifier106, and a machine-readable code generator108. The system101can also communicate with one or more databases, e.g., a rules database110and a machine-readable code database112, as described below. The system101can be used to generate machine-readable codes that, when scanned by a mobile device, can trigger one or more actions by the mobile device, as also described below.

The rule generator104is configured to present users with a graphical user interface (GUI) through which a user define rules that instruct devices to perform one or more actions. The rules can be used to generate machine-readable codes that describe the generated rules using the machine-readable code generator108, as described below.

The system101can store, in a rules database110, pre-defined rules that instruct devices to perform various actions. Users can interact with the GUI to select rules for use in generating a machine-readable code. For example, the pre-defined rules can include commonly performed actions including, for example, displaying a user's personal information, e.g., a user's name, age, date of birth, social security number, address, citizenship, or a combination thereof, on a display screen of a user device.

Other example pre-defined rules can instruct a user device to determine whether a user operating the user device satisfies one or more criteria. For example, a rule can specify that a user must be of a legal drinking age, e.g., age 21 or over, before being permitted to enter a particular establishment. Users can select one or more pre-defined rules from the rules database110to generate customized machine-readable codes for instructing user devices to perform specific actions.

The user120can interact with the GUI to select rules that are applicable. For example, if the user120is an owner of a bar, the user120may want to generate a machine-readable code that, when scanned by a user device, instructs the user device to display the user's age or that simply confirm that the user is of the legal drinking age. In such cases, the user120can select a pre-defined rule that instructs user devices to confirm that users meet a certain age requirement. Once the applicable rules are selected, the system101can generate a machine-readable code that describes the selected rules, as described below.

The user120can also interact with the GUI to input and/or define values for various parameters. The various parameters are used to define custom rules by, for example, using various programming languages and Boolean expressions. For example, assuming that the user120is an owner of a bar and wants to have a special event for female military veterans. In this example, the user120can interact with the GUI to define custom rules that confirm that a person satisfies an age of 21 or over, that the person is a female, and that the person is a military veteran. The system101can then generate a machine-readable code that describes these three rules.

In one example, the user120can print the generated machine-readable code and have it displayed at the entrance of the bar. In another example, the user120can display the generated machine-readable code on a display screen. When an individual enters the bar, the individual can interact with their user device to scan the displayed machine-readable code. In response to the scanning, the user device can determine, using the user's personal data that describes characteristics of the user, whether the individual satisfies these three requirements. A validation message indicating whether the individual satisfies these requirements can be displayed on a display screen of the user device. If the individual satisfies these requirements, the individual can gain entry into the bar, for example, by presenting the validation message to a person that authorizes entry into the bar.

In some implementations, the system101also includes a rule verifier106that is configured to validate rules selected or defined by users to confirm that such rules do not violate pre-defined rule policies. The pre-defined rule policies can be used to enforce the types of actions a machine-readable code can instruct a user device to perform based on the contextual usage of the machine-readable code.

For example, assuming that the user120, an owner of a bar, attempts to define a rule that instructs a user device to display a user's social security number. When attempting to generate a machine-readable code that describes this rule, the rule verifier106can determine that, based on one or more pre-defined rule policies, an individual does not need to display their social security number to gain entry into a bar. In response to this determination, the rule verifier106can prevent the user120from generating the machine-readable code and can display an error indicating that the rule violates one or more pre-defined rule policies.

In some implementations, a user can configure the user device to perform additional validation of rules to determine whether the rules violate a custom rule policy. For example, a user may scan a machine-readable code to determine whether the user qualifies for a medical insurance plan. The scanned machine-readable code may include a rule that determines, based on the user's medical history, whether the user has undergone one or more surgeries. If the user does not want the rule to access the user's surgery history, the user can define a custom rule policy that prohibits rules from accessing the user's surgery history.

The system101also includes a machine-readable code generator108that is configured to generate machine-readable codes that describe rules that are selected or defined by users. As used in this specification, a machine-readable code, e.g., a Quick Response or QR code, is an optically-readable label that represents data. For example, the machine-readable code can represent data that describes words, numbers, images, or Uniform Resource Locators (URLs). In some implementations, the data describes one or more rules that instruct a user device to perform one or more actions. Each machine-readable code can be, for example, a two-dimensional label that consists of black modules, e.g., square dots, arranged in a square grid on a white background. Machine-readable codes can be read by an imaging device, e.g., a camera on a mobile device, and processed, by the device, using software to decode the data that is described by the machine-readable codes.

In some implementations, the system101can interact with a machine-readable code database112that stores pre-generated machine-readable codes for use in various situations. Machine-readable codes can be pre-generated for situations that are commonly encountered in everyday society. In such implementations, users can access the pre-generated machine-readable codes to instruct user devices to perform various actions without having to select or define their own rules in advance, as described below in reference toFIG. 4. Some examples of pre-generated machine-readable codes include machine-readable codes that instruct a user device to confirm personal information, e.g., name, date of birth, address, etc., confirm an age requirement, provide credit history, provide insurance information, provide medical history, provide driver's license information, provide travel passport information, provide family background information, and provide information relating to a background check.

In such implementations, the user120can request, from the system101, pre-generated machine-readable codes for a particular purpose, as described below in reference toFIG. 4. For example, if the user120was involved in a car accident involving a user130, the user120can request, using a user device122and from the system101, a pre-generated machine-readable code that instructs a user device132to display insurance information for the user130. Once the obtained pre-generated machine-readable code is displayed on a display screen of the user device122, the user120can present the displayed machine-readable code to the user130.

The user130can interact with software on the user device132to scan, using their user device132, the machine-readable code being displayed by the user device122. After scanning the machine-readable code, software on the user device132can process the scanned machine-readable code and, in response, perform one or more actions associated with the machine-readable code. In some implementations, after scanning the machine-readable code, the user device132communicates, over the network114, data describing the scanned machine-readable code to the system101in lieu of decoding the machine-readable code. Instead, the system101identifies one or more rules that are associated with the machine-readable code, e.g., by looking up rules associated with the machine-readable label in the machine-readable code database112. Once the rules have been identified, the server101can provide the identified one or more rules to the user device132for performing actions associated with the one or more rules.

In this example, the machine-readable code describes rules that instruct a user device to display a user's insurance information. When processing the rules, the user device132can interact with a personal information database134that stores data describing the user130. Depending on the implementation, the personal information database134can be stored on the user device132or on a cloud storage service. The data describing the user130can include, for example, personal information, e.g., name, age, date of birth, address, social security number, marital status, etc., credit history, insurance information, e.g., insurance status, provider, contact information, etc., medical history, driver's license information, travel passport information, family background information, and information relating to background checks, e.g., security clearance status, etc.

The user device132can use data stored in the personal information database134to process the rules associated with the machine-readable code. In this example, the user device132can obtain, from the personal information database134, data describing insurance information for the user130. Once the data is obtained, the user device132can display, on a display screen of the user device132, insurance information for the user130. The user130can present the displayed insurance information to the user120as part of an insurance information exchange.

In some implementations, the user120operating the user device132is required to undergo a sign up process before machine-readable codes can be scanned and processed by the user device132. In such implementations, the user verifies his or her identity with an authorized agency, e.g., a government agency. For example, the use can verify his or her identity to a representative of the agency by personally appearing at the agency's location and providing proper documentation, e.g., a driver's license or passport, that confirms the user's biographical information, e.g., name, date of birth, and photograph. The agency uses the user's biographical information to confirm the user's identity.

Once the user's identity has been confirmed, the agency issues the user with a unique identification number and a machine-readable code that encodes data describing the user, e.g., the user's name, address, date of birth, and photograph. The user then undergoes a secondary verification by presenting the agency-issued machine-readable code to a different authorized agent, e.g., a government agent. The agent can interact with a device to scan the user's agency-issued machine-readable code. In response to scanning the user's agency-issued machine-readable code, a display screen of the agent's device will display the user's biographical information, e.g., name, date of birth, and photograph.

The agent confirms the validity of the user's biographical information with the user's biographical information displayed on a government-issued identification card or with data stored on the user device132. If the user's displayed biographical information is determined to be valid, the agent approves the user device132for scanning and processing machine-readable codes.

This verification process can be required for all users including the users, e.g., the user120, that generate machine-readable codes.

In some implementations, once a user has obtained a unique identification number, the user's device can request various entities, e.g., creditors, vendors, landlords, financial consultants, etc., to begin sending detailed financial reports to the user's device. The entities can send detailed financial reports on an on-going bases, e.g., quarterly, or in response to a change in the user's financial history, e.g., when the user takes out a loan. This detailed financial information can be used by the user to determine whether the user is qualified for a particular item, e.g., credit card, house, car, etc., as described below in reference toFIG. 2.

FIG. 2illustrates an example in which a user202scans a machine-readable code208to determine whether the user202is pre-qualified for a credit card. The machine-readable code208can be displayed, for example, in a magazine, on a brochure, on a billboard, or on a display screen.

The machine-readable code208can be generated on behalf of a financial institution that is offering the credit card. As described above, the machine-readable code208can describe one or more rules that instruct a user device to perform one or more actions. The rules can be selected or defined by the financial institution, as described above, to satisfy one or more criteria. In this example, the financial institution has specified rules that confirm that an applicant has a clean credit history and a credit score that exceeds700.

A user202that wants to apply for the credit card and determine whether he or she is pre-qualified to obtain the credit card before actually applying for the card through the financial institution. In this example, the user202can interact with software on the user device204to scan the machine-readable code208using the user device204. After scanning, software on the user device204can decode the rules that are described by the machine-readable code208. In this example, the software identifies first rule that confirms that an applicant has a clean credit history and a second rule that confirms that the applicant's credit score that exceeds700.

Once the rules have been identified, the user device204can interact with a personal information database206that stores personal information describing the user202, as described above. Using the information stored in the personal information database206, the user device204can process the identified rules to determine whether the user202has a clean credit history and has a credit score that exceeds700. Once processing is complete, the user device204can present a message on a display screen205of the user device204indicating whether the user202pre-qualifies for the credit card.

FIG. 3illustrates an example in which a user302scans a machine-readable code308to provide relevant information that authenticates the user302to a retail establishment. The machine-readable code308can be displayed, for example, on a wall at the retail establishment or on a display screen.

As described above, the machine-readable code308can be generated on behalf of the retail establishment. The machine-readable code308can describe one or more rules that instruct a user device to perform one or more actions. The rules can be selected or defined by the retail establishment, as described above, to satisfy one or more criteria. In this example, the retail establishment has specified rules that confirm that a patron attempting to gain entrance to the retail establish is female and is of age 21 or over.

A user302that wants to enter the retail establishment can interact with software on the user device304to scan the machine-readable code308using the user device304. After scanning, software on the user device304can decode the rules that are described by the machine-readable code308. In this example, the software identifies first rule that confirms that the user302is female and of age 21 or over.

Once the rules have been identified, the user device304can interact with a personal information database306that stores personal information describing the user302, as described above. Using the information stored in the personal information database306, the user device304can process the identified rules to determine whether the user302is female and of age 21 or over. Once processing is complete, the user device304can present a message on a display screen305of the user device304indicating whether the user302meets the criteria for entering the retail establishment.

FIG. 4illustrates an example in which a first user402scans a machine-readable code408that is presented on a user device424of a second user422to provide relevant information about the first user402to the second user424. The machine-readable code408can be displayed, for example, on a display screen425of the user device424.

The machine-readable code408can be generated on behalf of the second user422using rules specified by the second user422. Alternatively, the second user422can obtain a pre-generated machine-readable code, from the system101, that instructs a user device to display relevant information, as described above. The machine-readable code408can describe one or more rules that instruct a user device to perform one or more actions. In this example, the second user422has obtained a pre-generated machine-readable code408that describes rules that instruct a user device to display a user's insurance information. The second user422can use the machine-readable code408to obtain the first user's402insurance information, for example, after a car accident.

The first user402can provide the second user422with his or her insurance information by interacting with software on the user device404to scan the machine-readable code408using the user device404. After scanning, software on the user device404can decode the rules that are described by the machine-readable code408. In this example, the software identifies a rule that instructs the user device404to display insurance information for the user402.

Once the rules have been identified, the user device404can interact with a personal information database406that stores personal information describing the user402, as described above. Using the information stored in the personal information database406, the user device404can process the identified rule to obtain insurance information for the user402. Once processing is complete, the user device404can present the obtained insurance information on a display screen405of the user device404.

In some implementations, users interacting with each other using machine-readable codes are required to undergo the sign up process described above.

In some implementations, a first user can require a second user to undergo additional verification before the first and second user can interact with one another using machine-readable codes. For example, if a banker wants to open a new financial account for a user, the banker needs to undergo the sign up process described above. Next, the banker can present, on a display screen of a device, a machine-readable code that identifies the banker to the user. The user can interact with a user device to scan and process the banker's machine-readable code. In response to processing the machine-readable code, the user device can verify the banker's identity and authorize the banker to perform various actions, e.g., open a bank account.

Additionally, for example, upon scanning the banker's machine-readable code, if the user authorizes the banker to communicate with the user by e-mail, then data describing the banker is added to a whitelist of entities that can contact the user. The banker can then send, to the user, correspondence, e.g., bank statements, by e-mail.

Entities, e.g., individuals or organizations, that are not listed on the user's whitelist of entities are prevented from contacting the user. Thus, if the banker sells the user's e-mail address to a third-party, and the third-party is not listed on the user's whitelist of entities, then the third-party will not be able to electronically contact the user. Additionally, the third-party will not be able to access any of the user's biographical information.

FIG. 5illustrates an example in which a user502presents a machine-readable code505to an access control device508to gain physical access to a building. The machine-readable code505is displayed on a display screen of a user device504.

As described above, the machine-readable code505can describe the user's biographical information, e.g., name, date of birth, photograph, and can be issued to the user505by an authorized agency.

A user502that wants to enter the building can interact with software on the user device504to display the machine-readable code505on a display screen of the user device504. The user502can be authenticated by presenting the displayed machine-readable code505to the access control device508.

The access control device508can scan and process the machine-readable code505to determine whether the machine-readable code505identifies an authorized individual. The access control device508can grant the user502access to the building upon determining that the user502is authorized to enter the building.

For example, an individual can program an access control device for their home to provide a cable repairperson entry into the home. The cable repairperson can interact with a device to present a machine-readable code identifying the cable repairperson to the access control device. Upon determining that the cable repairperson is authorized to enter the home, the access control device can unlock one or more doors to allow the cable repairperson to enter the home.

In situations in which the systems discussed here collect personal information, display personal information, or may make use of personal information, the users may be provided with an opportunity to control whether programs or features collect user information. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is obscured.