US20160110065A1 - Suggesting Activities - Google Patents

Suggesting Activities Download PDF

Info

Publication number
US20160110065A1
US20160110065A1 US14/739,044 US201514739044A US2016110065A1 US 20160110065 A1 US20160110065 A1 US 20160110065A1 US 201514739044 A US201514739044 A US 201514739044A US 2016110065 A1 US2016110065 A1 US 2016110065A1
Authority
US
United States
Prior art keywords
user
behavior
activity
inputs
possible information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/739,044
Inventor
Brett A. Krueger
Kraig T. Krueger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kruevio LLC
Original Assignee
Blackwerks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Blackwerks LLC filed Critical Blackwerks LLC
Priority to US14/739,044 priority Critical patent/US20160110065A1/en
Assigned to BLACKWERKS, LLC. reassignment BLACKWERKS, LLC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KRUEGER, BRETT A, KRUEGER, KRAIG T
Publication of US20160110065A1 publication Critical patent/US20160110065A1/en
Assigned to KRUEVIO LLC reassignment KRUEVIO LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Blackwerks, LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/251Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • H04N21/252Processing of multiple end-users' preferences to derive collaborative data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/466Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • H04N21/4668Learning process for intelligent management, e.g. learning user preferences for recommending movies for recommending content, e.g. movies

Definitions

  • This disclosure relates to suggesting information to a user based on an assessment of the user's current state.
  • mobile devices such as smartphones, tablet PCs, cellular telephones, or portable digital assistants
  • mobile devices were mainly used for voice communication, but recently they have become a reliable source for performing a range of business and personal tasks.
  • Mobile devices are useful to obtain information by using a data connection to access the World Wide Web.
  • the user may input a search query on a search engine website, using the mobile device, to obtain requested information.
  • the information may relate to a location of a restaurant, hotel, shopping center, or other information.
  • Users may use mobile devices for social media, which allows the users to create, share, or exchange information and ideas in virtual communities or networks. Social media depends on mobile and web-based technologies to allow people to share, co-create, collaborate on, discuss, and modify user-generated content.
  • One aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of a user.
  • the inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on a screen in communication with the computing device.
  • the method includes determining, using the computing device, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state.
  • the method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task.
  • the method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the screen for display on the screen.
  • Implementations of the disclosure may include one or more of the following optional features.
  • the inputs include biometric data of the user and environmental data regarding a surrounding of the user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the method may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the method may include combining selected activities and sending a combined activity in the results.
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices.
  • the non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of a user.
  • the inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on a screen in communication with the one or more computing devices.
  • the operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes.
  • Each behavior models a human behavior and/or a goal oriented task.
  • the operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen.
  • the inputs include biometric data of the user and environmental data regarding a surrounding of the user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the operations may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the operations may include combining selected activities and sending a combined activity in the results.
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of each user of a group of users.
  • the inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the computing device.
  • the method includes determining, using the computing device, a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group) and determining one or more possible activities for group of users and one or more predicted outcomes for each activity based on the collective user states.
  • the method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the one or more screens for display on the one or more screens.
  • Implementations of the disclosure may include one or more of the following optional features.
  • the inputs include biometric data of at least one user and environmental data regarding a surrounding of the at least one user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the method may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the method may include combining selected activities and sending a combined activity in the results.
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices.
  • the non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of each user of a group of users.
  • the inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the one or more computing devices.
  • the operations include determining a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group), determining one or more possible activities for the group of users and one or more predicted outcomes for each activity based on the collective user states, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes.
  • Each behavior models a human behavior and/or a goal oriented task.
  • the operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the one or more screens for display on the one or more screens.
  • the inputs include biometric data of at least one user and environmental data regarding a surrounding of at least one user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an Objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the operations may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the operations may include combining selected activities and sending a combined activity in the results.
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Yet another aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of a user.
  • the inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on a screen in communication with the computing device.
  • the method includes determining, using the computing device, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state.
  • the method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task.
  • the method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the screen for display on the screen.
  • Implementations of the disclosure may include one or more of the following optional features.
  • the inputs include biometric data of the user and environmental data regarding a surrounding of the user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device).
  • the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the method may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the method may include combining selected activities and sending a combined activity in the results.
  • the results may include one or more activity records, where each activity record includes an activity description and an activity location.
  • the method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description.
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices.
  • the non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of a user.
  • the inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on a screen in communication with the one or more computing devices.
  • the operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes.
  • Each behavior models a human behavior and/or a goal oriented task.
  • the operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen.
  • the inputs include biometric data of the user and environmental data regarding a surrounding of the user.
  • the one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • the trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device).
  • the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes.
  • the operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user.
  • Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device.
  • a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome.
  • Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • the operations may include incrementing an influence value associated with the behavior.
  • the input is related to the behavior when the input is of an input type associated with the behavior.
  • the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior.
  • the operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the correspond outcomes.
  • the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations.
  • the operations may include combining selected activities and sending a combined activity in the results.
  • the results may include one or more activity records, where each activity record includes an activity description and an activity location.
  • the method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description,
  • the computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor.
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • FIG. 1A is a schematic view of an example environment including a user device in communication with a search system.
  • FIG. 1B is a schematic view of an example environment including a user device in communication with a search system and data sources.
  • FIG. 2A is a schematic view of an example user device having one or more sensors.
  • FIG. 2B is a schematic view of an example user device in communication with a search system.
  • FIG. 3 is a schematic view of an example search system.
  • FIG. 4A is a schematic view of an example state analyzer receiving inputs from various sources.
  • FIG. 4B is a schematic view of an example user device displaying an example state acquisition view having multiple images grouped by categories for selection by the user.
  • FIG. 4C is a schematic view of an example user device displaying an example state acquisition view having two images and allowing the user to select one of the images.
  • FIG. 4D is a schematic view of an example user device displaying an example state acquisition view having menus and allowing the user to select one or more user state indicators.
  • FIG. 4E is a schematic view of an example user device displaying an example user preferences view.
  • FIGS. 5A and 5B are schematic views of an example activity system that generates possible activities and optionally predicted outcomes of those activities.
  • FIG. 6A is a schematic view of an example behavior system that evaluates activities and optionally predicted outcomes of those activities.
  • FIG. 6B is a schematic view of an example behavior system having several behaviors.
  • FIG. 6C is a schematic view of an example behavior system interacting with the activity system and an activity selector.
  • FIG. 7 is a schematic view of an example activity selector
  • FIG. 8A is a schematic view of an example user device being shaken to initiate retrieval of a suggest activity for the user.
  • FIG. 8B is a schematic view of an example user device displaying an example result view having a map.
  • FIG. 8C is a schematic view of an example user device displaying an example result view having a tree-grid view.
  • FIG. 8D is a schematic view of an example user device displaying an example result view having a select-a-door view.
  • FIG. 8E is a schematic view of an example user device displaying an example result view having a spin-the-wheel view.
  • FIG. 9 is a schematic view of an exemplary arrangement of operations for suggesting an activity to one or more users.
  • FIG. 10 is schematic view of an example computing device that may be used to implement the systems and methods described in this document.
  • FIG. 1A illustrates an example system 100 that includes a user device 200 associated with a user 10 in communication with a remote system 110 via a network 120 .
  • the remote system 110 may be a distributed system (e.g., cloud environment) having scalable/elastic computing resources 112 and/or storage resources 114 .
  • the user device 200 and/or the remote system 110 may execute a search system 300 and optionally receive data from one or more data sources 130 .
  • the search system 300 communicates with one or more user devices 200 and the data source(s) 130 via the network 120 .
  • the network 120 may include various types of networks, such as a local area network (LAN), wide area network (WAN), and/or the Internet.
  • user devices 200 communicate with the search system 300 via the network 120 or a partner computing system 122 .
  • the partner computing system 122 may be a computing system of a third party that may leverage the search functionality of the search system 300 .
  • the partner computing system 122 may belong to a company or organization other than that which operates the search system 300 .
  • Example third parties which may leverage the functionality of the search system 300 may include, but are not limited to, internet search providers and wireless communications service providers.
  • the user devices 200 may send search requests 220 to the search system 300 and receive search results 230 via the partner computing system 122 .
  • the partner computing system 122 may provide a user interface to the user devices 200 in some examples and/or modify the search experience provided on the user devices 200 .
  • the search system 300 may use (e.g., query) the data sources 130 when generating search results 230 .
  • Data retrieved from the data sources 130 can include any type of data related to assessing a current state of the user 10 .
  • the data retrieved from the data sources 130 may be used to create and/or update one or more databases, indices, tables (e.g., an access table), files, or other data structures of the search system 300 .
  • the data sources 130 may include a variety of different data providers.
  • the data sources 130 may include application developers 130 a, such as application developers' websites and data feeds provided by developers and operators of digital distribution platforms 130 b configured to distribute content to user devices 200 .
  • Example digital distribution platforms 130 b include, but are not limited to, the GOOGLE PLAY® digital distribution platform by Google, Inc., the APP STORE® digital distribution platform by Apple, Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation.
  • the data sources 130 may also include websites, such as websites that include web logs 130 c (i.e., blogs), review websites 130 d, or other websites including data related to assessing a state of the user 10 . Additionally, the data sources 130 may include social networking sites 130 e, such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets). Data sources 130 may also include online databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants. Data sources 130 may also include additional types of data sources in addition to the data sources described above. Different data sources 130 may have their own content and update rate.
  • social networking sites 130 e such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets).
  • Data sources 130 may also include online databases 130 f that include, but are not limited to, data
  • FIG. 2A illustrates an example user device 200 including a computing device 202 (e.g., a computer processor or data processing hardware) and memory hardware 204 (e.g., non-transitory memory) in communication with the computing device 202 .
  • the memory hardware 204 may store instructions for one or more software applications 206 that can be executed on the computing device 202 .
  • a software application 206 may refer to computer software that, when executed by the computing device 202 , causes the computing device 202 to perform a task or operation.
  • a software application 206 may be referred to as an “application”, an “app”, or a “program”.
  • the software application 206 may cause the computing device 202 to control the user device 200 to effectuate functionality of the software application 206 . Therefore, the software application 206 transforms the user device 200 into a special purpose device that carries out functionality instructed by the software application 206 , functionality not otherwise available to a user 10 without the software application 206 .
  • Example software applications 206 include, but are not limited to, an operating system 206 a, a search application 206 b, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and games. Applications 206 can be executed on a variety of different user devices 200 . In some examples, applications 206 are installed on a user device 200 prior to a user 10 purchasing the user device 200 . In other examples, the user downloads and installs applications 206 on the user device 200 .
  • User devices 200 can be any computing devices capable of communicating with the search system 300 .
  • User devices 200 include, but are not limited to, mobile computing devices, such as laptops, tablets, smart phones, and wearable computing devices (e.g., headsets and/or watches).
  • User devices 200 may also include other computing devices having other form factors, such as desktop computers, vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances),
  • the user device 200 may use any of a variety of different operating systems 206 a.
  • the user device 200 may run an operating system including, but not limited to, ANDROID® developed by Google Inc., IOS® developed by Apple Inc., or WINDOWS PHONE® developed by Microsoft Corporation.
  • the operating system 206 a running on the user device 200 may include, but is not limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®.
  • the user device may run an operating system including, but not limited to, MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., or Linux.
  • User devices 200 may also access the search system 300 while running operating systems 206 a other than those operating systems 206 a described above, whether presently available or developed in the future.
  • e user device 200 includes one or more sensors 208 in communication with the computing device 202 and capable of measuring a quality, such as a biometric quality, of the user 10 .
  • the sensor(s) 208 may be part of the user device 200 (e.g., integrally attached) and/or external from (e.g., separate and remote from, but in communication with) the user device 200 .
  • Sensors 208 separate and remote from the user device may communicate with the user device 200 through the network 120 , wireless communication, such as Bluetooth or Wi-Fi, wired communication, or some other form of communication.
  • the computing device 202 receives biometric data 212 (e.g., sensor signals or bioinformatics) and/or environmental data 214 (e.g., sensor signals, data structures, data objects, etc.) from one or more sensors 208 .
  • biometric data 212 may include, but are not limited to, a temperature of the user 10 , an image (e.g., 2D image, 3D image, infrared image, etc.) of the user 10 , a fingerprint of the user 10 , a sound of the user 10 , a blood oxygen concentration of the user 10 , a blood glucose level of the user 10 , a skin PH of the user 10 , a blood alcohol level of the user 10 , an activity level of the user 10 (e.g., walking step count or other movement indicator), a wake-up time of the user 10 , asleep time of the user 10 , eating times, eating duration, eating type (e.g., meal vs.
  • biometric data 212 may include, but are not limited to
  • Examples of environmental data 214 may include, but are not limited to, a geolocation of the user device 200 , a temperature, humidity, and/or barometric pressure about the user device 200 , a weather forecast for a location of the user device 200 , an image (e.g., 2D image, 3D image, infrared image, etc.) of a surrounding of the user device 200 , a sound about the user 10 , etc.
  • Example sensors 208 that may be included with the user device 200 include, but are not limited to, a camera 208 a (e.g., digital camera, video recorder, infrared imaging sensor, 3D volumetric point cloud imaging sensor, stereo imaging sensor, etc.), a microphone 208 b, geolocation device 208 c, an inertial measurement unit (IMU) 208 d (e.g., 3-axis accelerometer), a fingerprint reader 208 e, a blood oxygen meter 208 f, a PH meter 208 g, etc.
  • the camera 208 a may capture image data indicative of an appearance of the user 10 and/or an environment or scene about the user 10 .
  • the microphone 208 b may sense audio of the user 10 and/or an environment or scene about the user 10 .
  • Example sensors 208 that may be separate from the user device 200 include a camera 208 a, a temperature sensor 208 h, a humidistat 208 i, a barometer 208 j, or any sensing device 208 n capable of delivering a signal to the user device 200 that is indicative of the user 10 , a surrounding of the user 10 , or something that can affect the user 10 .
  • the user device 200 may provide location data as an input 210 in the form of an interact protocol GP) address, which the search system 300 may use to determine a location of the user device 200 .
  • Any of the sensors 208 described as being included in the user device 200 may be separate from the user device 200 , and any of the sensors 208 described as being separate from the user device 200 may be included with the user device 200 .
  • FIG. 2B illustrates an example user device 200 in communication with the search system 300 .
  • the user device 200 may communicate with the search system 300 using any software application 206 that can transmit a search request 220 to the search system 300 and receive search results 230 therefrom for display on a display 240 (e.g., screen or touch screen) in communication with the computing device 202 of the user device 200 .
  • the user device 200 runs a native application 206 dedicated to interfacing with the search system 300 ; while in other examples, the user device 200 communicates with the search system 300 using amore general application 206 , such as a web-browser application 206 accessed using a web browser.
  • the search application 206 b receives one or more inputs 210 , such as biometric data 212 or environmental data 214 from the sensor(s) 208 and/or the user 10 via a graphical user interface (GUI) 250 and transmits a search request 220 based on the received inputs 210 to the search system 300 .
  • the search application 206 b may also receive platform data 218 form the user device 200 (e.g., version of the operating system 206 a, device type, and web-browser version), an identity of the user 10 of the user device 200 (e.g., a username), partner specific data, and/or other data and include that information in the search request 220 as well.
  • platform data 218 form the user device 200 (e.g., version of the operating system 206 a, device type, and web-browser version), an identity of the user 10 of the user device 200 (e.g., a username), partner specific data, and/or other data and include that information in the search request 220 as well.
  • the search application 206 b receives a search result set 230 from the search system 300 , in response to submitting the search request 220 , and optionally displays one or more result records 232 of the search results set 230 on the display 240 of the user device 200 .
  • the search request 220 includes a search query 222 containing a user specified selection a category, genre, or string).
  • the search application 206 b may display a graphical user interface (GUI) 250 on the display 240 that may provide a structured environment to receive inputs 210 and display the search results 230 , 232 .
  • GUI graphical user interface
  • the search application 206 b is a client-side application and the search system 300 executes on the remote system 110 as a server-side system.
  • FIG. 3 illustrates a function block diagram of the search system 300 .
  • the search system 300 includes a state analyzer 400 in communication with an activity system 500 , which is in communication with a behavior system 600 .
  • the behavior system 600 is in communication with an activity selector 700 .
  • Each sub-system 400 , 500 , 600 , 700 of the search system 300 can be in communication with each other.
  • the state analyzer 400 receives one or more inputs 210 (also referred to as user state indicators) that are indicative of a state of the user 10 and determines a collective state 420 of the user 10 (referred to as the collective user state 420 ).
  • the activity system 500 receives the inputs/user state indicators 210 and/or the collective user state 420 from the state analyzer 400 and determines a collection 520 of possible activities A, A 1 -A n and corresponding outcomes O, O 1 -O n , for the user 10 (referred to as an activity-outcome set 520 ).
  • the activity system 500 receives the inputs 210 directly from the user device 200 .
  • the activity system 500 may receive the inputs 210 from the user device 200 instead of the collective user state 420 from the state analyzer 400 or just the collective user state 420 from the state analyzer 400 and not the inputs 210 from the user device 200 .
  • the behavior system 600 receives the activity-outcome set 520 from the state analyzer 400 , evaluates each activity A based on its corresponding predicted outcome O, and provides a collection 620 of evaluated activities A, A 1 -A n and optionally corresponding outcomes O, O 1 -O n (referred to as an evaluated activity-outcome set 620 ).
  • the activity selector 700 receives the evaluated activity-outcome set 620 from the behavior system 600 and determines a collection 720 of one or more selected activities A, A 1 -A j (referred to as a selected activity set 720 ).
  • the state analyzer 400 receives one or more inputs/indicators 210 of the state of the user 10 (e.g., physical and/or emotional state) and determines the collective user state 420 of the user 10 .
  • the state analyzer 400 may combine the received user state indicators 210 to generate the collective user state 420 .
  • the state analyzer 400 executes an algorithm on the received user state indicators 210 to generate the collective user state 420 .
  • the algorithm may logically group user state indicators 210 and select one or more groups of user state indicators 210 to generate the collective user state 420 .
  • the state analyzer 400 may exclude user state indicators 210 logically opposed to other, more dominant user state indicators 210 .
  • the state analyzer 400 may form a group of user state indicators 210 indicative of an emotional state of happiness and another on a state of hunger. For example, if the state analyzer 400 receives several user state indicators 210 (e.g., a majority) indicative of happiness and only a few or one (e.g., a minority) user state indicator 210 indicative of sadness, the state analyzer 400 may form a group of user state indicators 210 indicative of an emotional state of happiness, while excluding the minority user state indicators 210 indicative of an emotional state of sadness (since they're diametrically opposed).
  • a majority indicative of happiness
  • a few or one e.g., a minority
  • the state analyzer 400 may form a group of user state indicators 210 indicative of an emotional state of happiness, while excluding the minority user state indicators 210 indicative of an emotional state of sadness (since they're diametrically opposed).
  • the state analyzer 400 models the user 10 using the received user state indicator(s) 210 to generate the collective user state 420 .
  • Each received user state indicator 210 provides an aspect of the modeled user 10 as the collective user state 420 .
  • the state analyzer 400 may store the collective user state 420 in memory, such as the storage resources 11 . 4 of the remote system 110 .
  • the state analyzer 400 generates and/or stores the collective user state 420 as an object, such as a Java script object notation (JSON) object, a metadata data object, structured data, or unstructured data. Other methods of storing the collective user state 420 are possible as well.
  • JSON Java script object notation
  • the input/user state indicator 210 may include any information indicative of the user's state of being, in terms of a physical state of being and/or an emotional state of being.
  • a physical state may include, but are not limited to, date and/or time stamp 210 a (e.g., from the computing device 202 of the user device 200 ), a location 210 b of the user 10 , a user-identified state indicator 210 c of a physical well-being of the user 10 , and a sensed indicator 210 d. of a physical well-being of the user 10 (e.g., biometrics).
  • the location 210 b of the user 10 may be a geolocation (e.g., latitude and longitude coordinates) of the user device 200 , a description of the physical location of the user 10 in terms of landmarks and/or environmental descriptions, a description of a dwelling or building, a floor of the dwelling or building, a room of the dwelling or building, an altitude, etc.
  • Examples of emotional states include, but are not limited to, user-identified state indicators 210 c of an emotional state of the user 10 and sensed indicators 210 d of a physical well-being of the user 10 (e.g., biometrics).
  • the state analyzer 400 receives image inputs 210 of the user 10 from the camera 208 a and determines an emotional state of the user 10 based on the images 210 (and optionally other inputs 210 ).
  • the state analyzer 400 can gauge whether the user 10 is angry, happy, sad, surprised, eating, moving, etc. based on the image inputs 210 .
  • the image inputs 210 may be considered as user-identified state indicators 210 c and/or sensed indicators 210 d.
  • the user device 200 may receive the user-identified state indicator 210 c from the user 10 through the GUI 250 .
  • the user-identified state indicator 210 c may include one or more selections of images and/or description indicative of different states of physical or emotional well-being or states of the user 10 .
  • the user 10 can select one or more user-identified state indicators 210 c on the GUI 250 that correspond to a combination of different user state indicators 210 .
  • the search application 206 b may execute logic that disallows inconsistent selections. For example, the search application 206 b may not allow the user 10 to select user-identified state indicators 210 c of happy and sad at the same time.
  • the user state indicator 210 may optionally include user state indicators 210 of friends (referred to as friend state indicator 210 e ) from the remote system 110 or a data source.
  • the friend state indicator 210 e may be from any person having an identified association with the user 10 .
  • the user 10 may designate the associations of other people with their account and/or the state analyzer 400 may identify and designate other people as having an association with the user 10 based on the user state indicator 210 of other users 10 and/or authorized searching of email account(s), social networking account(s), or other online resources of the user 10 .
  • the user state indicator 210 may optionally include a partner metric 210 f (e.g., available funds from a banking institution) received from the user device 200 (e.g., as a user input) and/or from a remote data source 130 (e.g., a linked hack account).
  • the partner entities may be data sources 130 that provide information relative the user's state.
  • a mobile payment plan can provide mobile payment information, such as a purchase time, purchase location, store entity, goods purchased, purchase amount, and/or other information, which the search system 300 can use to determine the user collective state 420 .
  • the activity system 500 may use partner metrics 210 f to suggest activities A and predict outcomes O
  • the behavior system 600 may use partner metrics 210 f to evaluate the activities A and predicted outcomes O
  • the activity selector 700 may use partner metrics 210 f to select one or more activities A.
  • the user state indicator 210 may optionally include a user schedule 210 g received from the user device 200 (e.g., as a user input) and/or from a remote data source 130 (e.g., a linked scheduler or partner system 122 ).
  • the schedule may be related to eating, exercise, work, to-do list, etc.
  • the search application 206 b displays a state acquisition view 260 having a collection 270 of images 272 , 272 a - n (e.g., a tiling of pictures) in the GUI 250 and prompts the user 10 to select the image 272 most indicative of a current state of the user 10 (e.g., a user state indicator 210 ).
  • the images 272 may depict a variety of possible user states, such as happy or sad, hungry of full, energetic or lethargic, etc.
  • the selected image 272 may be a user state indicator 210 .
  • the GUI 250 may display one or more images 272 , 272 a - n and prompts the user 10 to tag the images 272 , 272 a - n with a corresponding user state. As the user 10 tags the images 272 , 272 a - n , the search system 300 learns the user's preferences and/or state.
  • the search application 206 b may group the images 272 (e.g., by a category) into one or more groups 274 , 274 a - n and display the one or more groups 274 , 274 a - n in the GUI 250 .
  • the user 10 may scroll through the images 272 in each group 274 and select an image 272 most indicative of a current state of the user 10 .
  • the search application 2066 may display each group 274 of images 272 as a linear or curved progression (e.g., a dial), such that the user 10 can swipe across the screen 240 to move the linear progression or rotate the curve progression of images 272 onto and off the screen 240 .
  • the user 10 may scroll through each group 274 , 274 a - n of images 272 , 272 a - n and position a selected image 272 in a selection area 266 (e.g., selection box).
  • the search application 206 b may alter the selected image 272 or otherwise designate the selected image 272 as being selected. For example, the search application 206 b may change the image 272 into another related image 272 or animate the image 272 (e.g., video).
  • the search application 206 b may highlight the selected image 272 or provide a visual or audio cue of the selection.
  • the search application 206 b displays a gauge 268 indicating a level of discernment of the user's current state based on the number and/or type of images 272 , 272 a - n currently selected in the collection 270 of images 272 , 272 a - n .
  • the search application 206 b may indicate a threshold number of images 272 , 272 a - n that the user 10 should select before proceeding to obtain a suggested activity A.
  • the search application 206 b may display a state acquisition view 260 having first and second images 272 a, 272 b in the GUI 250 and prompt the user 10 to select the image 272 most indicative of a current state of the user 10 (e.g., a user state indicator 210 ).
  • the search application 206 b may display two more images 272 in the GUI 250 and prompt the user 10 to select the image 272 most indicative of his/her current state, and continue recursively for a threshold period of time or until the user 10 selects a threshold number of images 272 .
  • the search application 206 b may display a gauge 268 indicating a level of discernment of the user's current state based on the number and/or type of images 272 , 272 a - n selected. Moreover, the search application 206 b may, in some instances, not allow the user 10 to proceed to receive a suggested activity A until the search application 206 b and/or the search system 300 has ascertained a threshold level of discernment of the user's current state based on the number and/or type of images 272 , 272 a - n selected.
  • the search application 206 b may display a first image 272 a showing a person eating to illustrate a hungry state and a second image 272 b showing a person full with a finished dinner plate to illustrate a full or not hungry state.
  • the search application 206 b may display a first image 272 a showing a person running to illustrate an alterning to go running and a second image 272 b showing a person sitting or resting to illustrate an alterning to sit and rest.
  • the user 10 may continue to select one of two images 272 until the gauge 268 indicates a threshold level of discernment of the user's current state or until the user 10 selects a query element 252 displayed in the GUI 250 , at which point the search application 206 b sends the query request 220 to the search system 300 to receive search result(s) 230 for display in the GUI 250 .
  • the search application 206 b displays a state acquisition view 260 having one or more menus 280 (e.g., categories of user state indicators 210 ). Each menu 280 may have one or more sub-menus 282 that further group or categories user state indicators 210 .
  • the user 10 may swipe across the screen 240 of the user device 200 in a non-linear path 286 (e.g., step like fashion) to navigation the menus 282 , 284 to select a user state indicator 210 most indicative of the user's current state.
  • the user 10 may continue to navigate the menus 282 , 284 to select user state indicators 210 until the gauge 268 indicates a threshold level of discernment of the user's current state or until the user 10 selects the query element 252 displayed in the GUI 250 , at which point the search application 206 b sends the query request 220 to the search system 300 to receive search result(s) 230 for display in the GUI 250 .
  • the search application 206 b displays a preferences view 290 that allows the user 10 to set and modify user preferences P, P 1 -P n .
  • the search system 300 may use the user preferences P 1 -P n for generating search results 230 .
  • the activity system 500 may use the user preferences P 1 -P n , for identifying possible activities A.
  • the behavior system 600 may use the user preferences P 1 -P n for evaluating the possible activities A (and optionally any corresponding predicted outcomes O).
  • the search application 206 b may display an edit preference view 292 that allows the user 10 to modify the selected preference P 1 -P n .
  • Example preferences may include, but are not limited to, preferred eating times, eating duration, dining preferences (e.g., food types, restaurants, restaurant types, eating locations), leisure activities, cinema preferences, theaters, theater show types, to-do lists, sports activities, shopping preferences (e.g., stores, clothing types, price ranges), allowable purchase ranges for different types of goods or services, disposable income, personality type, etc.
  • dining preferences e.g., food types, restaurants, restaurant types, eating locations
  • leisure activities cinema preferences, theaters, theater show types, to-do lists, sports activities
  • shopping preferences e.g., stores, clothing types, price ranges
  • allowable purchase ranges for different types of goods or services disposable income, personality type, etc.
  • the user 10 may select an auto-populate preferences icon 294 to cause the search application 206 b and/or the search system 300 to populate the preferences P 1 -P n based on previous inputs 210 and/or selected activities A of the user 10 (e.g., stored in non-transitory memory 114 ). After auto-populating the preferences P 1 -P n , the user 10 may further customize the preferences P 1 -P n using the preferences view 290 .
  • the activity system 500 receives the collective user state 420 from the state analyzer 400 , applies the collective user state 420 to an activity model 510 and determines the collection 520 of possible activities A, A 1 -A n and corresponding outcomes O, O 1 -O n for the user 10 (i.e., the activity-outcome set 520 ).
  • the activity system 500 may use a user profile 14 of the user 10 to determine the activity-outcome set 520 .
  • a data source 130 e.g., data store, non-transitory memory, a database, etc
  • in communication with the activity system 500 may store the user profile 14 , possible activities A, and/or possible outcomes O.
  • the activity system 500 may identify one or more preferences P 1 -P n of the user 10 from the user profile 14 for use with the activity model 510 to determine the activity-outcome set 520 .
  • the activity system 500 may optionally query one or more data sources 130 or the storage resources 114 of the remote system 110 for data on possible activities A and/or corresponding outcomes O.
  • the activity system 500 simulates each activity A, using the activity model 510 , over a time horizon in the future to predict a corresponding outcome O, optionally using results 534 queried from the data source(s) 130 .
  • the activity system 500 includes an activity generator 530 that generates possible activities A based on the received inputs 210 (and/or collective user state 420 ) and an outcome generator 540 that generators the set 520 of possible outcomes O for each activity A.
  • the activity generator 530 may generate an activity search query 532 based on the inputs 210 and a type 216 of each input 210 and query the data source(s) 130 to obtain results 534 , which the activity generator 530 can use to determine one or more possible activities A.
  • an input 210 may be a global positioning system (GPS) coordinate having an input type 216 of location.
  • the input type 216 may be strongly typed to accept coordinate values as the corresponding input 210 .
  • An activity search query 532 may include criteria to seek possible activities A within a threshold distance of the location. Moreover, the threshold distance may be based on the location.
  • the activity generator 530 seeks activities A relevant to active behaviors 610 .
  • the activity generator 530 may identify all or a sub-set of the active behaviors 610 and then seek activities A that each behavior 610 can evaluate positively. For example, if a sports behavior 610 e is active, then the activity generator 530 may seek possible activities A related to sports.
  • the outcome generator 540 After the activity generator 530 generates a collection of possible activities A, the outcome generator 540 generates a collection of one or more predicted outcomes O for each activity A. In some implementations, the outcome generator 540 retrieves possible outcomes O from a data store storing outcomes O for various activities A. For example, the outcome generator 540 may query the data source(s) 130 for possible outcomes O matching a criteria indicative of the activity A.
  • the data source(s) 130 may include databases, partner systems 122 , and other sources of information.
  • the behavior system 600 receives the activity-outcome set 520 from the activity system 500 , evaluates each activity Abused on its corresponding predicted outcome O, and provides the collection 620 of evaluated activities A and outcomes O (i.e., the evaluated activity-outcome set 620 ).
  • the behavior system 600 includes behaviors 610 that provide predictive modeling of the user 10 and allows the behaviors 610 to collaboratively decide on the activities A by evaluating the activities A and/or the corresponding possible outcomes O of activities A,
  • a behavior 610 may use the inputs 210 , the collective user state 420 , the preferences P, P 1 -P n in the user profile 14 of the user 10 , any additional sensory feedback of the user 10 , and/or any relevant information from data sources 130 to evaluate each activity A and/or its predicted outcome(s) O, and therefore provide evaluation feedback on the allowable activities A of the user 10 .
  • the behaviors 610 may be pluggable into the behavior system 600 (e.g., residing inside or outside of a software application), such that they can be added and removed without having to modify the behavior system 600 .
  • Each behavior 610 is a standalone policy. To make behaviors 610 more powerful, it is possible to attach the output of one or more behaviors 610 together into the input of another behavior 610 .
  • a behavior 610 may model a human behavior and/or a goal oriented task.
  • Example behaviors 610 include, but are not limited to, an eating behavior 610 a, a happiness behavior 610 b (e.g., a pursuit of happiness), a retail shopping behavior 610 c, a grocery shopping behavior 610 d, a sports behavior 610 e, a love behavior 610 f, a work behavior 610 g, a leisure behavior 610 h, etc.
  • Behaviors 610 may model psychological decision making of humans. Moreover, the behaviors 610 may be configurable. In some examples, the user 10 may set a preference P to configure or bias one or more behaviors 610 to evaluate activities A and/or outcomes O toward that bias. In some examples, the user 10 can set a preference P to have the search system 300 aid the user 10 in making better choices (e.g., choices toward a healthier lifestyle). For example, the user 10 may set a preference P to bias one or more behaviors 610 to evaluate activities A and/or outcomes O that help the user 10 live a healthier lifestyle (e.g., in terms of diet, exercise, relationships, work, etc.).
  • a healthier lifestyle e.g., in terms of diet, exercise, relationships, work, etc.
  • a behavior 610 may have one or more objectives that it uses when evaluating activities A and/or outcomes O.
  • the behavior 610 may execute a scoring algorithm or model that evaluates outcomes O against the one or more objectives.
  • the behavior 610 may score outcomes O fulfilling the objective(s) higher than other outcomes O that do not fulfill the objective(s).
  • the outcome evaluation may be weighted. For example, an eating behavior 610 a may evaluate an activity A based on whether the predicted outcome O will make the user 10 less hungry.
  • the outcome evaluation may be weighted based on a user state of hunger and on the likelihood of fulfilling the Objective of making the user 10 less hurry.
  • the eating behavior 610 a may evaluate a first activity A 1 of going to a restaurant to eat pizza more favorably than a second activity A 2 of going to the cinema, because a predicted first outcome O 1 of going to a restaurant to pizza will more likely have an outcome O of satisfying a user state of hunger than going to the cinema, even though a predicted second outcome O 2 for the second activity A 2 of going to the cinema may include eating popcorn.
  • a behavior 610 may optionally base its evaluations E on preferences P, P 1 -P n , in the user profile 14 of the user 10 .
  • the eating behavior 610 a may evaluate a third activity A 3 of going to LOU MALNATIS® (a registered trademark of Lou Malnatis, Inc.) to eat pizza more favorably than the first activity A 1 of going to PIZZA HUT® (a registered trademark of Pizza Hut, Inc.) to eat pizza, when a first preference P 1 in the user profile 14 indicates that LOU MALNATIS pizza is the user's favorite brand of pizza. Therefore, a behavior 610 may use the one or more objectives of that behavior 610 in combination with one or more preferences P, P 1 -P n , of the user profile 14 of the user 10 to evaluate activities A and/or outcomes O of those activities A.
  • the activity-outcome evaluation E of one behavior 610 may be used by another behavior 610 when evaluating the corresponding activity A and/or outcome O.
  • a happiness behavior 61 Ob may evaluate the third activity A 3 of going to eat LOU MALNATIS pizza more favorably based the favorable evaluation of the eating behavior 610 a and on the corresponding predicted outcome O 3 that eating pizza will make the user 10 more happy (e.g., versus sad).
  • the collective user state 420 may indicate that the user 10 is cold, based on sensor data 212 of a sensor 208 , and the happiness behavior 610 b may evaluate the third activity A 3 of going to eat LOU MALNATIS pizza even more favorably based on the predicted outcome O3 that eating pizza will make the user 10 warmer and therefore happier. Therefore, the behavior system 600 may execute many combinations of evaluations by behaviors 610 (some in parallel or some in series) based on prior evaluations, preferences P, etc.
  • each behavior 610 may optionally decide whether or not it wants to participate in evaluating any activities A in the activity-outcome set 520 .
  • the eating behavior 610 a may opt out of evaluating the activities A and outcomes O.
  • the eating behavior 610 a may evaluate activities A having predicted outcomes O of making the user 10 more full as undesirable (e.g., a poor evaluation or a low score).
  • Different inputs/user state indicators 210 can trigger different behaviors 610 , 610 a - n .
  • a behavior 610 may persist for a duration of time.
  • a behavior 610 has a state 612 and exists in an active state or an inactive state.
  • Certain types of inputs 210 may pertain to certain types of behaviors 610 .
  • One or more input types/user state indicator types 216 may be associated with each behavior 610 .
  • each behavior 610 may have an associated collection of input types 216 that the behavior 610 finds pertinent to its operation. For example, an input type 216 of hunger level for a user-defined input 210 of hunger having a scale (e.g. 1-10) indicating a level of hunger can be related to an eating behavior 610 a.
  • Another input type 216 that may be associated with the eating behavior 610 a is proximity (which may be strongly typed as a distance in miles) for an input 210 of distance to a nearest restaurant.
  • the search system 300 e.g., in particular, the behavior system 600
  • receives an input 210 of a type 216 associated with a behavior 610 the receipt of that input 210 may trigger activation of the behavior 610 .
  • the receipt of the input 210 may cause a behavior 610 to change state 612 from an inactive state to an active state.
  • the number of those inputs 210 has a direct correlation to an influence of the behavior 610 .
  • the greater the number of received inputs 210 having a type 216 associated with the behavior 610 the greater the influence I of that behavior 610 .
  • Evaluations of predicted outcomes O of a behavior 610 may be weighted based on the influence I of the behavior 610 .
  • the evaluation E can be a number, which is multiplied by the influence I (e.g., a number).
  • behaviors 610 with greater influence have a relatively greater influence on the selection of an activity A.
  • the influence I is a count.
  • the behavior system 600 increments a value of the influence I of each behavior 610 that has associated therewith the input type 216 of the received input 210 .
  • the behavior system 600 may include an input type filter 602 that receives the inputs 210 identifies which behaviors 610 , if any, are associated with the input type 216 of the input 210 and increment the influence I of the affected behavior(s) 610 .
  • each behavior 610 has an associated duration D. Receipt of an input 210 having a type 216 associated with the behavior 610 commences an input timer 614 set for a duration of time associated with the input 210 or the input type 216 . When the input timer 614 expires, the behavior system 600 decrements the influence I of the behavior 610 (which was previously incremented for that input 210 ). Alternatively or additionally, the behavior system 600 may decrement the influence I of each behavior 610 every threshold period of time. When the influence I of a behavior 610 is zero, the behavior 610 changes state 612 from the active state to the inactive state.
  • the behavior system 600 receives an input 210 having an input type 216 associated with an inactive behavior 610 , the behavior system 600 increments the influence I of that behavior 610 , causing the behavior 610 to have an influence I greater than zero, which causes the behavior 610 to change state 612 from the inactive state to the active state. Once in the active state, the behavior 610 can participate in evaluating predicted outcomes O of activities A and/or the activities A themselves.
  • Behaviors 610 may evaluate activities A and/or predicted outcomes O of activities A. By evaluating both an activity A and the predicted outcomes O of the activity A, the behavior 610 offers a multi-pronged evaluation E. For example, while the behavior 610 may positively evaluate an activity A, it may negatively evaluate one or more of the predicted outcomes O of that activity A. As an illustrative example, if the behavior system 600 receives inputs 210 indicating that the user 10 is outdoors and on a street, then a sports behavior 610 e may positively evaluate an activity A to ride a bicycle. If additional inputs 210 indicate that the user 10 is on a very busy street, then the sports behavior 610 e may negatively evaluate a predicted outcome O of getting hit by a car.
  • a behavior 610 evaluates activities A and/or predicted outcomes O of activities A positively when the activity A has a type associated with the behavior 610 , and negatively when the activity A has a type not associated with the behavior 610 .
  • the behavior system 600 may reference behavior-activity associations stored in non-transitory memory 130 .
  • the behavior-activity associations may have several nested layers (e.g., associations in a nested arrangement).
  • the activity selector 700 receives the evaluated activity-outcome set 620 from the behavior system 600 and determines the collection 720 of one or more selected activities A, A 1 -A j (i.e., the selected activity set 720 ).
  • the activity selector 700 executes an activity selection routine that searches for the best activity(s) A, A 1 -A j given the evaluations E 1 -E n of their corresponding outcomes O, O 1 -O n by all of the participating active behaviors 610 , 610 a - n .
  • the activity selector 700 calculates one or more preferred outcomes O, O 1 -O n , based on the outcome evaluations E, E 1 -E n , of the behaviors 610 and selects one or more corresponding activities A, A 1 -A j for the selected activity set 720 .
  • the activity selector 700 may optionally send the selected activity set 720 to the activities system 500 (e.g., to the activity model 510 ) as feedback.
  • the activity selector 700 assesses the evaluations E, E 1 -E n of the possible outcomes O, O 1 -O n of the activities A, A 1 -A j and determines a combination of activities A, A 1 -A j that provides a combined outcome O.
  • the combined outcome O may achieve higher user stratification than any single individual outcome O.
  • the activity selector 700 may select the combination of activities A, A 1 -A j having the determined combined outcome O as the selected activity set 720 . For example, if the inputs 210 indicate that the user 10 is hungry and likely seeking entertainment, a combined outcome O of both eating and watching a show may be very favorable. Therefore, a combined action may be going to a dinner-theater event that includes eating and watching a show.
  • the search system 300 sends search results 230 to the user device 200 , in response to the search query 220 .
  • the search results 230 include one or more result records 232 , which include information about or pertaining to the selected activity set 720 .
  • the search results 230 may be a recordset that includes a result record 232 for each selected activity A.
  • the result record 232 may include a description 234 of the corresponding selected activity A (referred to as an activity description) that identifies the activity A and how to experience the activity A.
  • the activity description 234 includes an activity name 234 a, an activity description 234 b, a link 234 c (e.g., a uniform resource locator (URL) or other type or resource locator for accessing a. webpage, an application, etc.), display data 234 d, and/or other data related to the activity A, such as an evaluation score 234 e (e.g., by the activity selector 700 ), a popularity score 234 f (e.g., retrieved from a data source 130 ).
  • the activity description 234 b may include a textual description of the activity A and/or location information (e.g., geolocation coordinates, a textual street location, etc.) for the activity A.
  • the activity description 234 may include information explaining why the search system 300 chose a particular activity A. For example, the activity description 234 may explain that the search system 300 chose an activity A related to eating, because a majority of the inputs 210 indicated that the user 10 was very hungry and close in proximity to a favorite restaurant (e.g., as indicated by a user preference P).
  • the search application 206 b executing on the user device 200 , generates a result view 800 based on the received search results 230 and displays the result view 800 in the GUI 250 .
  • the result view 800 includes one or more activity messages 810 corresponding to each result record 232 in the search results 230 .
  • the search application 206 b displays a message 254 in the GUI 250 prompting the user 10 to shake the user device 200 to receive a suggested activity A.
  • the search application 206 b receives an input 210 from the IMU 208 d of the user device 200 indicating that the user 10 is shaking the user device 200 back and forth.
  • the search application 206 b may send the query request 220 to the search system 300 to receive search result(s) 230 for display in the 250 .
  • the search application 206 b may display a result view 800 in the GUI 250 that shows one or more activity messages 810 .
  • the result view 800 , 800 a includes an activity message 810 that includes the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f from the corresponding result record 232 .
  • the result view 800 may also include a result view selector 820 having icons 822 a - n corresponding to alternative result views 800 , 800 a - n .
  • the search application 206 b displays the corresponding result view 800 a - n.
  • the user device 200 may launch a corresponding software application 206 (e.g., a native application or a web-browser application) referenced by the link 234 c and perform one or more operations indicated in the link 234 c and/or the display data 234 d.
  • the link 234 c may include a URI, having query string containing data to be passed to the software application 206 or software running on a remote server 112 (e.g., the query string may contain name/value pairs separated by delimiters, such as ampersands).
  • the link 234 c may include a string (e.g., a query string) that includes a reference to the native application 206 and indicates one or more operations for the user device 200 to perform.
  • a string e.g., a query string
  • the user device 200 launches the native application 206 referenced in the link 234 c and performs the one or more operations indicated in the link 234 c.
  • the links application 206 is not installed on the user device 200 , the link 234 c may direct the user 10 to a location (e.g., a digital distribution platform 130 b ) where a native application 206 can be downloaded.
  • the link 234 c may include a string e.g., a query string) that includes a reference to a web resource (e.g., a page of a web application/website).
  • a web resource e.g., a page of a web application/website.
  • the link 234 c may include a URL (i.e., a web address) used with hypertext transfer protocol (HTTP).
  • HTTP hypertext transfer protocol
  • the search application 206 b may display the search results 230 to the user 10 in a variety of different ways, depending on what information is transmitted to the user device 200 . Moreover, the search application 206 b may display the search results 230 in the GUI 250 based on the display data 234 d.
  • the display data 234 d may include text, images, layout information, a display template, a style guide (e.g., style sheet), etc.
  • a result view 800 , 800 b may include a map 830 having a user icon 832 indicating a current location of the user device 200 on the map 830 and the one or more activity results 810 in their corresponding locations 834 on the map 830 .
  • the user 10 can view information from the corresponding result record 232 displayed in the activity result 810 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f ).
  • the link 234 c may include a link display name as well as the underlying resource locator.
  • the search application 206 b may display the search results 230 to the user 10 in a results view 800 , 800 c that includes a list view 840 of the result records 232 (e.g., in a tabular form). Moreover, the search application 206 b may arrange the result records 232 in order based on their evaluation score 234 e and/or the popularity score 234 f.
  • the search application 206 b displays the result records 232 in a table grid, and in other examples, the search application 206 b displays the result records 232 in a tree-grid (as shown), grouping result records 232 under separate parent nodes by a category or other grouping.
  • FIG. 8D is a schematic view of the user device 200 displaying a result view 800 , 800 d that includes a select-a-door view 850 .
  • the select-a-door view 850 displays doors 852 , where each door 852 corresponds to a hidden result record 232 .
  • the select-a-door view 850 includes first, second, and third doors 852 a - c , but any number of doors 852 may be shown.
  • the search application 206 b allows the user 10 to select one door 852 .
  • the search application 206 b displays an activity message 810 including information of the result record 232 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f ) corresponding to the selected door 852 .
  • information of the result record 232 e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f .
  • FIG. 8E is a schematic view of the user device 200 displaying an example result view 800 , 800 d that includes a spin-the-wheel view 860 .
  • the spin-the-wheel view 860 displays a wheel 862 having an enumeration of results records 232 from the search results 230 .
  • the wheel 862 includes eight numbers corresponding to eight results records 232 , but any number of results records 232 can be enumerated using number, letters, pictures, or other identifiers.
  • the search application 206 b randomly selects one of the enumerated result records 232 and displays an activity message 810 including information of the selected result record 232 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f ).
  • information of the selected result record 232 e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f .
  • the user 10 can enter feedback in the GUI 250 of the search application 206 b, so that the search system 300 can learn whether the suggested activities A were well-received by the user 10 .
  • the search system 300 can use the user feedback for future activity selections.
  • FIG. 9 provides example arrangements of operations for a method 900 of performing a search.
  • the method 900 is described with respect to the user device 200 and the search system 300 as illustrated in FIG. 2B .
  • the method 900 includes receiving, at a computing device 202 , 112 , inputs 210 indicative of a user state of the user 10 .
  • the inputs 210 include sensor inputs from one or more sensors 208 in communication with the computing device 202 , 112 and/or user inputs received from a graphical user interface 250 displayed on a screen 240 in communication with the computing device 202 , 112 .
  • the inputs 210 may include biometric data 212 of the user 10 and environmental data 214 regarding a surrounding of the user 10 .
  • the method 900 includes determining, using the computing device 112 , a collective user state 420 based on the received inputs 210 .
  • the method 900 includes determining, using the computing device 202 , 112 , one or more possible activities A, A 1 -A j of a user 110 and optionally one or more predicted outcomes O, O 1 -O n for each activity A, A 1 -A j based on the collective user state 420 .
  • the method 900 further includes, at block 908 , executing, at the computing device 202 , 112 , one or more behaviors 610 that evaluate the one or more possible activities A, A 1 -A j and/or optionally the corresponding one or more predicted outcomes O, O 1 -O n .
  • Each behavior 610 models a human behavior and/or a goal oriented task.
  • the method 900 includes selecting, using the computing device 202 , 112 , one or more activities A, A 1 -A j based on the evaluations E, E 1 -E n of the one or more possible activities A, A 1 -A j and/or the corresponding one or more predicted outcomes O, O 1 -O n ; and, at block 912 , the method 900 includes sending results 230 including the selected one or more activities A, A 1 -A j from the computing device 202 , 112 to the screen 240 for display on the screen 240 .
  • the method 9 . 00 includes querying one or more remote data sources 130 in communication with the computing device 202 , 112 to identify possible activities A, A 1 -A j and/or predicted outcomes O, O 1 -O n .
  • the method 900 may include determining, using the computing device 202 , 112 , the one or more possible activities A, A 1 -A j and the one or more predicted outcomes O, O 1 -O n for each activity A based on one or more preferences P 1 -P n of the user 10 .
  • Each behavior 610 may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves an objective of the behavior 610 .
  • the eating behavior 610 a may positively evaluate an eating activity; whereas the sports behavior 610 e may negatively evaluate the eating activity.
  • each behavior 610 may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves a user preference P 1 -P n .
  • a first behavior 610 evaluates an activity A or a corresponding outcome O based on an evaluation E by a second behavior 610 of the activity A or the corresponding outcome O. This allows evaluations E of one behavior 610 to be based on evaluations E of another behavior 610 .
  • Each behavior 610 may elect to participate or not participate in evaluating the one or more activities A, and/or the one or more predicted outcomes O, O 1 -O n for each activity A based on the collective user state 420 .
  • the method 900 may include incrementing an influence value I associated with the behavior 610 .
  • the input 210 may be related to the behavior 610 when the input 210 is of an input type associated with the behavior 610 .
  • the evaluations E of each behavior 610 can be weighted based on the influence value I of the corresponding behavior 610 .
  • the method 900 may include decrementing the influence value I of each behavior 610 after a threshold period of time. When an influence value I equals zero, the method 900 may include deactivating the corresponding behavior 610 . Any behaviors 610 having an influence value I greater than zero may participate in evaluating the activities A or the corresponding outcomes O; and any behaviors 610 having an influence value I equal to zero may not participate in evaluating the activities A or the corresponding outcomes O.
  • the method 900 includes selecting for the results 230 a threshold number of activities A having the highest evaluations E or a threshold number of activities A having corresponding predicted outcomes O that have the highest evaluations
  • the method 900 may include combining selected activities A and sending a combined activity A in the results 230 .
  • the computing device 202 , 212 may include a user computer processor 202 of a user device 200 including the screen 240 and/or one or more remote computer processors 112 in communication with the user computer processor 202 .
  • the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • FIG. 10 is schematic view of an example computing device 1000 that may be used to implement the systems and methods described in this document.
  • the computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
  • the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • the computing device 1000 includes a processor 1010 , memory 1020 , a storage device 1030 , a high-speed interface/controller 1040 connecting to the memory 1020 and high-speed expansion ports 1050 , and a low speed interface/controller 1060 connecting to low speed bus 1070 and storage device 1030 .
  • Each of the components 1010 , 1020 , 1030 , 1040 , 1050 , and 1060 are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
  • the processor 1010 can process instructions for execution within the computing device 1000 , including instructions stored in the memory 1020 or on the storage device 1030 to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display 1080 coupled to high speed interface 1040 .
  • GUI graphical user interface
  • multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
  • multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
  • the memory 1020 stores information non-transitorily within the computing device 1000 .
  • the memory 1020 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s).
  • the non-transitory memory 1020 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device 1000 .
  • non-volatile memory examples include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs).
  • volatile memory examples include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes.
  • the storage device 1030 is capable of providing mass storage for the computing device 1000 .
  • the storage device 1030 is a computer-readable medium.
  • the storage device 1030 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
  • a computer program product is tangibly embodied in an information carrier.
  • the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
  • the information carrier is a computer- or machine-readable medium, such as the memory 11020 , the storage device 1030 , or memory on processor 1010 .
  • the high speed controller 11040 manages bandwidth-intensive operations for the computing device 1000 , while the low speed controller 1060 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only.
  • the high-speed controller 1040 is coupled to the memory 1020 , the display 1080 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 1050 , which may accept various expansion cards (not shown).
  • the low-speed controller 1060 is coupled to the storage device 1030 and low-speed expansion port 1070 .
  • the low-speed expansion port 1070 may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • the computing device 1000 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1000 a. or multiple times in a group of such servers 1000 a , as a laptop computer 1000 b, or as part of a rack server system 1000 c.
  • implementations of the systems and techniques described here can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
  • ASICs application specific integrated circuits
  • These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • Implementations of the subject matter and the functional operations described. in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
  • subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus.
  • the computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them.
  • data processing apparatus encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers.
  • the apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
  • a propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
  • a computer program (also known as an application, program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
  • a computer program does not necessarily correspond to a file in a file system.
  • a program can 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 document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
  • a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
  • the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output.
  • the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
  • processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
  • a processor will receive instructions and data from a read only memory or a random access memory or both.
  • the essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data.
  • a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
  • mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
  • a computer need not have such devices.
  • a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few.
  • Computer readable media 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, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., 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.
  • one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
  • Other kinds of devices can be used to provide interactivity with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile
  • One or more aspects of the disclosure can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend 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 in this specification, or any combination of one or more such backend, middleware, or frontend 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 a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks),
  • LAN local area network
  • WAN wide area network
  • inter-network e.g., the Internet
  • peer-to-peer networks e.g., ad hoc peer-to-peer networks
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication 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.
  • a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device).
  • client device e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device.
  • Data generated at the client device e.g., a result of the user interactivity

Abstract

A method includes receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors, application inputs received from one or more software applications, and user inputs received from a graphical user interface. The method includes determining possible information for the user based on the received inputs and executing behaviors having corresponding objectives. Each behavior is configured to evaluate the possible information based on whether the possible information is related to the corresponding objective. The method further includes selecting suggested information from the possible information based on evaluations of one or more behaviors for presentation to the user.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This U.S. patent application is a continuation of, and claims priority under 35 U.S.C. §120 from, U.S. patent application Ser. No. 14/514,869, filed on Oct. 15, 2014 (to issue as U.S. Pat. No. 9,058,563 on Jun. 16, 2015), which is hereby incorporated by reference in its entirety.
  • TECHNICAL FIELD
  • This disclosure relates to suggesting information to a user based on an assessment of the user's current state.
  • BACKGROUND
  • The use of mobile devices, such as smartphones, tablet PCs, cellular telephones, or portable digital assistants, has become widespread. At their inception, mobile devices were mainly used for voice communication, but recently they have become a reliable source for performing a range of business and personal tasks. Mobile devices are useful to obtain information by using a data connection to access the World Wide Web. The user may input a search query on a search engine website, using the mobile device, to obtain requested information. The information may relate to a location of a restaurant, hotel, shopping center, or other information. Users may use mobile devices for social media, which allows the users to create, share, or exchange information and ideas in virtual communities or networks. Social media depends on mobile and web-based technologies to allow people to share, co-create, collaborate on, discuss, and modify user-generated content.
  • SUMMARY
  • One aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on a screen in communication with the computing device. The method includes determining, using the computing device, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state. The method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the screen for display on the screen.
  • Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • In some implementations, the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results.
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices. The non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on a screen in communication with the one or more computing devices. The operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen.
  • In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • In some implementations, the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results.
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of each user of a group of users. The inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the computing device. The method includes determining, using the computing device, a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group) and determining one or more possible activities for group of users and one or more predicted outcomes for each activity based on the collective user states. The method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the one or more screens for display on the one or more screens.
  • Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of at least one user and environmental data regarding a surrounding of the at least one user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • In some implementations, the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results.
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices. The non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of each user of a group of users. The inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the one or more computing devices. The operations include determining a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group), determining one or more possible activities for the group of users and one or more predicted outcomes for each activity based on the collective user states, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the one or more screens for display on the one or more screens.
  • In some implementations, the inputs include biometric data of at least one user and environmental data regarding a surrounding of at least one user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well.
  • In some implementations, the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an Objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results.
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Yet another aspect of the disclosure provides a method that includes receiving, at a computing device, inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the computing device and/or user inputs received from a graphical user interface displayed on a screen in communication with the computing device. In response to receiving a trigger sensor input, the method includes determining, using the computing device, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state. The method includes executing, at the computing device, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the computing device, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the computing device to the screen for display on the screen.
  • Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. The trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device).
  • In some implementations, the method includes querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The method may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes.
  • In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results. The results may include one or more activity records, where each activity record includes an activity description and an activity location. The method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description.
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • Another aspect of the disclosure provides a system that includes one or more computing devices and non-transitory memory in communication with the one or more computing devices. The non-transitory memory stores instructions that, when executed by the one or more computing devices, cause the one or more computing devices to perform operations that include receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the one or more computing devices and/or user inputs received from a graphical user interface displayed on a screen in communication with the one or more computing devices. In response to receiving a trigger sensor input, the operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen.
  • In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. The trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device).
  • In some implementations, the operations include querying one or more remote data sources in communication with the computing device to identify possible activities and/or predicted outcomes. The operations may include determining, using the computing device, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior.
  • Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the computing device. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state.
  • When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the correspond outcomes.
  • In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results. The results may include one or more activity records, where each activity record includes an activity description and an activity location. The method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description,
  • The computing device may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims.
  • DESCRIPTION OF DRAWINGS
  • FIG. 1A is a schematic view of an example environment including a user device in communication with a search system.
  • FIG. 1B is a schematic view of an example environment including a user device in communication with a search system and data sources.
  • FIG. 2A is a schematic view of an example user device having one or more sensors.
  • FIG. 2B is a schematic view of an example user device in communication with a search system.
  • FIG. 3 is a schematic view of an example search system.
  • FIG. 4A is a schematic view of an example state analyzer receiving inputs from various sources.
  • FIG. 4B is a schematic view of an example user device displaying an example state acquisition view having multiple images grouped by categories for selection by the user.
  • FIG. 4C is a schematic view of an example user device displaying an example state acquisition view having two images and allowing the user to select one of the images.
  • FIG. 4D is a schematic view of an example user device displaying an example state acquisition view having menus and allowing the user to select one or more user state indicators.
  • FIG. 4E is a schematic view of an example user device displaying an example user preferences view.
  • FIGS. 5A and 5B are schematic views of an example activity system that generates possible activities and optionally predicted outcomes of those activities.
  • FIG. 6A is a schematic view of an example behavior system that evaluates activities and optionally predicted outcomes of those activities.
  • FIG. 6B is a schematic view of an example behavior system having several behaviors.
  • FIG. 6C is a schematic view of an example behavior system interacting with the activity system and an activity selector.
  • FIG. 7 is a schematic view of an example activity selector,
  • FIG. 8A is a schematic view of an example user device being shaken to initiate retrieval of a suggest activity for the user.
  • FIG. 8B is a schematic view of an example user device displaying an example result view having a map.
  • FIG. 8C is a schematic view of an example user device displaying an example result view having a tree-grid view.
  • FIG. 8D is a schematic view of an example user device displaying an example result view having a select-a-door view.
  • FIG. 8E is a schematic view of an example user device displaying an example result view having a spin-the-wheel view.
  • FIG. 9 is a schematic view of an exemplary arrangement of operations for suggesting an activity to one or more users.
  • FIG. 10 is schematic view of an example computing device that may be used to implement the systems and methods described in this document.
  • Like reference symbols in the various drawings indicate like elements.
  • DETAILED DESCRIPTION
  • FIG. 1A illustrates an example system 100 that includes a user device 200 associated with a user 10 in communication with a remote system 110 via a network 120. The remote system 110 may be a distributed system (e.g., cloud environment) having scalable/elastic computing resources 112 and/or storage resources 114. The user device 200 and/or the remote system 110 may execute a search system 300 and optionally receive data from one or more data sources 130. In some implementations, the search system 300 communicates with one or more user devices 200 and the data source(s) 130 via the network 120. The network 120 may include various types of networks, such as a local area network (LAN), wide area network (WAN), and/or the Internet.
  • Referring to FIG. 19, in some implementations, user devices 200 communicate with the search system 300 via the network 120 or a partner computing system 122. The partner computing system 122 may be a computing system of a third party that may leverage the search functionality of the search system 300. The partner computing system 122 may belong to a company or organization other than that which operates the search system 300. Example third parties which may leverage the functionality of the search system 300 may include, but are not limited to, internet search providers and wireless communications service providers. The user devices 200 may send search requests 220 to the search system 300 and receive search results 230 via the partner computing system 122. The partner computing system 122 may provide a user interface to the user devices 200 in some examples and/or modify the search experience provided on the user devices 200.
  • The search system 300 may use (e.g., query) the data sources 130 when generating search results 230. Data retrieved from the data sources 130 can include any type of data related to assessing a current state of the user 10. Moreover, the data retrieved from the data sources 130 may be used to create and/or update one or more databases, indices, tables (e.g., an access table), files, or other data structures of the search system 300.
  • The data sources 130 may include a variety of different data providers. The data sources 130 may include application developers 130 a, such as application developers' websites and data feeds provided by developers and operators of digital distribution platforms 130 b configured to distribute content to user devices 200. Example digital distribution platforms 130 b include, but are not limited to, the GOOGLE PLAY® digital distribution platform by Google, Inc., the APP STORE® digital distribution platform by Apple, Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation.
  • The data sources 130 may also include websites, such as websites that include web logs 130 c (i.e., blogs), review websites 130 d, or other websites including data related to assessing a state of the user 10. Additionally, the data sources 130 may include social networking sites 130 e, such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets). Data sources 130 may also include online databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants. Data sources 130 may also include additional types of data sources in addition to the data sources described above. Different data sources 130 may have their own content and update rate.
  • FIG. 2A illustrates an example user device 200 including a computing device 202 (e.g., a computer processor or data processing hardware) and memory hardware 204 (e.g., non-transitory memory) in communication with the computing device 202. The memory hardware 204 may store instructions for one or more software applications 206 that can be executed on the computing device 202. A software application 206 may refer to computer software that, when executed by the computing device 202, causes the computing device 202 to perform a task or operation. In some examples, a software application 206 may be referred to as an “application”, an “app”, or a “program”. When the computing device 202 executes a software application 206, the software application 206 may cause the computing device 202 to control the user device 200 to effectuate functionality of the software application 206. Therefore, the software application 206 transforms the user device 200 into a special purpose device that carries out functionality instructed by the software application 206, functionality not otherwise available to a user 10 without the software application 206. Example software applications 206 include, but are not limited to, an operating system 206 a, a search application 206 b, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and games. Applications 206 can be executed on a variety of different user devices 200. In some examples, applications 206 are installed on a user device 200 prior to a user 10 purchasing the user device 200. In other examples, the user downloads and installs applications 206 on the user device 200.
  • User devices 200 can be any computing devices capable of communicating with the search system 300. User devices 200 include, but are not limited to, mobile computing devices, such as laptops, tablets, smart phones, and wearable computing devices (e.g., headsets and/or watches). User devices 200 may also include other computing devices having other form factors, such as desktop computers, vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances),
  • The user device 200 may use any of a variety of different operating systems 206 a. In examples where a user device 200 is a mobile device, the user device 200 may run an operating system including, but not limited to, ANDROID® developed by Google Inc., IOS® developed by Apple Inc., or WINDOWS PHONE® developed by Microsoft Corporation. Accordingly, the operating system 206 a running on the user device 200 may include, but is not limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®. In an example where a user device is a laptop or desktop computing device, the user device may run an operating system including, but not limited to, MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., or Linux. User devices 200 may also access the search system 300 while running operating systems 206 a other than those operating systems 206 a described above, whether presently available or developed in the future.
  • In some implementations, e user device 200 includes one or more sensors 208 in communication with the computing device 202 and capable of measuring a quality, such as a biometric quality, of the user 10. The sensor(s) 208 may be part of the user device 200 (e.g., integrally attached) and/or external from (e.g., separate and remote from, but in communication with) the user device 200. Sensors 208 separate and remote from the user device may communicate with the user device 200 through the network 120, wireless communication, such as Bluetooth or Wi-Fi, wired communication, or some other form of communication. The computing device 202 receives biometric data 212 (e.g., sensor signals or bioinformatics) and/or environmental data 214 (e.g., sensor signals, data structures, data objects, etc.) from one or more sensors 208. Examples of biometric data 212 may include, but are not limited to, a temperature of the user 10, an image (e.g., 2D image, 3D image, infrared image, etc.) of the user 10, a fingerprint of the user 10, a sound of the user 10, a blood oxygen concentration of the user 10, a blood glucose level of the user 10, a skin PH of the user 10, a blood alcohol level of the user 10, an activity level of the user 10 (e.g., walking step count or other movement indicator), a wake-up time of the user 10, asleep time of the user 10, eating times, eating duration, eating type (e.g., meal vs. snack), etc. Examples of environmental data 214 may include, but are not limited to, a geolocation of the user device 200, a temperature, humidity, and/or barometric pressure about the user device 200, a weather forecast for a location of the user device 200, an image (e.g., 2D image, 3D image, infrared image, etc.) of a surrounding of the user device 200, a sound about the user 10, etc.
  • Example sensors 208 that may be included with the user device 200 include, but are not limited to, a camera 208 a (e.g., digital camera, video recorder, infrared imaging sensor, 3D volumetric point cloud imaging sensor, stereo imaging sensor, etc.), a microphone 208 b, geolocation device 208 c, an inertial measurement unit (IMU) 208 d (e.g., 3-axis accelerometer), a fingerprint reader 208 e, a blood oxygen meter 208 f, a PH meter 208 g, etc. The camera 208 a may capture image data indicative of an appearance of the user 10 and/or an environment or scene about the user 10. The microphone 208 b may sense audio of the user 10 and/or an environment or scene about the user 10. Example sensors 208 that may be separate from the user device 200 include a camera 208 a, a temperature sensor 208 h, a humidistat 208 i, a barometer 208 j, or any sensing device 208 n capable of delivering a signal to the user device 200 that is indicative of the user 10, a surrounding of the user 10, or something that can affect the user 10.
  • If the user device 200 does not include a geolocation device 208 c, the user device 200 may provide location data as an input 210 in the form of an interact protocol GP) address, which the search system 300 may use to determine a location of the user device 200. Any of the sensors 208 described as being included in the user device 200 may be separate from the user device 200, and any of the sensors 208 described as being separate from the user device 200 may be included with the user device 200.
  • FIG. 2B illustrates an example user device 200 in communication with the search system 300. In general, the user device 200 may communicate with the search system 300 using any software application 206 that can transmit a search request 220 to the search system 300 and receive search results 230 therefrom for display on a display 240 (e.g., screen or touch screen) in communication with the computing device 202 of the user device 200. In some examples, the user device 200 runs a native application 206 dedicated to interfacing with the search system 300; while in other examples, the user device 200 communicates with the search system 300 using amore general application 206, such as a web-browser application 206 accessed using a web browser.
  • In some implementations, the search application 206 b receives one or more inputs 210, such as biometric data 212 or environmental data 214 from the sensor(s) 208 and/or the user 10 via a graphical user interface (GUI) 250 and transmits a search request 220 based on the received inputs 210 to the search system 300. The search application 206 b may also receive platform data 218 form the user device 200 (e.g., version of the operating system 206 a, device type, and web-browser version), an identity of the user 10 of the user device 200 (e.g., a username), partner specific data, and/or other data and include that information in the search request 220 as well. The search application 206 b receives a search result set 230 from the search system 300, in response to submitting the search request 220, and optionally displays one or more result records 232 of the search results set 230 on the display 240 of the user device 200. In some implementations, the search request 220 includes a search query 222 containing a user specified selection a category, genre, or string). The search application 206 b may display a graphical user interface (GUI) 250 on the display 240 that may provide a structured environment to receive inputs 210 and display the search results 230, 232. In some implementations, the search application 206 b is a client-side application and the search system 300 executes on the remote system 110 as a server-side system.
  • FIG. 3 illustrates a function block diagram of the search system 300. The search system 300 includes a state analyzer 400 in communication with an activity system 500, which is in communication with a behavior system 600. The behavior system 600 is in communication with an activity selector 700. Each sub-system 400, 500, 600, 700 of the search system 300 can be in communication with each other. The state analyzer 400 receives one or more inputs 210 (also referred to as user state indicators) that are indicative of a state of the user 10 and determines a collective state 420 of the user 10 (referred to as the collective user state 420). The activity system 500 receives the inputs/user state indicators 210 and/or the collective user state 420 from the state analyzer 400 and determines a collection 520 of possible activities A, A1-An and corresponding outcomes O, O1-On, for the user 10 (referred to as an activity-outcome set 520). In some examples, the activity system 500 receives the inputs 210 directly from the user device 200. Moreover, the activity system 500 may receive the inputs 210 from the user device 200 instead of the collective user state 420 from the state analyzer 400 or just the collective user state 420 from the state analyzer 400 and not the inputs 210 from the user device 200. The behavior system 600 receives the activity-outcome set 520 from the state analyzer 400, evaluates each activity A based on its corresponding predicted outcome O, and provides a collection 620 of evaluated activities A, A1-An and optionally corresponding outcomes O, O1-On (referred to as an evaluated activity-outcome set 620). The activity selector 700 receives the evaluated activity-outcome set 620 from the behavior system 600 and determines a collection 720 of one or more selected activities A, A1-Aj (referred to as a selected activity set 720).
  • Referring to FIG. 4A, in some implementations, the state analyzer 400 receives one or more inputs/indicators 210 of the state of the user 10 (e.g., physical and/or emotional state) and determines the collective user state 420 of the user 10. The state analyzer 400 may combine the received user state indicators 210 to generate the collective user state 420. In additional implementations, the state analyzer 400 executes an algorithm on the received user state indicators 210 to generate the collective user state 420. The algorithm may logically group user state indicators 210 and select one or more groups of user state indicators 210 to generate the collective user state 420. Moreover, the state analyzer 400 may exclude user state indicators 210 logically opposed to other, more dominant user state indicators 210. For example, the state analyzer 400 may form a group of user state indicators 210 indicative of an emotional state of happiness and another on a state of hunger. For example, if the state analyzer 400 receives several user state indicators 210 (e.g., a majority) indicative of happiness and only a few or one (e.g., a minority) user state indicator 210 indicative of sadness, the state analyzer 400 may form a group of user state indicators 210 indicative of an emotional state of happiness, while excluding the minority user state indicators 210 indicative of an emotional state of sadness (since they're diametrically opposed).
  • In some implementations, the state analyzer 400 models the user 10 using the received user state indicator(s) 210 to generate the collective user state 420. Each received user state indicator 210 provides an aspect of the modeled user 10 as the collective user state 420. The state analyzer 400 may store the collective user state 420 in memory, such as the storage resources 11.4 of the remote system 110. In some examples, the state analyzer 400 generates and/or stores the collective user state 420 as an object, such as a Java script object notation (JSON) object, a metadata data object, structured data, or unstructured data. Other methods of storing the collective user state 420 are possible as well.
  • The input/user state indicator 210 may include any information indicative of the user's state of being, in terms of a physical state of being and/or an emotional state of being. Optional examples of a physical state may include, but are not limited to, date and/or time stamp 210 a (e.g., from the computing device 202 of the user device 200), a location 210 b of the user 10, a user-identified state indicator 210 c of a physical well-being of the user 10, and a sensed indicator 210 d. of a physical well-being of the user 10 (e.g., biometrics). The location 210 b of the user 10 may be a geolocation (e.g., latitude and longitude coordinates) of the user device 200, a description of the physical location of the user 10 in terms of landmarks and/or environmental descriptions, a description of a dwelling or building, a floor of the dwelling or building, a room of the dwelling or building, an altitude, etc. Examples of emotional states include, but are not limited to, user-identified state indicators 210 c of an emotional state of the user 10 and sensed indicators 210 d of a physical well-being of the user 10 (e.g., biometrics).
  • In some examples, the state analyzer 400 receives image inputs 210 of the user 10 from the camera 208 a and determines an emotional state of the user 10 based on the images 210 (and optionally other inputs 210). The state analyzer 400 can gauge whether the user 10 is angry, happy, sad, surprised, eating, moving, etc. based on the image inputs 210. The image inputs 210 may be considered as user-identified state indicators 210 c and/or sensed indicators 210 d.
  • The user device 200 may receive the user-identified state indicator 210 c from the user 10 through the GUI 250. The user-identified state indicator 210 c may include one or more selections of images and/or description indicative of different states of physical or emotional well-being or states of the user 10. In some examples, the user 10 can select one or more user-identified state indicators 210 c on the GUI 250 that correspond to a combination of different user state indicators 210. The search application 206 b may execute logic that disallows inconsistent selections. For example, the search application 206 b may not allow the user 10 to select user-identified state indicators 210 c of happy and sad at the same time.
  • The user state indicator 210 may optionally include user state indicators 210 of friends (referred to as friend state indicator 210 e) from the remote system 110 or a data source. The friend state indicator 210 e may be from any person having an identified association with the user 10. The user 10 may designate the associations of other people with their account and/or the state analyzer 400 may identify and designate other people as having an association with the user 10 based on the user state indicator 210 of other users 10 and/or authorized searching of email account(s), social networking account(s), or other online resources of the user 10.
  • The user state indicator 210 may optionally include a partner metric 210 f (e.g., available funds from a banking institution) received from the user device 200 (e.g., as a user input) and/or from a remote data source 130 (e.g., a linked hack account). The partner entities may be data sources 130 that provide information relative the user's state. For example, a mobile payment plan can provide mobile payment information, such as a purchase time, purchase location, store entity, goods purchased, purchase amount, and/or other information, which the search system 300 can use to determine the user collective state 420. Moreover, the activity system 500 may use partner metrics 210 f to suggest activities A and predict outcomes O, the behavior system 600 may use partner metrics 210 f to evaluate the activities A and predicted outcomes O, and the activity selector 700 may use partner metrics 210 f to select one or more activities A.
  • Similarly, the user state indicator 210 may optionally include a user schedule 210 g received from the user device 200 (e.g., as a user input) and/or from a remote data source 130 (e.g., a linked scheduler or partner system 122). The schedule may be related to eating, exercise, work, to-do list, etc.
  • Referring to FIGS. 4B-4C, in some implementations, the search application 206 b displays a state acquisition view 260 having a collection 270 of images 272, 272 a-n (e.g., a tiling of pictures) in the GUI 250 and prompts the user 10 to select the image 272 most indicative of a current state of the user 10 (e.g., a user state indicator 210). The images 272 may depict a variety of possible user states, such as happy or sad, hungry of full, energetic or lethargic, etc. The selected image 272 may be a user state indicator 210. Additionally or alternatively, the GUI 250 may display one or more images 272, 272 a-n and prompts the user 10 to tag the images 272, 272 a-n with a corresponding user state. As the user 10 tags the images 272, 272 a-n, the search system 300 learns the user's preferences and/or state.
  • In the example shown in FIG. 4B, the search application 206 b may group the images 272 (e.g., by a category) into one or more groups 274, 274 a-n and display the one or more groups 274, 274 a-n in the GUI 250. The user 10 may scroll through the images 272 in each group 274 and select an image 272 most indicative of a current state of the user 10. For example, the search application 2066 may display each group 274 of images 272 as a linear or curved progression (e.g., a dial), such that the user 10 can swipe across the screen 240 to move the linear progression or rotate the curve progression of images 272 onto and off the screen 240. The user 10 may scroll through each group 274, 274 a-n of images 272, 272 a-n and position a selected image 272 in a selection area 266 (e.g., selection box). The search application 206 b may alter the selected image 272 or otherwise designate the selected image 272 as being selected. For example, the search application 206 b may change the image 272 into another related image 272 or animate the image 272 (e.g., video). The search application 206 b may highlight the selected image 272 or provide a visual or audio cue of the selection. In some examples, the search application 206 b displays a gauge 268 indicating a level of discernment of the user's current state based on the number and/or type of images 272, 272 a-n currently selected in the collection 270 of images 272, 272 a-n. The search application 206 b may indicate a threshold number of images 272, 272 a-n that the user 10 should select before proceeding to obtain a suggested activity A.
  • In the example shown in FIG. 4C, the search application 206 b may display a state acquisition view 260 having first and second images 272 a, 272 b in the GUI 250 and prompt the user 10 to select the image 272 most indicative of a current state of the user 10 (e.g., a user state indicator 210). When the user 10 selects one of the images 272 a, 272 b, the search application 206 b may display two more images 272 in the GUI 250 and prompt the user 10 to select the image 272 most indicative of his/her current state, and continue recursively for a threshold period of time or until the user 10 selects a threshold number of images 272. The search application 206 b may display a gauge 268 indicating a level of discernment of the user's current state based on the number and/or type of images 272, 272 a-n selected. Moreover, the search application 206 b may, in some instances, not allow the user 10 to proceed to receive a suggested activity A until the search application 206 b and/or the search system 300 has ascertained a threshold level of discernment of the user's current state based on the number and/or type of images 272, 272 a-n selected. For example, the search application 206 b may display a first image 272 a showing a person eating to illustrate a hungry state and a second image 272 b showing a person full with a finished dinner plate to illustrate a full or not hungry state. In other examples, the search application 206 b may display a first image 272 a showing a person running to illustrate an inkling to go running and a second image 272 b showing a person sitting or resting to illustrate an inkling to sit and rest. The user 10 may continue to select one of two images 272 until the gauge 268 indicates a threshold level of discernment of the user's current state or until the user 10 selects a query element 252 displayed in the GUI 250, at which point the search application 206 b sends the query request 220 to the search system 300 to receive search result(s) 230 for display in the GUI 250.
  • Referring to FIG. 4D, in some implementations, the search application 206 b displays a state acquisition view 260 having one or more menus 280 (e.g., categories of user state indicators 210). Each menu 280 may have one or more sub-menus 282 that further group or categories user state indicators 210. The user 10 may swipe across the screen 240 of the user device 200 in a non-linear path 286 (e.g., step like fashion) to navigation the menus 282, 284 to select a user state indicator 210 most indicative of the user's current state. The user 10 may continue to navigate the menus 282, 284 to select user state indicators 210 until the gauge 268 indicates a threshold level of discernment of the user's current state or until the user 10 selects the query element 252 displayed in the GUI 250, at which point the search application 206 b sends the query request 220 to the search system 300 to receive search result(s) 230 for display in the GUI 250.
  • Referring to FIG. 4E, in some implementations, the search application 206 b displays a preferences view 290 that allows the user 10 to set and modify user preferences P, P1-Pn. The search system 300 may use the user preferences P1-Pn for generating search results 230. For example, the activity system 500 may use the user preferences P1-Pn, for identifying possible activities A. Moreover, the behavior system 600 may use the user preferences P1-Pn for evaluating the possible activities A (and optionally any corresponding predicted outcomes O). When the user 10 selects a preference P1-Pn, the search application 206 b may display an edit preference view 292 that allows the user 10 to modify the selected preference P1-Pn. In the example shown, when the user 10 selects a second preference P2, corresponding to a sports preference, the search application 206 b may display an edit preference view 292 customized to allow the user 10 to modify the selected preference P1-Pn. Example preferences may include, but are not limited to, preferred eating times, eating duration, dining preferences (e.g., food types, restaurants, restaurant types, eating locations), leisure activities, cinema preferences, theaters, theater show types, to-do lists, sports activities, shopping preferences (e.g., stores, clothing types, price ranges), allowable purchase ranges for different types of goods or services, disposable income, personality type, etc. In some implementations, the user 10 may select an auto-populate preferences icon 294 to cause the search application 206 b and/or the search system 300 to populate the preferences P1-Pn based on previous inputs 210 and/or selected activities A of the user 10 (e.g., stored in non-transitory memory 114). After auto-populating the preferences P1-Pn, the user 10 may further customize the preferences P1-Pn using the preferences view 290.
  • Referring to FIG. 5A, in some implementations, the activity system 500 receives the collective user state 420 from the state analyzer 400, applies the collective user state 420 to an activity model 510 and determines the collection 520 of possible activities A, A1-An and corresponding outcomes O, O1-On for the user 10 (i.e., the activity-outcome set 520). The activity system 500 may use a user profile 14 of the user 10 to determine the activity-outcome set 520. A data source 130 (e.g., data store, non-transitory memory, a database, etc) in communication with the activity system 500 may store the user profile 14, possible activities A, and/or possible outcomes O. For example, the activity system 500 may identify one or more preferences P1-Pn of the user 10 from the user profile 14 for use with the activity model 510 to determine the activity-outcome set 520. The activity system 500 may optionally query one or more data sources 130 or the storage resources 114 of the remote system 110 for data on possible activities A and/or corresponding outcomes O. In some examples, the activity system 500 simulates each activity A, using the activity model 510, over a time horizon in the future to predict a corresponding outcome O, optionally using results 534 queried from the data source(s) 130.
  • Referring also to FIG. 5B, in some implementations, the activity system 500 includes an activity generator 530 that generates possible activities A based on the received inputs 210 (and/or collective user state 420) and an outcome generator 540 that generators the set 520 of possible outcomes O for each activity A. The activity generator 530 may generate an activity search query 532 based on the inputs 210 and a type 216 of each input 210 and query the data source(s) 130 to obtain results 534, which the activity generator 530 can use to determine one or more possible activities A. For example, an input 210 may be a global positioning system (GPS) coordinate having an input type 216 of location. The input type 216 may be strongly typed to accept coordinate values as the corresponding input 210. An activity search query 532 may include criteria to seek possible activities A within a threshold distance of the location. Moreover, the threshold distance may be based on the location.
  • In some implementations, the activity generator 530 seeks activities A relevant to active behaviors 610. The activity generator 530 may identify all or a sub-set of the active behaviors 610 and then seek activities A that each behavior 610 can evaluate positively. For example, if a sports behavior 610 e is active, then the activity generator 530 may seek possible activities A related to sports.
  • After the activity generator 530 generates a collection of possible activities A, the outcome generator 540 generates a collection of one or more predicted outcomes O for each activity A. In some implementations, the outcome generator 540 retrieves possible outcomes O from a data store storing outcomes O for various activities A. For example, the outcome generator 540 may query the data source(s) 130 for possible outcomes O matching a criteria indicative of the activity A. The data source(s) 130 may include databases, partner systems 122, and other sources of information.
  • Referring to FIGS. 6A-6C, in some implementations, the behavior system 600 receives the activity-outcome set 520 from the activity system 500, evaluates each activity Abused on its corresponding predicted outcome O, and provides the collection 620 of evaluated activities A and outcomes O (i.e., the evaluated activity-outcome set 620). The behavior system 600 includes behaviors 610 that provide predictive modeling of the user 10 and allows the behaviors 610 to collaboratively decide on the activities A by evaluating the activities A and/or the corresponding possible outcomes O of activities A, A behavior 610 may use the inputs 210, the collective user state 420, the preferences P, P1-Pn in the user profile 14 of the user 10, any additional sensory feedback of the user 10, and/or any relevant information from data sources 130 to evaluate each activity A and/or its predicted outcome(s) O, and therefore provide evaluation feedback on the allowable activities A of the user 10. The behaviors 610 may be pluggable into the behavior system 600 (e.g., residing inside or outside of a software application), such that they can be added and removed without having to modify the behavior system 600. Each behavior 610 is a standalone policy. To make behaviors 610 more powerful, it is possible to attach the output of one or more behaviors 610 together into the input of another behavior 610.
  • A behavior 610 may model a human behavior and/or a goal oriented task. Example behaviors 610 include, but are not limited to, an eating behavior 610 a, a happiness behavior 610 b (e.g., a pursuit of happiness), a retail shopping behavior 610 c, a grocery shopping behavior 610 d, a sports behavior 610 e, a love behavior 610 f, a work behavior 610 g, a leisure behavior 610 h, etc.
  • Behaviors 610 may model psychological decision making of humans. Moreover, the behaviors 610 may be configurable. In some examples, the user 10 may set a preference P to configure or bias one or more behaviors 610 to evaluate activities A and/or outcomes O toward that bias. In some examples, the user 10 can set a preference P to have the search system 300 aid the user 10 in making better choices (e.g., choices toward a healthier lifestyle). For example, the user 10 may set a preference P to bias one or more behaviors 610 to evaluate activities A and/or outcomes O that help the user 10 live a healthier lifestyle (e.g., in terms of diet, exercise, relationships, work, etc.).
  • A behavior 610 may have one or more objectives that it uses when evaluating activities A and/or outcomes O. The behavior 610 may execute a scoring algorithm or model that evaluates outcomes O against the one or more objectives. The behavior 610 may score outcomes O fulfilling the objective(s) higher than other outcomes O that do not fulfill the objective(s). Moreover, the outcome evaluation may be weighted. For example, an eating behavior 610 a may evaluate an activity A based on whether the predicted outcome O will make the user 10 less hungry. Moreover, the outcome evaluation may be weighted based on a user state of hunger and on the likelihood of fulfilling the Objective of making the user 10 less hurry. For example, the eating behavior 610 a may evaluate a first activity A1 of going to a restaurant to eat pizza more favorably than a second activity A2 of going to the cinema, because a predicted first outcome O1 of going to a restaurant to pizza will more likely have an outcome O of satisfying a user state of hunger than going to the cinema, even though a predicted second outcome O2 for the second activity A2 of going to the cinema may include eating popcorn.
  • A behavior 610 may optionally base its evaluations E on preferences P, P1-Pn, in the user profile 14 of the user 10. For example, the eating behavior 610 a may evaluate a third activity A3 of going to LOU MALNATIS® (a registered trademark of Lou Malnatis, Inc.) to eat pizza more favorably than the first activity A1 of going to PIZZA HUT® (a registered trademark of Pizza Hut, Inc.) to eat pizza, when a first preference P1 in the user profile 14 indicates that LOU MALNATIS pizza is the user's favorite brand of pizza. Therefore, a behavior 610 may use the one or more objectives of that behavior 610 in combination with one or more preferences P, P1-Pn, of the user profile 14 of the user 10 to evaluate activities A and/or outcomes O of those activities A.
  • The activity-outcome evaluation E of one behavior 610 may be used by another behavior 610 when evaluating the corresponding activity A and/or outcome O. For example, a happiness behavior 61 Ob may evaluate the third activity A3 of going to eat LOU MALNATIS pizza more favorably based the favorable evaluation of the eating behavior 610 a and on the corresponding predicted outcome O3 that eating pizza will make the user 10 more happy (e.g., versus sad). Moreover, the collective user state 420 may indicate that the user 10 is cold, based on sensor data 212 of a sensor 208, and the happiness behavior 610 b may evaluate the third activity A3 of going to eat LOU MALNATIS pizza even more favorably based on the predicted outcome O3 that eating pizza will make the user 10 warmer and therefore happier. Therefore, the behavior system 600 may execute many combinations of evaluations by behaviors 610 (some in parallel or some in series) based on prior evaluations, preferences P, etc.
  • Based on internal policy or external input (e.g., the collective user state 420 or other information), each behavior 610 may optionally decide whether or not it wants to participate in evaluating any activities A in the activity-outcome set 520. In some examples, if the collective user state 420 indicates that the user 10 is full (i.e., not hungry), the eating behavior 610 a may opt out of evaluating the activities A and outcomes O. In other examples, if the collective user state 420 indicates that the user 10 is full (i,e., not hungry), the eating behavior 610 a may evaluate activities A having predicted outcomes O of making the user 10 more full as undesirable (e.g., a poor evaluation or a low score).
  • Different inputs/user state indicators 210 can trigger different behaviors 610, 610 a-n. A behavior 610 may persist for a duration of time. In some examples, a behavior 610 has a state 612 and exists in an active state or an inactive state. Certain types of inputs 210 may pertain to certain types of behaviors 610. One or more input types/user state indicator types 216 may be associated with each behavior 610. In other words, each behavior 610 may have an associated collection of input types 216 that the behavior 610 finds pertinent to its operation. For example, an input type 216 of hunger level for a user-defined input 210 of hunger having a scale (e.g. 1-10) indicating a level of hunger can be related to an eating behavior 610 a. Another input type 216 that may be associated with the eating behavior 610 a is proximity (which may be strongly typed as a distance in miles) for an input 210 of distance to a nearest restaurant. When the search system 300 (e.g., in particular, the behavior system 600) receives an input 210 of a type 216 associated with a behavior 610, the receipt of that input 210 may trigger activation of the behavior 610. The receipt of the input 210 may cause a behavior 610 to change state 612 from an inactive state to an active state.
  • In addition to becoming active, upon the receipt of one or more inputs 210 having a type 216 associated with the behavior 610, the number of those inputs 210, in some implementations, has a direct correlation to an influence of the behavior 610. In other words, the greater the number of received inputs 210 having a type 216 associated with the behavior 610, the greater the influence I of that behavior 610. Evaluations of predicted outcomes O of a behavior 610 may be weighted based on the influence I of the behavior 610. For example, the evaluation E can be a number, which is multiplied by the influence I (e.g., a number). As a result, behaviors 610 with greater influence have a relatively greater influence on the selection of an activity A.
  • In some implementations, the influence I is a count. Each time the behavior system 600 receives an input 210, the behavior system 600 increments a value of the influence I of each behavior 610 that has associated therewith the input type 216 of the received input 210. The behavior system 600 may include an input type filter 602 that receives the inputs 210 identifies which behaviors 610, if any, are associated with the input type 216 of the input 210 and increment the influence I of the affected behavior(s) 610.
  • In some implementations, each behavior 610 has an associated duration D. Receipt of an input 210 having a type 216 associated with the behavior 610 commences an input timer 614 set for a duration of time associated with the input 210 or the input type 216. When the input timer 614 expires, the behavior system 600 decrements the influence I of the behavior 610 (which was previously incremented for that input 210). Alternatively or additionally, the behavior system 600 may decrement the influence I of each behavior 610 every threshold period of time. When the influence I of a behavior 610 is zero, the behavior 610 changes state 612 from the active state to the inactive state. If the behavior system 600 receives an input 210 having an input type 216 associated with an inactive behavior 610, the behavior system 600 increments the influence I of that behavior 610, causing the behavior 610 to have an influence I greater than zero, which causes the behavior 610 to change state 612 from the inactive state to the active state. Once in the active state, the behavior 610 can participate in evaluating predicted outcomes O of activities A and/or the activities A themselves.
  • Behaviors 610 may evaluate activities A and/or predicted outcomes O of activities A. By evaluating both an activity A and the predicted outcomes O of the activity A, the behavior 610 offers a multi-pronged evaluation E. For example, while the behavior 610 may positively evaluate an activity A, it may negatively evaluate one or more of the predicted outcomes O of that activity A. As an illustrative example, if the behavior system 600 receives inputs 210 indicating that the user 10 is outdoors and on a street, then a sports behavior 610 e may positively evaluate an activity A to ride a bicycle. If additional inputs 210 indicate that the user 10 is on a very busy street, then the sports behavior 610 e may negatively evaluate a predicted outcome O of getting hit by a car.
  • In some implementations, a behavior 610 evaluates activities A and/or predicted outcomes O of activities A positively when the activity A has a type associated with the behavior 610, and negatively when the activity A has a type not associated with the behavior 610. The behavior system 600 may reference behavior-activity associations stored in non-transitory memory 130. The behavior-activity associations may have several nested layers (e.g., associations in a nested arrangement).
  • Referring to FIG. 7, in some implementations, the activity selector 700 receives the evaluated activity-outcome set 620 from the behavior system 600 and determines the collection 720 of one or more selected activities A, A1-Aj (i.e., the selected activity set 720). The activity selector 700 executes an activity selection routine that searches for the best activity(s) A, A1-Aj given the evaluations E1-En of their corresponding outcomes O, O1-On by all of the participating active behaviors 610, 610 a-n. In some implementations, the activity selector 700 calculates one or more preferred outcomes O, O1-On, based on the outcome evaluations E, E1-En, of the behaviors 610 and selects one or more corresponding activities A, A1-Aj for the selected activity set 720. The activity selector 700 may optionally send the selected activity set 720 to the activities system 500 (e.g., to the activity model 510) as feedback.
  • In some implementations, the activity selector 700 assesses the evaluations E, E1-En of the possible outcomes O, O1-On of the activities A, A1-Aj and determines a combination of activities A, A1-Aj that provides a combined outcome O. The combined outcome O may achieve higher user stratification than any single individual outcome O. The activity selector 700 may select the combination of activities A, A 1-Aj having the determined combined outcome O as the selected activity set 720. For example, if the inputs 210 indicate that the user 10 is hungry and likely seeking entertainment, a combined outcome O of both eating and watching a show may be very favorable. Therefore, a combined action may be going to a dinner-theater event that includes eating and watching a show.
  • Referring again also to FIG. 2B, the search system 300 sends search results 230 to the user device 200, in response to the search query 220. In some implementations, the search results 230 include one or more result records 232, which include information about or pertaining to the selected activity set 720. For example, the search results 230 may be a recordset that includes a result record 232 for each selected activity A. Moreover, the result record 232 may include a description 234 of the corresponding selected activity A (referred to as an activity description) that identifies the activity A and how to experience the activity A. In some examples, the activity description 234 includes an activity name 234 a, an activity description 234 b, a link 234 c (e.g., a uniform resource locator (URL) or other type or resource locator for accessing a. webpage, an application, etc.), display data 234 d, and/or other data related to the activity A, such as an evaluation score 234 e (e.g., by the activity selector 700), a popularity score 234 f (e.g., retrieved from a data source 130). The activity description 234 b may include a textual description of the activity A and/or location information (e.g., geolocation coordinates, a textual street location, etc.) for the activity A. In some examples, the activity description 234 may include information explaining why the search system 300 chose a particular activity A. For example, the activity description 234 may explain that the search system 300 chose an activity A related to eating, because a majority of the inputs 210 indicated that the user 10 was very hungry and close in proximity to a favorite restaurant (e.g., as indicated by a user preference P). In some implementations, the search application 206 b, executing on the user device 200, generates a result view 800 based on the received search results 230 and displays the result view 800 in the GUI 250. The result view 800 includes one or more activity messages 810 corresponding to each result record 232 in the search results 230.
  • Referring to FIG. 8A, in some implementations, the search application 206 b displays a message 254 in the GUI 250 prompting the user 10 to shake the user device 200 to receive a suggested activity A. When the user 10 shakes the user device 200, the search application 206 b receives an input 210 from the IMU 208 d of the user device 200 indicating that the user 10 is shaking the user device 200 back and forth. In response to the received input 210, the search application 206 b may send the query request 220 to the search system 300 to receive search result(s) 230 for display in the 250. The search application 206 b may display a result view 800 in the GUI 250 that shows one or more activity messages 810.
  • In some implementations, the result view 800, 800 a includes an activity message 810 that includes the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f from the corresponding result record 232. The result view 800 may also include a result view selector 820 having icons 822 a-n corresponding to alternative result views 800, 800 a-n. When the user selects one of the icons 822 a-n, the search application 206 b displays the corresponding result view 800 a-n.
  • In response to selection of a link 234 c, the user device 200 may launch a corresponding software application 206 (e.g., a native application or a web-browser application) referenced by the link 234 c and perform one or more operations indicated in the link 234 c and/or the display data 234 d. For example, the link 234 c may include a URI, having query string containing data to be passed to the software application 206 or software running on a remote server 112 (e.g., the query string may contain name/value pairs separated by delimiters, such as ampersands). If the link 234 c is configured to access a native application 206, the link 234 c may include a string (e.g., a query string) that includes a reference to the native application 206 and indicates one or more operations for the user device 200 to perform. When the user 10 selects the link 234 c for the native application 206, the user device 200 launches the native application 206 referenced in the link 234 c and performs the one or more operations indicated in the link 234 c. If the references application 206 is not installed on the user device 200, the link 234 c may direct the user 10 to a location (e.g., a digital distribution platform 130 b) where a native application 206 can be downloaded. If the link 234 c is configured to access a web-based application 206, the link 234 c may include a string e.g., a query string) that includes a reference to a web resource (e.g., a page of a web application/website). For example, the link 234 c may include a URL (i.e., a web address) used with hypertext transfer protocol (HTTP). When the user 10 selects the link 234 c, the user device 200 launches a web browser application 206 and retrieves the web resource indicated in the resource identifier.
  • The search application 206 b may display the search results 230 to the user 10 in a variety of different ways, depending on what information is transmitted to the user device 200. Moreover, the search application 206 b may display the search results 230 in the GUI 250 based on the display data 234 d. The display data 234 d may include text, images, layout information, a display template, a style guide (e.g., style sheet), etc.
  • In the example shown in FIG. 8B, a result view 800, 800 b may include a map 830 having a user icon 832 indicating a current location of the user device 200 on the map 830 and the one or more activity results 810 in their corresponding locations 834 on the map 830. The user 10 can view information from the corresponding result record 232 displayed in the activity result 810 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f). The link 234 c may include a link display name as well as the underlying resource locator.
  • Referring to FIG. 8C, in examples where the search results 230 include a recordset of results records 232, the search application 206 b may display the search results 230 to the user 10 in a results view 800, 800 c that includes a list view 840 of the result records 232 (e.g., in a tabular form). Moreover, the search application 206 b may arrange the result records 232 in order based on their evaluation score 234 e and/or the popularity score 234 f. In some examples, the search application 206 b displays the result records 232 in a table grid, and in other examples, the search application 206 b displays the result records 232 in a tree-grid (as shown), grouping result records 232 under separate parent nodes by a category or other grouping.
  • FIG. 8D is a schematic view of the user device 200 displaying a result view 800, 800 d that includes a select-a-door view 850. The select-a-door view 850 displays doors 852, where each door 852 corresponds to a hidden result record 232. In the example shown, the select-a-door view 850 includes first, second, and third doors 852 a-c, but any number of doors 852 may be shown. The search application 206 b allows the user 10 to select one door 852. In response to selection of a door 852, the search application 206 b displays an activity message 810 including information of the result record 232 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f) corresponding to the selected door 852.
  • FIG. 8E is a schematic view of the user device 200 displaying an example result view 800, 800 d that includes a spin-the-wheel view 860. The spin-the-wheel view 860 displays a wheel 862 having an enumeration of results records 232 from the search results 230. In the example shown, the wheel 862 includes eight numbers corresponding to eight results records 232, but any number of results records 232 can be enumerated using number, letters, pictures, or other identifiers. In response to the user spinning the wheel 862, the search application 206 b randomly selects one of the enumerated result records 232 and displays an activity message 810 including information of the selected result record 232 (e.g., the activity name 234 a, the activity description 234 b, the link 234 c, the evaluation score 234 e, and/or the popularity score 234 f).
  • In some implementations, the user 10 can enter feedback in the GUI 250 of the search application 206 b, so that the search system 300 can learn whether the suggested activities A were well-received by the user 10. The search system 300 can use the user feedback for future activity selections.
  • FIG. 9 provides example arrangements of operations for a method 900 of performing a search. The method 900 is described with respect to the user device 200 and the search system 300 as illustrated in FIG. 2B. At block 902, the method 900 includes receiving, at a computing device 202, 112, inputs 210 indicative of a user state of the user 10. The inputs 210 include sensor inputs from one or more sensors 208 in communication with the computing device 202, 112 and/or user inputs received from a graphical user interface 250 displayed on a screen 240 in communication with the computing device 202, 112. Moreover, the inputs 210 may include biometric data 212 of the user 10 and environmental data 214 regarding a surrounding of the user 10. At block 904, the method 900 includes determining, using the computing device 112, a collective user state 420 based on the received inputs 210. At block 906, the method 900 includes determining, using the computing device 202, 112, one or more possible activities A, A1-Aj of a user 110 and optionally one or more predicted outcomes O, O1-On for each activity A, A1-Aj based on the collective user state 420. The method 900 further includes, at block 908, executing, at the computing device 202, 112, one or more behaviors 610 that evaluate the one or more possible activities A, A1-Aj and/or optionally the corresponding one or more predicted outcomes O, O1-On. Each behavior 610 models a human behavior and/or a goal oriented task. At block 910, the method 900 includes selecting, using the computing device 202, 112, one or more activities A, A1-Aj based on the evaluations E, E1-En of the one or more possible activities A, A1-Aj and/or the corresponding one or more predicted outcomes O, O1-On; and, at block 912, the method 900 includes sending results 230 including the selected one or more activities A, A1-Aj from the computing device 202, 112 to the screen 240 for display on the screen 240.
  • In some implementations, the method 9.00 includes querying one or more remote data sources 130 in communication with the computing device 202, 112 to identify possible activities A, A1-Aj and/or predicted outcomes O, O1-On. The method 900 may include determining, using the computing device 202, 112, the one or more possible activities A, A1-Aj and the one or more predicted outcomes O, O1-On for each activity A based on one or more preferences P1-Pn of the user 10. Each behavior 610 may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves an objective of the behavior 610. For example, the eating behavior 610 a may positively evaluate an eating activity; whereas the sports behavior 610 e may negatively evaluate the eating activity. Moreover, each behavior 610 may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves a user preference P1-Pn. In some examples, a first behavior 610 evaluates an activity A or a corresponding outcome O based on an evaluation E by a second behavior 610 of the activity A or the corresponding outcome O. This allows evaluations E of one behavior 610 to be based on evaluations E of another behavior 610. Each behavior 610 may elect to participate or not participate in evaluating the one or more activities A, and/or the one or more predicted outcomes O, O1-On for each activity A based on the collective user state 420.
  • When an input 210 is related to a behavior 610, the method 900 may include incrementing an influence value I associated with the behavior 610. The input 210 may be related to the behavior 610 when the input 210 is of an input type associated with the behavior 610. In some implementations, the evaluations E of each behavior 610 can be weighted based on the influence value I of the corresponding behavior 610. The method 900 may include decrementing the influence value I of each behavior 610 after a threshold period of time. When an influence value I equals zero, the method 900 may include deactivating the corresponding behavior 610. Any behaviors 610 having an influence value I greater than zero may participate in evaluating the activities A or the corresponding outcomes O; and any behaviors 610 having an influence value I equal to zero may not participate in evaluating the activities A or the corresponding outcomes O.
  • In some implementations, the method 900 includes selecting for the results 230 a threshold number of activities A having the highest evaluations E or a threshold number of activities A having corresponding predicted outcomes O that have the highest evaluations The method 900 may include combining selected activities A and sending a combined activity A in the results 230.
  • The computing device 202, 212 may include a user computer processor 202 of a user device 200 including the screen 240 and/or one or more remote computer processors 112 in communication with the user computer processor 202. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof.
  • FIG. 10 is schematic view of an example computing device 1000 that may be used to implement the systems and methods described in this document. The computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
  • The computing device 1000 includes a processor 1010, memory 1020, a storage device 1030, a high-speed interface/controller 1040 connecting to the memory 1020 and high-speed expansion ports 1050, and a low speed interface/controller 1060 connecting to low speed bus 1070 and storage device 1030. Each of the components 1010, 1020, 1030, 1040, 1050, and 1060, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 1010 can process instructions for execution within the computing device 1000, including instructions stored in the memory 1020 or on the storage device 1030 to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display 1080 coupled to high speed interface 1040. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
  • The memory 1020 stores information non-transitorily within the computing device 1000. The memory 1020 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s). The non-transitory memory 1020 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device 1000. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes.
  • The storage device 1030 is capable of providing mass storage for the computing device 1000. In some implementations, the storage device 1030 is a computer-readable medium. In various different implementations, the storage device 1030 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 11020, the storage device 1030, or memory on processor 1010.
  • The high speed controller 11040 manages bandwidth-intensive operations for the computing device 1000, while the low speed controller 1060 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller 1040 is coupled to the memory 1020, the display 1080 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 1050, which may accept various expansion cards (not shown). In some implementations, the low-speed controller 1060 is coupled to the storage device 1030 and low-speed expansion port 1070. The low-speed expansion port 1070, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
  • The computing device 1000 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1000 a. or multiple times in a group of such servers 1000 a, as a laptop computer 1000 b, or as part of a rack server system 1000 c.
  • Various implementations of the systems and techniques described here can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
  • These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non-transitory computer readable medium, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
  • Implementations of the subject matter and the functional operations described. in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Moreover, subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The terms “data processing apparatus”, “computing device” and “computing processor” encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
  • A computer program (also known as an application, program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can 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 document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
  • The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
  • Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media 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, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., 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.
  • To provide for interactivity with a user, one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide interactivity with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
  • One or more aspects of the disclosure can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend 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 in this specification, or any combination of one or more such backend, middleware, or frontend 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 a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks),
  • The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication 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 implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interactivity) can be received from the client device at the server.
  • While this specification contains many specifics, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features specific to particular implementations of the disclosure. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
  • Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multi-tasking 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 it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
  • A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims. For example, the activities recited in the claims can be performed in a different order and still achieve desirable results.

Claims (20)

1. A method comprising:
receiving, at data processing hardware, inputs indicative of a user state of a user, the received inputs comprising at least one of:
sensor inputs from one or more sensors in communication with the data processing hardware;
application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; or
user inputs received from a graphical user interface;
determining, by the data processing hardware, possible information for the user by executing one or more searches of data sources, at least one search based on the received inputs;
executing, by the data processing hardware, behaviors having corresponding objectives, each behavior configured to evaluate the possible information and determine an evaluation based on whether the possible information is related to the corresponding objective, at least one behavior electing to participate or not participate in evaluating the possible information based on the received inputs, and at least one of the one or more searches based on the objective of at least one behavior participating in evaluating the possible information; and
selecting, by the data processing hardware, suggested information from the possible information based on the evaluations of one or more behaviors for presentation to the user.
2. (canceled)
3. The method of claim 1, further comprising, for each behavior:
determining whether any input of the received inputs is of an input type associated with the behavior; and
when an input of the received inputs is of an input type associated with the behavior, incrementing an influence value associated with the behavior,
wherein when the influence value of the behavior satisfies an influence value criteria, the behavior participates in evaluating the possible information, and when the influence value of the behavior does not satisfy the influence value criteria, the behavior does not participate in evaluating the possible information.
4. The method of claim 3, further comprising, for each behavior:
determining whether a decrement criteria is satisfied for the behavior; and
decrementing the influence value of the behavior when the decrement criteria is satisfied.
5. The method of claim 4, wherein the decrement criteria is satisfied when a threshold period of time has passed since last incrementing the influence value.
6. The method of claim 3, wherein the evaluation of at least one behavior is weighted based on the corresponding influence value of the at least one behavior.
7. The method of claim 1, further comprising displaying in the graphical user interface a representation of the user state based on the received inputs.
8. The method of claim 1, wherein at least one behavior evaluates the possible information based on at least one of a history of previously selected information for the user or one or more preferences of the user.
9. The method of claim 1, wherein a first behavior evaluates the possible information based on an evaluation by a second behavior of the possible information.
10. The method of claim 1, wherein the received inputs comprise biometric data of the user and environmental data regarding a surrounding of the user.
11. A system comprising:
data processing hardware; and
memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations comprising:
receiving inputs indicative of a user state of a user, the received inputs comprising at least one of:
sensor inputs from one or more sensors in communication with the data processing hardware;
application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; or
user inputs received from a graphical user interface;
determining possible information for the user by executing one or more searches of data sources, at least one search based on the received inputs;
executing behaviors having corresponding objectives, each behavior configured to evaluate the possible information and determine an evaluation based on whether the possible information is related to the corresponding objective, at least one behavior electing to participate or not participate in evaluating the possible information based on the received inputs, and at least one of the one or more searches based on the objective of at least one behavior participating in evaluating the possible information; and
selecting suggested information from the possible information based on the evaluations of one or more behaviors for presentation to the user.
12. (canceled)
13. The system of claim 11, wherein the operations further comprise, for each behavior:
determining whether any input of the received inputs is of an input type associated with the behavior; and
when an input of the received inputs is of an input type associated with the behavior, incrementing an influence value associated with the behavior,
wherein when the influence value of the behavior satisfies an influence value criteria, the behavior participates in evaluating the possible information, and when the influence value of the behavior does not satisfy the influence value criteria, the behavior does not participate in evaluating the possible information.
14. The system of claim 13, wherein the operations further comprise, for each behavior:
determining whether a decrement criteria is satisfied for the behavior; and
decrementing the influence value of the behavior when the decrement criteria is satisfied.
15. The system of claim 14, wherein the decrement criteria is satisfied when a threshold period of time has passed since last incrementing the influence value.
16. The system of claim 13, wherein the evaluation of at least one behavior is weighted based on the corresponding influence value of the at least one behavior.
17. The system of claim 11, wherein the operations further comprise displaying in the graphical user interface a representation of the user state based on the received inputs.
18. The system of claim 11, wherein at least one behavior evaluates the possible information based on at least one of a history of previously selected information for the user or one or more preferences of the user.
19. The system of claim 11, wherein a first behavior evaluates the possible information based on an evaluation by a second behavior of the possible information.
20. The system of claim 11, wherein the received inputs comprise biometric data of the user and environmental data regarding a surrounding of the user.
US14/739,044 2014-10-15 2015-06-15 Suggesting Activities Abandoned US20160110065A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/739,044 US20160110065A1 (en) 2014-10-15 2015-06-15 Suggesting Activities

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/514,869 US9058563B1 (en) 2014-10-15 2014-10-15 Suggesting activities
US14/739,044 US20160110065A1 (en) 2014-10-15 2015-06-15 Suggesting Activities

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/514,869 Continuation US9058563B1 (en) 2014-10-15 2014-10-15 Suggesting activities

Publications (1)

Publication Number Publication Date
US20160110065A1 true US20160110065A1 (en) 2016-04-21

Family

ID=53279919

Family Applications (2)

Application Number Title Priority Date Filing Date
US14/514,869 Active US9058563B1 (en) 2014-10-15 2014-10-15 Suggesting activities
US14/739,044 Abandoned US20160110065A1 (en) 2014-10-15 2015-06-15 Suggesting Activities

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US14/514,869 Active US9058563B1 (en) 2014-10-15 2014-10-15 Suggesting activities

Country Status (1)

Country Link
US (2) US9058563B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318973B2 (en) 2013-01-04 2019-06-11 PlaceIQ, Inc. Probabilistic cross-device place visitation rate measurement at scale

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140244762A1 (en) * 2013-02-26 2014-08-28 Facebook, Inc. Application distribution platform for rating and recommending applications
US20150161236A1 (en) * 2013-12-05 2015-06-11 Lenovo (Singapore) Pte. Ltd. Recording context for conducting searches
US9866508B2 (en) * 2015-04-02 2018-01-09 Dropbox, Inc. Aggregating and presenting recent activities for synchronized online content management systems
US10390003B1 (en) 2016-08-29 2019-08-20 Perceptln Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10410328B1 (en) 2016-08-29 2019-09-10 Perceptin Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10571926B1 (en) 2016-08-29 2020-02-25 Trifo, Inc. Autonomous platform guidance systems with auxiliary sensors and obstacle avoidance
US10032276B1 (en) 2016-08-29 2018-07-24 PerceptIn, Inc. Visual-inertial positional awareness for autonomous and non-autonomous device
US10453213B2 (en) * 2016-08-29 2019-10-22 Trifo, Inc. Mapping optimization in autonomous and non-autonomous platforms
US10366508B1 (en) 2016-08-29 2019-07-30 Perceptin Shenzhen Limited Visual-inertial positional awareness for autonomous and non-autonomous device
US10043076B1 (en) 2016-08-29 2018-08-07 PerceptIn, Inc. Visual-inertial positional awareness for autonomous and non-autonomous tracking
US10571925B1 (en) 2016-08-29 2020-02-25 Trifo, Inc. Autonomous platform guidance systems with auxiliary sensors and task planning
US10402663B1 (en) * 2016-08-29 2019-09-03 Trifo, Inc. Visual-inertial positional awareness for autonomous and non-autonomous mapping
US10162362B2 (en) 2016-08-29 2018-12-25 PerceptIn, Inc. Fault tolerance to provide robust tracking for autonomous positional awareness
US10395117B1 (en) 2016-08-29 2019-08-27 Trifo, Inc. Visual-inertial positional awareness for autonomous and non-autonomous tracking
US11314262B2 (en) 2016-08-29 2022-04-26 Trifo, Inc. Autonomous platform guidance systems with task planning and obstacle avoidance
US10444761B2 (en) 2017-06-14 2019-10-15 Trifo, Inc. Monocular modes for autonomous platform guidance systems with auxiliary sensors
US10496104B1 (en) 2017-07-05 2019-12-03 Perceptin Shenzhen Limited Positional awareness with quadocular sensor in autonomous platforms
US11614952B2 (en) * 2017-09-13 2023-03-28 Imageteq Technologies, Inc. Systems and methods for providing modular applications with dynamically generated user experience and automatic authentication
US11774983B1 (en) 2019-01-02 2023-10-03 Trifo, Inc. Autonomous platform guidance systems with unknown environment mapping

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6262730B1 (en) * 1996-07-19 2001-07-17 Microsoft Corp Intelligent user assistance facility
US6311175B1 (en) * 1998-03-06 2001-10-30 Perot Systems Corp. System and method for generating performance models of complex information technology systems
US6421655B1 (en) * 1999-06-04 2002-07-16 Microsoft Corporation Computer-based representations and reasoning methods for engaging users in goal-oriented conversations
US20030139902A1 (en) * 2002-01-22 2003-07-24 Geib Christopher W. Probabilistic goal recognition system and method incorporating inferred unobserved actions
US20040237759A1 (en) * 2003-05-30 2004-12-02 Bill David S. Personalizing content
US20080195457A1 (en) * 2006-08-16 2008-08-14 Bellsouth Intellectual Property Corporation Methods and computer-readable media for location-based targeted advertising
US20080256445A1 (en) * 2007-02-05 2008-10-16 Olch Ronald H System and method for automated aids for activities of daily living
US20090210411A1 (en) * 2008-02-15 2009-08-20 Oki Electric Industry Co., Ltd. Information Retrieving System
US20100114654A1 (en) * 2008-10-31 2010-05-06 Hewlett-Packard Development Company, L.P. Learning user purchase intent from user-centric data
US20120220314A1 (en) * 2006-06-01 2012-08-30 Loopt, Inc. Location-based advertising message serving for mobile communication devices
US20130073935A1 (en) * 2011-09-20 2013-03-21 Oracle International Corporation Predictive system recommended actions based on recent activities
US20130226856A1 (en) * 2012-02-23 2013-08-29 Palo Alto Research Center Incorporated Performance-efficient system for predicting user activities based on time-related features
US20130298044A1 (en) * 2004-12-30 2013-11-07 Aol Inc. Mood-based organization and display of co-user lists
US20130332721A1 (en) * 2012-06-07 2013-12-12 Apple Inc. Quiet hours for notifications
US20140100835A1 (en) * 2012-10-04 2014-04-10 Futurewei Technologies, Inc. User Behavior Modeling for Intelligent Mobile Companions
US20140195968A1 (en) * 2013-01-09 2014-07-10 Hewlett-Packard Development Company, L.P. Inferring and acting on user intent
US20150099953A1 (en) * 2013-10-08 2015-04-09 Covidien Lp Methods and systems for triggering physiological measurements
US20150169832A1 (en) * 2013-12-18 2015-06-18 Lenovo (Singapore) Pte, Ltd. Systems and methods to determine user emotions and moods based on acceleration data and biometric data
US9177029B1 (en) * 2010-12-21 2015-11-03 Google Inc. Determining activity importance to a user

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US7548874B2 (en) * 1999-10-21 2009-06-16 International Business Machines Corporation System and method for group advertisement optimization
US20020075303A1 (en) * 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method and system for creating a virtual team environment
US6950988B1 (en) * 2001-06-11 2005-09-27 Handspring, Inc. Multi-context iterative directory filter
US7233933B2 (en) * 2001-06-28 2007-06-19 Microsoft Corporation Methods and architecture for cross-device activity monitoring, reasoning, and visualization for providing status and forecasts of a users' presence and availability
US7761393B2 (en) * 2006-06-27 2010-07-20 Microsoft Corporation Creating and managing activity-centric workflow
US20080098313A1 (en) * 2006-10-23 2008-04-24 Instabuddy Llc System and method for developing and managing group social networks
US8898230B2 (en) * 2006-12-27 2014-11-25 International Business Machines Corporation Predicting availability of instant messaging users
US8799068B2 (en) * 2007-11-05 2014-08-05 Facebook, Inc. Social advertisements and other informational messages on a social networking website, and advertising model for same
US8352867B2 (en) * 2007-12-18 2013-01-08 Verizon Patent And Licensing Inc. Predictive monitoring dashboard
US8799814B1 (en) * 2008-02-22 2014-08-05 Amazon Technologies, Inc. Automated targeting of content components
US20110137836A1 (en) * 2008-09-19 2011-06-09 Hiroyuki Kuriyama Method and system for generating history of behavior
US8108406B2 (en) * 2008-12-30 2012-01-31 Expanse Networks, Inc. Pangenetic web user behavior prediction system
US8458604B2 (en) * 2009-07-06 2013-06-04 Fairwinds Partners Llc Methods and apparatus for determining website validity
US20110230732A1 (en) * 2009-09-14 2011-09-22 Philometron, Inc. System utilizing physiological monitoring and electronic media for health improvement
US9076349B2 (en) * 2010-04-26 2015-07-07 Raghav Gupta Geosocial network system and method for aggregating group members
US8521661B2 (en) * 2010-08-16 2013-08-27 Facebook, Inc. Suggesting connections to a user based on an expected value of the suggestion to the social networking system
US8850172B2 (en) * 2010-11-15 2014-09-30 Microsoft Corporation Analyzing performance of computing devices in usage scenarios
US10217117B2 (en) * 2011-09-15 2019-02-26 Stephan HEATH System and method for social networking interactions using online consumer browsing behavior, buying patterns, advertisements and affiliate advertising, for promotions, online coupons, mobile services, products, goods and services, entertainment and auctions, with geospatial mapping technology
US9116997B2 (en) * 2011-09-22 2015-08-25 Alibaba.Com Limited Presenting user preference activities
US20130197968A1 (en) * 2011-09-24 2013-08-01 Elwha LLC, a limited liability corporation of the State of Delaware Behavioral fingerprinting with retail monitoring
US9621404B2 (en) * 2011-09-24 2017-04-11 Elwha Llc Behavioral fingerprinting with social networking
US20130290820A1 (en) * 2012-04-26 2013-10-31 Adil Dhanani Suggestion of network content items based on social network information
US9443272B2 (en) * 2012-09-13 2016-09-13 Intel Corporation Methods and apparatus for providing improved access to applications
US20140101611A1 (en) * 2012-10-08 2014-04-10 Vringo Lab, Inc. Mobile Device And Method For Using The Mobile Device
US9159021B2 (en) * 2012-10-23 2015-10-13 Numenta, Inc. Performing multistep prediction using spatial and temporal memory system
US20140129499A1 (en) * 2012-11-05 2014-05-08 Numenta, Inc. Value oriented action recommendation using spatial and temporal memory system
US10740712B2 (en) * 2012-11-21 2020-08-11 Verint Americas Inc. Use of analytics methods for personalized guidance
US9607090B2 (en) * 2013-01-21 2017-03-28 Salesforce.Com, Inc. Computer implemented methods and apparatus for recommending events
US9704209B2 (en) * 2013-03-04 2017-07-11 Hello Inc. Monitoring system and device with sensors and user profiles based on biometric user information
US20140281971A1 (en) * 2013-03-13 2014-09-18 United Video Properties, Inc. Methods and systems for generating objective specific playlists
US9164651B2 (en) * 2013-04-11 2015-10-20 Google Inc. Management of geographic data layers in a geographic information system
US20140365313A1 (en) * 2013-06-10 2014-12-11 Opentable, Inc. Providing personalized recommendations relating to group actions

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6262730B1 (en) * 1996-07-19 2001-07-17 Microsoft Corp Intelligent user assistance facility
US6311175B1 (en) * 1998-03-06 2001-10-30 Perot Systems Corp. System and method for generating performance models of complex information technology systems
US6421655B1 (en) * 1999-06-04 2002-07-16 Microsoft Corporation Computer-based representations and reasoning methods for engaging users in goal-oriented conversations
US20030139902A1 (en) * 2002-01-22 2003-07-24 Geib Christopher W. Probabilistic goal recognition system and method incorporating inferred unobserved actions
US20040237759A1 (en) * 2003-05-30 2004-12-02 Bill David S. Personalizing content
US20130298044A1 (en) * 2004-12-30 2013-11-07 Aol Inc. Mood-based organization and display of co-user lists
US20120220314A1 (en) * 2006-06-01 2012-08-30 Loopt, Inc. Location-based advertising message serving for mobile communication devices
US20080195457A1 (en) * 2006-08-16 2008-08-14 Bellsouth Intellectual Property Corporation Methods and computer-readable media for location-based targeted advertising
US20080256445A1 (en) * 2007-02-05 2008-10-16 Olch Ronald H System and method for automated aids for activities of daily living
US20090210411A1 (en) * 2008-02-15 2009-08-20 Oki Electric Industry Co., Ltd. Information Retrieving System
US20100114654A1 (en) * 2008-10-31 2010-05-06 Hewlett-Packard Development Company, L.P. Learning user purchase intent from user-centric data
US9177029B1 (en) * 2010-12-21 2015-11-03 Google Inc. Determining activity importance to a user
US20130073935A1 (en) * 2011-09-20 2013-03-21 Oracle International Corporation Predictive system recommended actions based on recent activities
US20130226856A1 (en) * 2012-02-23 2013-08-29 Palo Alto Research Center Incorporated Performance-efficient system for predicting user activities based on time-related features
US20130332721A1 (en) * 2012-06-07 2013-12-12 Apple Inc. Quiet hours for notifications
US20140100835A1 (en) * 2012-10-04 2014-04-10 Futurewei Technologies, Inc. User Behavior Modeling for Intelligent Mobile Companions
US20140195968A1 (en) * 2013-01-09 2014-07-10 Hewlett-Packard Development Company, L.P. Inferring and acting on user intent
US20150099953A1 (en) * 2013-10-08 2015-04-09 Covidien Lp Methods and systems for triggering physiological measurements
US20150169832A1 (en) * 2013-12-18 2015-06-18 Lenovo (Singapore) Pte, Ltd. Systems and methods to determine user emotions and moods based on acceleration data and biometric data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318973B2 (en) 2013-01-04 2019-06-11 PlaceIQ, Inc. Probabilistic cross-device place visitation rate measurement at scale

Also Published As

Publication number Publication date
US9058563B1 (en) 2015-06-16

Similar Documents

Publication Publication Date Title
US9026941B1 (en) Suggesting activities
US9058563B1 (en) Suggesting activities
US20220237486A1 (en) Suggesting activities
US11644953B2 (en) Techniques for context sensitive illustrated graphical user interface elements
TWI720255B (en) Method and computing device for generating group recommendations, and non-transitory computer-readable storage medium
US10332172B2 (en) Lead recommendations
KR102452387B1 (en) Device and method for generating group profile
TWI618015B (en) Method,computer-readable non-transitory storage medium,and system for mobile device-related measures of affinity
US11792733B2 (en) Battery charge aware communications
US20130124323A1 (en) String Based Promotional System and Method Thereof
US10013462B2 (en) Virtual tiles for service content recommendation
CN113348650B (en) Display method, system and machine-readable storage medium of interactive information interface
US10681169B2 (en) Social plugin reordering on applications
KR20150128808A (en) Review system
KR20240034259A (en) Generating personalized map interface with enhanced icons
AU2014241300A1 (en) Contextual socially aware local search
US20160292793A1 (en) Selection and display of a featured professional profile chosen from a social networking service
US20240045899A1 (en) Icon based tagging
US20170024442A1 (en) Electronic device and method of acquiring user information in electronic device
US11818088B2 (en) Messaging system for review data

Legal Events

Date Code Title Description
AS Assignment

Owner name: BLACKWERKS, LLC., ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KRUEGER, BRETT A;KRUEGER, KRAIG T;REEL/FRAME:035835/0336

Effective date: 20150213

AS Assignment

Owner name: KRUEVIO LLC, MICHIGAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BLACKWERKS, LLC;REEL/FRAME:044340/0624

Effective date: 20170915

STCV Information on status: appeal procedure

Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS

STCV Information on status: appeal procedure

Free format text: BOARD OF APPEALS DECISION RENDERED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION