Profile message communications

A first user device receives user profile data from a user of the first user device, generates a user profile based on the user profile data, receives profile availability data from the user of the first user device, and designates a user profile availability status based on the profile availability data. A second user device receives target profile data from a user of the second user device, generates a profile message based on the target profile data, and communicates the profile message. The first user device receives the profile message, determines whether the target profile data corresponds to the user profile data of the first user device, generates a user alert when the target profile data corresponds to the user profile data, and enables the user of the first user device to respond to the profile message via a dynamic dashboard.

BACKGROUND

Currently available communication technologies enable individuals to communicate with one another in a variety of ways. Examples of such communications include speaking over the telephone, text messaging, instant messaging, e-mailing and video conferencing.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

In one or more implementations, described herein, user profiles may be used to search for and communicate with, in real-time, one or more individuals in a given geographic area. In certain implementations, a first user device may communicate with a second user device by broadcasting a profile message in a geographic area. Upon receiving the profile message, the second user device may determine whether the profile message matches a user profile of the second user device. If the profile message is not relevant, then the second user device may disregard the profile message. However, if the profile message matches the user profile of the second user device, then the second user device may notify the user of the second user device and enable the user to respond to the profile message.

FIG. 1is a diagram of an overview of one or more implementations described herein. In certain implementations, a user device110may broadcast a profile message over a geographic area (represented by line112) specified by the user. User devices that have user profiles matching the profile message, such as user devices120, may respond to the profile message. In some implementations, the user devices120may respond by generating a dynamic dashboard that may enable the user devices120to communicate with user device110, geographically locate user device110and/or see if any other user devices have responded to user device110. User devices, such as user devices130-140, that are outside the broadcast area112or with user profiles that do not match the profile message, may not respond to the profile message.

FIG. 2is a diagram that illustrates an example environment200in which systems and/or methods, described herein, may be implemented. As shown inFIG. 2, environment200may include user devices210-1,210-2, . . . ,210-M (where M≧1) (collectively referred to as “user devices210,” and individually as “user device210”), a communications network220and a profile message server230. WhileFIG. 2shows a particular number and arrangement of devices, in alternative implementations, the environment200may include additional, fewer, different or differently arranged devices than those depicted.

User device210may be embodied by any number of wireless communication devices. For instance, user device210can be a cellular telephone, a smart phone, a laptop computer, a tablet computer, a desktop computer, a personal digital assistant (PDA) or another type of communication device. Additionally, user device210may be capable of executing software, storing data, and communicating via communications network220.

Communication network220may include any type of network or a combination of networks. For example, network220may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), a mobile relay network, a metropolitan area network (MAN), an ad hoc network, a telephone network (e.g., a Public Switched Telephone Network (PSTN)), a cellular network, or a voice-over-IP (VoIP) network.

Profile message server230may include one or more server devices, such as a computer device, an array of computer devices or one or more databases. Profile message server230may be capable of executing software, storing data, and communicating via communications network220. In certain implementations, the profile message server230may play a supportive or management role in enabling user devices210to communicate with one another in the manner described herein. However, in other implementations, the profile message serve230may not be necessary; that is, the user devices210may communicate with one another without the support or management of the profile message server230. Additionally, in certain implementations, the user devices210may communicate with one another via the network220(e.g., a telecommunications network or a mobile relay network). However, in other implementations, the user devices210may communicate with one another directly. In yet other implementations, whether the user devices210communicate with one another directly or via the network220may depend on a pre-selected communication medium preference.

FIG. 3is a diagram of example components of a user device210. As depicted, user device210may include a processing unit310, a memory320, a communication interface330, an input device340and an output device350. In certain implementations, the user device210may correspond to one or more of the user devices depicted inFIGS. 1-2. Additionally, the user device210may include fewer, additional, different, or differently arranged components than those illustrated inFIG. 3.

Processing unit310may include one or more processors, microprocessors, data processors, co-processors, network processors, application-specific integrated circuits (ASICs), controllers, programmable logic devices (PLDs), chipsets, field-programmable gate arrays (FPGAs), or other components that may interpret or execute instructions or data. Processing unit310may control the overall operation, or a portion thereof, of user device210, based on, for example, an operating system (not illustrated) and/or various applications. Processing unit310may access instructions from memory320, from other components of user device210or from a source external to user device210(e.g., a network or another device). A computer-readable medium may be defined as a non-transitory memory device. A memory device may include space within a single physical memory device or spread across multiple physical memory devices.

Memory320may include memory or secondary storage. For example, memory320may include a RAM, a dynamic RAM (DRAM), a read-only memory (ROM), a programmable ROM (PROM), a flash memory or some other type of memory. Memory320may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.) or some other type of computer-readable medium, along with a corresponding drive.

Memory320may store data, applications or instructions related to the operation of user device210. For example, memory320may include a variety of applications, such as a navigation application, an e-mail application, a telephone application, a camera application, a voice recognition application, a multi-media application, a music player application, a visual voicemail application, a contacts application, a data organizer application, a calendar application, an instant messaging application, a texting application, a web browsing application, a blogging application or other types of applications (e.g., a word processing application, a spreadsheet application, etc.).

Communication interface330may include a component that permits user device210to communicate with other devices (e.g., other user devices210and/or profile message server230) or networks (e.g., communications network220). For example, communication interface330may include some type of wireless or wired interface. Communication interface330may also include an antenna (or a set of antennas) that permits wireless communication, such as the transmission and reception of radio frequency (RF) signals.

Input device340may include a component that permits a user or another device to input information into user device210. For example, input device340may include a keypad, a button, a switch, a knob, fingerprint recognition logic, retinal scan logic, a web cam, voice recognition logic, a touchpad, an input port, a microphone, a display or some other type of input component. Output device350may include a component that permits user device210to output information to the user or another device. For example, output device350may include a display, LEDs, an output port, a speaker or some other type of output component.

As described herein, user device210may perform certain operations in response to processing unit310executing software instructions contained in a computer-readable medium, such as memory320. The software instructions may be read into memory320from another computer-readable medium or from another device via communication interface330. The software instructions contained in memory320may cause processing unit310to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.

FIG. 4is a diagram of example functional components of user device210. As illustrated, user device210may include a profile module410, an outbound profile message module420, a dynamic dashboard module430and an inbound profile message module440. Depending on the implementation, one or more of the modules410-440may be implemented as a combination of hardware and software based on the components illustrated and described with respect toFIG. 3. Alternatively, modules410-440may each be implemented as hardware based on the components illustrated and described with respect toFIG. 3. Additionally, whileFIG. 4shows a particular number and arrangement of modules, in alternative implementations, the user device210may include additional, fewer, different or differently arranged modules than those depicted.

The profile module410may enable the user device210to receive user profile data. User profile data may include a wide variety of data relating to a user. Examples of user profile data may include a name, profession (e.g., medical doctor (MD)), job title (e.g., Manager), certifications (e.g., CPA (Certified Public Accountant)), and skills (e.g., automotive repair). Additionally, or alternatively, user profile data may also include contact information, such as street addresses, telephone numbers and e-mail addresses, in addition to information that describes products and/or services of interest (e.g., “need window replacement services.”). User profile data may also include one or more key words that can be used to determine whether a given user profile matches a profile message received from another user device. The user profile module410may also generate a user profile based on the user profile data, and designate whether the user profile will be made available (e.g., whether the user is willing to receive profile messages from other users). In a similar manner, the profile module410may also enable the user device210to receive contact profile data, generate contact profiles and designate whether one or more contact profiles will be made available.

The outbound profile message module420may enable the user device210to receive (e.g., from a user) and/or retrieve (e.g., from memory320) profile message data that can be used to generate one or more profile messages. Examples of profile message data may include originator data, a message type, target profile data, message content data and geographic data. Originator data may include a name, telephone number and/or other information about the individual broadcasting the profile message. A message type may describe the type or nature of the profile message (e.g., emergency, emergency type, warning, declaration, commercial, non-commercial, etc.). Target profile data may include key words or other information (e.g., names, professions, job titles, certifications, interests, and skills) that may be found in a user profile\of another user device. Message content data may correspond to one or more data formats, including text, audio, images, video and/or any combination thereof. Additionally, or alternatively, message content data may include a request for aid, products or services, a warning, a description, a declaration, a report or an advertisement. In some implementations, the geographic data may include a current location of the user device210, a geographic distance for broadcasting a profile message and/or information identifying or defining a geographic area or location.

The outbound profile message module420may also operate to generate a profile message based on originator data, a message type, target profile data, message content data, and/or geographic data. Additionally, or alternatively, the outbound profile message module420may determine an appropriate medium for transmitting the profile message. For instance, if the user device210is within range of a telecommunications network, the outbound profile message module420may broadcast the profile message via the telecommunications network. However, if the user device210is not within range of a telecommunications network, the user device210may broadcast the profile message via an alternative route, including a global satellite network, a user device relay network, or a local area network.

The dynamic dashboard module430may operate to track recently broadcasted profile messages. In some implementations, this may include receiving messages from other user devices210that have received a profile message from the user device210and notified their respective users. Additionally, or alternatively, this may also include corresponding with a profile message server230that is configured to monitor and/or track user profiles and profile messages. In some implementations, when a profile message sent by the user device210matches the user profiles of other users, the dynamic dashboard module430may generate a list the user profiles of the other users and enable the user of the user device210to communicate with one or more of the other users by selecting the appropriate user profile(s) in the list.

The inbound profile message module440may enable the user device210to receive a profile message. Similar to the profile message discussed above with respect to the outbound profile message module420, a profile message, received by the inbound profile message module440, may include originator data, a message type, target profile data, message content data, geographic data, or other data. The inbound profile message module440may also evaluate the profile message to determine whether the user device210should notify the user about the profile message, forward the profile message to one or more contacts and/or disregard the profile message.

To do so, the inbound profile message module440may consider the profile message's message type (e.g., emergency, warning, declaration, commercial, non-commercial, etc.). Additionally, or alternatively, the inbound profile message module440may consider whether a locally stored user profile or contact profiles have been made available, or whether the target profile data or other profile message data match (or are sufficiently relevant to) the key words or other profile data of the user profile. In certain implementations, inbound profile message module440may not determine whether a contact profile matches the target profile data before forwarding the profile message to a user device corresponding to the contact profile. In some implementations, the user device of the contact may determine whether the target profile data is sufficiently relevant. In some implementations, the inbound profile message module440may also consider whether the user device210is currently located within a geographic range, area or distance specified by the profile message. In some embodiments, this may be done by evaluating the geographic data in the profile message and communicating with a telecommunications network, a global satellite network, or other network, to obtain the current geographic location of the user device210.

Upon notifying the user of a given profile message, the dynamic dashboard module430may generate a dynamic dashboard corresponding to the profile message. In certain implementations, the dynamic dashboard may enable the user to communicate with the user originating the profile message, identify the current geographic location of the user originating the profile message and/or determine if any other users have responded to the user originating the profile message. For instance, the dynamic dashboard may enable the user of the user device210to contact the user originating the profile message using a telephone call, voicemail, text message, instant message, video conference, or other form of electronic communication.

Additionally, or alternatively, the dynamic dashboard may provide the user of the user device210with a map specifying the geographic location of the user originating the profile message and an appropriate route for traveling to the user originating the profile message. Additionally, or alternatively, the dynamic dashboard may provide the user of the user device210with a variety of information about whether other users have responded to the user originating the profile message, including the profiles of the other users, the current locations of the other users, the manner in which the other users have responded and more. As such, the dynamic dashboard may provide a wide variety of real-time information, features and functions.

FIG. 5is a block diagram of example components of a profile message server230. As depicted, profile message server230may include a bus510, a processor520, a main memory530, a read-only memory (ROM)540, a storage device550, an input device560, an output device570, and a communication interface580. In alternative implementations, however, the profile message server230may include fewer, additional, different, or differently arranged components than those illustrated inFIG. 5.

Bus510may include a path that permits communication among the components of the profile message server230. Processor520may include a processor, a microprocessor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or another type of processor that interprets and executes instructions. Main memory530may include a random access memory (RAM) or another type of dynamic storage device that stores information or instructions for execution by processor520. ROM540may include a ROM device or another type of static storage device that stores static information or instructions for use by processor520. Storage device550may include a magnetic storage medium, such as a hard disk drive, or a removable memory, such as a flash memory.

Input device560may include a mechanism that permits a user to input information to profile message server230, such as a control button, a keyboard, a keypad, or another type of input device. Output device570may include a mechanism that outputs information to the user, such as a light emitting diode (LED), a display, or another type of output device. Communication interface580may include any transceiver-like mechanism that enables the profile message server230to communicate with other devices (e.g., user devices210) or networks (e.g., network220). In some implementations, communication interface580may include a wireless interface, a wired interface, an optical interface and more.

Profile message server230may perform certain operations, as described in detail below. Profile message server230may perform these operations in response to processor520executing software instructions contained in a computer-readable medium, such as main memory530.

The software instructions may be read into main memory530from another computer-readable medium, such as storage device550or from another device via communication interface580. The software instructions contained in main memory530may cause processor520to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of, or in combination with, software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.

FIG. 6is a diagram of example functional components of a profile message server230. As depicted, profile message server230may include a profile monitoring module610, a profile message monitoring module620and a dynamic dashboard module630. Depending on the implementation, one or more of modules610-630may be implemented as a combination of hardware and software based on the components illustrated and described with respect toFIG. 5. Alternatively, modules610-630may each be implemented as hardware based on the components illustrated and described with respect toFIG. 5. Additionally, whileFIG. 6shows a particular number and arrangement of modules, in alternative implementations, the profile message server230may include additional, fewer, different or differently arranged modules than those depicted.

Profile monitoring module610may enable the profile message server230to receive user profiles and contact profiles from user devices210. In certain implementations, user profiles and contact profiles may be received each time a user creates a new, or edits an existing, user profile or contact profile. Additionally, profile monitoring module610may map the user profiles to the contact profiles in order to maintain an accurate record of which user profiles correspond to which contact profiles. In certain implementations, profile monitoring module610may also monitor the availability status of each user profile and contact profile. An availability status may determine whether a user of a user device210may be contacted via a profile message. If a user modifies the availability status of a user profile or contact profile, the profile monitoring module610may receive a notification of the modification in order to keep an accurate record of the availability status of each user profile and each contact profile. In some implementations, profile monitoring module610may also monitor the geographic location of user profiles and contact profiles by, for example, monitoring the geographic locations of the user device corresponding thereto.

Profile message monitoring module620may enable the profile message server230to receive a profile message from a user device210. As mentioned above, the profile message may include geographic data, including a geographic location of the user device210and a broadcast distance for the profile message. In certain implementations, profile message monitoring module620may define a broadcast area based on the geographic data in the profile message and generate a list of user profiles and contact profiles within the geographic area. In certain implementations, this may include profile message monitoring module620cooperating with profile monitoring module610, since profile monitoring module610may be configured to monitor the geographic locations of user profiles and contact profiles.

Upon identifying the user profiles and the contact profiles in a specified geographic area, profile message monitoring module620may also be configured to remove any profiles from the list that are not available. Profile message monitoring module620may operate to remove from the list any user profiles or contact profiles that do not match, or are not adequately relevant to the target profile data or other data contained in the profile message. Profile message monitoring module620may be configured to broadcast the profile message to any of the remaining user profiles or contact profiles in the list. In some implementations, profile message monitoring module620may not determine whether a user profile or contact profile is sufficiently relevant before broadcasting a profile message. In such implementations, this determination may be left to the user devices individually.

Dynamic dashboard module630may enable the profile message server230to provide dynamic dashboard services with real-time updates, as described herein, to user devices sending profile message and/or user devices receiving profile message.

FIG. 7is a flowchart diagram of an example process700for creating a user profile and contact profiles. The depicted process700includes receiving710user profile data, generating720a user profile, receiving730user profile availability data, designating740a user profile availability status, receiving750contact profile data, generating760contact profiles, receiving770contact availability data and designating780an availability status for the contact profiles. In certain implementations, process700may be performed by one or more components of user device210, such as processing unit310. However, in other implementations, process700may be performed by the components of one or more other devices, including or excluding user device210. Process700will be described with corresponding references to example user interfaces illustrated inFIGS. 8A-8B.

Receiving710user profile data may include presenting a user interface (UI) that enables a user to input user profile data. The UI may implement a variety of user interface technologies, including a graphical UI (GUI), an audio UI or another type of interface. As such, the UI may include any number, variety or combination of interface features, including graphics, descriptions, text boxes, dropdown menus, radio buttons, check boxes, etc. The UI may incorporate one or more dynamic functions, such as user prompts, auto correct functions, spell check functions, data validation functions, audio prompts, audio input functions, etc. Additionally, or alternatively, receiving710user profile data may include receiving user profile data in a more automated fashion, such as downloading the user profile data from another device (e.g., a laptop computer), importing the user profile data from a software product or reading the user profile data from a removable storage device (e.g., a subscriber identity module (SIM) card).

As mentioned above, examples of user profile data may include names, professions, job titles, certifications, skills, contact information, or an interest in activities, products and/or services. User profile data may include one or more key words that can be used to determine whether a user profile matches a profile message received from another user device.

Generating720a user profile may include using the user profile data to create a data structure that describes a user of a user device210. In certain implementations, generating720a user profile may include storing the user profile, for example, in a memory320of a user device210. Additionally, or alternatively, generating720a user profile may include transmitting the user profile to a profile message server230for storage.

Similar to receiving710user profile data, receiving730user profile availability data may include presenting a UI that enables a user to input the profile availability data. Additionally, or alternatively, receiving730user profile availability data may include receiving user profile availability data in a more automated fashion, such as downloading user profile availability data from another user device (e.g., a laptop computer) or reading user profile availability data from a removable storage device (e.g., a SIM card). In some implementations, receiving730user profile availability data may be executed at the same time as (in combination with) receiving710user profile data.

Designating740a user profile availability status may include updating or otherwise modifying a user profile data structure to indicate a willingness to receive at least some profile messages and user notifications corresponding thereto. For instance, in certain implementations, the user profile availability status may indicate a willingness to receive profile messages that match, or are sufficiently relevant, to the user profile. In some implementations, while a user profile may be available for receiving profile messages and user notifications, the user profile may not be viewable by other users or user devices. Whether a profile message is sufficiently relevant to a user profile may depend on, for example, an evaluation of factors, including synonyms, acronyms, alternative spellings, potential equivalents, different languages, and/or other factors. However, in other implementations, the user profile availability status may indicate a willingness to receive only certain profile messages (e.g., profile messages with certain profile message types (e.g., emergencies), from certain users, etc.).

FIG. 8Aillustrates an example of a UI800A for receiving user profile data. As depicted, UI800A includes a number of text boxes that enable the user to input user profile data. Additionally, each text box corresponds to a text box label, such as “Name,” “Profession,” “Certification,” “Skill,” and “Key Words,” that indicates the type of information that should be entered into each text box. UI800A also includes check boxes that enable the user to specify whether the user's skills will be made available. While not shown inFIG. 8A, in some implementations, UI800A may also include a profile availability check box to enable the user to specify the availability of the entire user profile. WhileFIG. 8Ashows a particular number and arrangement of UI features, in alternative implementations, UI800A may include additional, fewer, different or differently arranged UI features than those depicted.

Returning again toFIG. 7, as mentioned above with respect to receiving710user profile data and receiving730profile availability data, receiving750contact profile data may include presenting a UI that enables manual entry of the contact profile data and/or a more automated data entry process such as downloading, importing or retrieving the contact profile data. Additionally, or alternatively, the contact profile data may be similar in nature and scope to the user profile data mentioned above (e.g., name, profession, job title, certifications, skills, interests, street addresses, telephone numbers, e-mail addresses, etc.).

Generating760contact profiles may include one or more operations similar to those used to generate720a user profile. For instance, generating760contact profiles may include using previously received750contact profile data to create data structures that describe one or more contacts of a given user (e.g., relatives, friends, neighbors, colleagues, associates, etc.). In certain implementations, generating760contact profiles may include storing the contact profiles in, for example, a memory320of user device210. Additionally, or alternatively, generating760contact profiles may include communicating the contact profiles to, for example, a profile message server230for storage.

Similar to receiving730user profile availability data, receiving770contact profile availability data may include presenting a UI that enables a user to input the contact profile availability data. Additionally, or alternatively, receiving770contact profile availability data may include receiving profile availability data in a more automated fashion, such as downloading the contact profile availability data from another user device, importing the contact profile availability data from an application or reading the profile availability data from a removable storage device. In some implementations, receiving770contact profile availability data may be executed at the same time as, or in combination with, receiving710user profile data.

Similar to designating740a user profile availability status, designating770an availability status for contact profiles may include updating one or more contact profile data structures to indicate a willingness to receive at least some profile messages and user notifications corresponding thereto. In certain implementations, the availability statuses for each contact profile may be designated by the individual. Additionally, or alternatively, some implementations may have an option to designate a collective availability status for all contact profiles. Also, similar to the user profile availability status, the availability status for contact profiles may function as an additional filter for certain profile messages (e.g., commercial profile messages, non-emergency profile messages, etc.).

FIG. 8Billustrates an example of a UI800B for receiving contact profile data. Similar to the UI ofFIG. 8A, UI800B includes a number of text boxes that can enable a user to input contact profile data. Additionally, each text box corresponds to a text box label, such as “Name,” “Profession,” “Certification,” “Skill,” or “Key Words,” that indicates the type of information that should be entered into each text box. The UI800B also includes check boxes that enables the user to specify whether the user's skills will be made available. WhileFIG. 8Bshows a particular number and arrangement of UI features, in alternative implementations, the UI800B may include additional, fewer, different or differently arranged UI features than those depicted.

FIG. 9is a flowchart of an example process900for broadcasting a profile message. As depicted, process900includes receiving910profile message data, generating920a profile message, determining930an appropriate communication medium, broadcasting940a profile message and generating950a dynamic dashboard. In certain implementations, process900may be performed by one or more components of user device210, such as processing unit310. However, in other implementations, process900may be performed by the components of one or more other devices, including or excluding user device210. Process900will be described with corresponding references to example user interfaces illustrated inFIGS. 10A-10B.

Receiving910profile message data may include presenting a user interface (UI) to enable a user to input profile message data. Profile message data may include a message type, target profile data, message content data and geographic data. Similar to one or more of the UIs discussed above, a UI for receiving910profile message data may implement a variety of user interface technologies, including a graphical UI (GUI), an audio UI or a combination thereof. Additionally, or alternatively, receiving910profile message data may include receiving or retrieving data from sources other than the user. For example, receiving910profile message data may include communicating with a telecommunications network, global satellite network or other network to acquire geographic data corresponding to a current geographic location. In another example, receiving910profile message data may include retrieving locally stored data, such as a name, telephone number, user device ID or other information. Generating920a profile message may include creating a message utilizing at least some profile message data.

FIG. 10Aillustrates an example of a UI1000A for receiving profile message data. UI1000A includes four text boxes that can enable a user to input profile message data. Each text box corresponds to a text box label, such as “Message Type,” “Key Words,” “Description” and “Range” that indicates the type of information that should be entered into each text box. UI1000A also includes an Attach Media button and a Send Profile Message button, the functions of which are apparent and need not be discussed in detail. In certain implementations, data inputted into the Key Words text box may correspond to target profile data, and data inputted into the Description text box may correspond to messages data, as discussed herein. Also, data inputted into the Range text box may correspond to geographic data used to specify a broadcast distance for a profile message. In certain implementations, UI1000A may also include a dropdown menu for specifying a message type (e.g., emergency, warning, declaration, commercial, non-commercial, etc.). WhileFIG. 10Ashows a particular number and arrangement of UI features, in alternative implementations, UI1000A may include additional, fewer, different or differently arranged UI features than those depicted.

Returning again toFIG. 9, determining930an appropriate communication medium may include accessing a prioritized list of communication networks, identifying currently available communication networks and selecting a communication network with the highest priority. For example, a user device210located in a particular area may have the option of broadcasting a profile message via several different networks, including a telecommunications network, a satellite network, a user device relay network and/or a wireless LAN. In order to determine which communication network to use, the user device210may access a prioritized list of communication networks that identifies, for example, the telecommunications network as being preferred over the other available networks. As such, the user device210may proceed by broadcasting940the profile message using the telecommunications network.

Generating950a dynamic dashboard may include monitoring or tracking a profile message and producing a GUI that displays real-time statistics regarding a profile message. For instance, a dynamic dashboard may include the quantity of user devices that have received the profile message, the quantity of user devices with profiles that match the profile message, the quantity of user devices that have responded affirmatively and/or negatively to the profile message, and the quantity of outstanding profile matches (i.e., user devices with profiles matching the profile message but have not yet responded). In certain implementations, generating950a dynamic dashboard may include options for contacting one or more of the user devices with profile matching the profile message. Additionally, or alternatively, generating950a dynamic dashboard may include corresponding with, for example, a profile message server230configured to maintain real-time data regarding user devices, profile messages and responses to profile messages.

FIG. 10Billustrates an example of a UI1000B of a dynamic dashboard. UI1000B includes a summary of matches and responses corresponding to a broadcasted940profile message. More particularly, UI1000B includes the number of outstanding matches, the number of affirmative responses and the number of negative responses. An outstanding match may correspond to matching profiles that have not yet responded to the profile message. An affirmative response may correspond to matching profiles that have responded to the profile message (e.g., by accepting an invitation, sending a text message, initiating a telephone call, etc.). A negative response may correspond to matching profiles that received the profile message but have decided to ignore or otherwise disregard the profile message. UI1000B also includes a Contact Mike button, (since Mike Walton responded affirmatively), a Cancel Profile Message button and an Exit button, the functions of which are apparent and need not be discussed in detail. WhileFIG. 10Bshows a particular number and arrangement of UI features, in alternative implementations, UI1000B may include additional, fewer, different or differently arranged UI features than those depicted. For instance, UI1000B may also include an option for viewing profile information of Mike Walton.

FIG. 11is a flowchart diagram of an example process1100for responding to a profile message. The depicted process1100includes receiving1110a profile message, determining1120whether the profile message corresponds to an exception, determining1130whether the user profile is available, relevant and in range, notifying1140a user, and generating1150a dynamic dashboard. Process1100also includes determining1160whether contact profiles are available, forwarding1180the profile message to contacts and disregarding1170the profile message. In certain implementations, process1100may be performed by one or more components of user device210, such as processing unit310. However, in other implementations, process1100may be performed by the components of one or more other devices, including or excluding user device210. Process1100will be described with corresponding references to example user interfaces illustrated inFIGS. 12A-12E.

Process1100may begin by receiving1110a profile message. As discussed above, a profile message may be comprised of, for example, an originator, a message type, key words, message content data, geographic data, or other types of data. Upon receiving1110the profile message, process1100may proceed by determining1120whether the profile message qualifies for an exception. In certain implementations, whether a profile message qualifies for an exception may depend on one or more of a variety of factors and conditions. For instance, a profile message may qualify for an exception if the profile message is an emergency message or a warning message, which may, for example, be specified by the message type of the profile message. Other exceptions may be based on a broadcast source, a broadcast time, a reception time, message content, or other characteristics of the profile message. If the profile message qualifies as an exception (1120—Yes), a user may be notified1140regarding the profile message (which is discussed in greater detail below).

However, if the profile message does not qualify as an exception (1120—No), then process1100may proceed by determining1130whether a user profile is available, relevant and in range. Whether a user profile is available may depend on, for example, user profile availability data previously received from a user (see, for example,FIG. 7, block730). Whether the profile message is relevant (e.g., matches or is sufficiently relevant) to the user profile may depend on a variety of factors. In some implementations, determining1130whether the profile message is relevant may include a comparison of the target profile data of the profile message and key words of the user profile. Additionally, or alternatively, determining1130whether the profile message is relevant may include a comparison of several portions of the profile message (e.g., the target profile data, the message data, the geographic data, etc.) to several portions of the user profile (e.g., name, profession, skills, key words, interests etc.).

For example, if the profile message data of the profile message references a doctor as the target profile data and the user profile data includes the word “doctor” or “medical doctor” in a profession field or a key word field of the user profile, then process1100may conclude that the profile message matches, is relevant, or at least sufficiently relevant, to the user profile in question. In some implementations, determining1130whether a profile message is relevant to a user profile may include processes in addition to and/or more sophisticated than the comparisons just described. For instance, some implementations of process1100may evaluate synonyms, acronyms, alternative spellings, potential equivalents and different languages when determining whether a profile message is relevant to a user profile.

Additionally, or alternatively, process1100may apply a more flexible degree of relevancy depending on various factors, such as the apparent importance of a particular profile message. For example, if the profile message includes the terms “injured,” “emergency” or “doctor,” process1100may broaden the scope of the term “doctor” to include “physician,” “nurse,” “EMT” (Emergency Medical Technician) and “medical professional” (an increased level of flexibility may apply to the “in Range” requirement discussed below).

Similar to determining whether a user profile is relevant to a profile message, determining whether a user profile is in range, may also include a variety of factors and conditions. For instance, making this determination may include ascertaining the current location of the user device broadcasting the profile message, the user-specified broadcast distance for the profile message, and the current location of the user device receiving the profile message. In some implementations, the current location of the user device broadcasting the profile message and the user-specified broadcast distance may be ascertained by accessing the geographic data included in the profile message. The current location of the user device receiving the profile message may be determined by communicating with one or more networks220(e.g., a telecommunications network, a satellite network, a relay network and/or a LAN).

Upon acquiring the foregoing data, the distance between the user devices may be compared to the user-specified distance to determine1130whether the user profile is in range (i.e., whether the user device receiving the profile message is within the broadcast range specified by the user broadcasting the profile message). While determining1130whether the user profile is in range may be accomplished in the manner described above, it should be appreciated that alternative ways of doing so are possible and may involve fewer, additional, or alternative operations.

If the user profile is available, relevant, and in range (1130—Yes), then process1100may proceed by notifying1140a user of the profile message. Notifying1140the user of the profile message may be done in a variety of ways. For instance, notifying1140the user may include generating one or more sounds, vibrations, textual message, graphics, or any combination thereof. Additionally, or alternatively, notifying the user may include automatically sending an e-mail message, instant message, text message or initiating a telephone call. In certain implementations, notifying1140the user may include providing the user with an opportunity to accept or decline the profile message (which may also be done via the dynamic dashboard).

FIG. 12Aillustrates an example UI1200A notifying a user of a profile message. In this example, the user notification includes the phrase “PROFILE MESSAGE ALERT!” in a relatively large, boarded area of the UI. The UI also includes a View Message Details button and an Ignore Message button, the functions of which are apparent and need not be discussed in detail.FIG. 12Billustrates an example UI1200B displaying the details of a profile message. For instance, UI1200B includes the message “Jack: hiking injury—remote location. need medical attention immediately. -sent 4:24 pm” In this example, “Jack” is the name of the individual that broadcasted the profile message, and “-sent 4:24 pm,” indicates the time that the profile message was broadcasted (or received). In certain implementations, both “Jack” and “-sent 4:24 pm” may have been automatically included in the profile message (see, for example,FIG. 9, blocks910-920). By contrast, “hiking injury—remote location. need medical attention immediately” may correspond to message content that was manually inputted by the individual broadcasting the profile message (see, for example,FIG. 9, blocks910-920). UI1200B also includes a View Dashboard button, a Respond to Message button and an Ignore Message button, the functions of which are apparent and need not be discussed in detail.

Returning toFIG. 11, process1100may include generating1150a dynamic dashboard. A dynamic dashboard may monitor various aspects of the profile message and actions or events corresponding thereto. For instance, the dynamic dashboard may provide a graphical representation of the quantity of user devices210that have received the profile message, the quantity of user devices210with profiles that match the profile message, the quantity of user devices210that have responded affirmatively, and/or negatively to the profile message and/or the quantity of outstanding profile matches (i.e., user devices that have user profiles matching the profile message but that have not yet responded).

Additionally, or alternatively, the dynamic dashboard may display profile information, location information, and/or other data, regarding the individuals responding to the profile message. In this manner, the dynamic dashboard may better inform a user about how to respond to the profile message. For example, if the dynamic dashboard indicates that multiple users have already responded affirmatively to the profile message, the user may better determine whether the needs or requests of the user originating the profile message have been or will be satisfied. In some implementations, the dynamic dashboard may be based on data received from one or more profile message servers230configured to monitor profile messages and provide real-time updates to the user device210broadcasting the profile message and the user devices210receiving the user-specific messages. Additionally, or alternatively, the dynamic dashboard may be based on data that is passed between user devices210directly (e.g., without the assistance of a profile message server230).

The dynamic dashboard may enable the user to respond to the profile message. In certain implementations, enabling the user to respond to the profile message may include providing options in a GUI for the user to select between initiating a telephone call, sending a voicemail, a text message, an instant message, or attempting to initiate a video conference. Additionally, or alternatively, enabling the user to respond to a profile message may include providing the user with a geographic map indicating the origination location of the profile message and highlighting an appropriate route for traveling to the user that originated the profile message.

FIG. 12Cillustrates an example UI1200C displaying a dynamic dashboard. As depicted, the dynamic dashboard includes a list that includes the quantity of outstanding matches, the quantity of affirmative responses, and the quantity of negative responses. The dynamic dashboard also includes a check box for affirmatively responding to the corresponding profile message. The dynamic dashboard further includes a Respond to Message button, a Locate Sender button and an Ignore Message button, the functions of which are apparent and need not be discussed in detail.

FIG. 12Dis an example UI1200D displaying several options for responding to a profile message. As depicted, UI1200D includes a Telephone Call button, a Text Message button, a Video Conference button, a Locate Sender button and an Ignore Message button. As such, UI1200D provides a user with various ways to immediately respond to a profile message.FIG. 12Eis an example UI1200E displaying a geographic map. The UI1200E also includes a current location of the user device that received the profile message and an appropriate route for traveling to the current location of the user device that broadcasted the profile message. Similar to other features of the dynamic dashboard, the mapping services described herein may also be updated in real-time. In addition, the UI1200E also includes a Respond to Message button and an Ignore Message button, the functions of which are apparent and need not be discussed in detail.

Returning toFIG. 11, when process1100determines that a user profile is not available, relevant, or in range (1130—No), process1100may proceed by determining1160whether any contact profiles are available. This may be done in a manner that is similar to determining1130whether the user profile is available, as discussed above. If none of the contact profiles are available (1160—No), process1100may proceed by disregarding1170the profile message. However, if at least one of the contact profiles is available (1160—Yes), then process1100may proceed by forwarding1180the profile message to the user device of any such contacts. In certain implementations, process1100may determine whether any of such contacts satisfy the “in range” requirement discussed above and forwarding1180the profile message to those contacts.

FIG. 13is a flowchart diagram of another example process1300for responding to a profile message. Process1300includes numerous operations that are each discussed in detail below. It should be noted, however, that process1300may be performed by one or more components of user device210, such as processing unit310. Alternatively, process1300may be performed by the components of one or more other devices, including or excluding use device210.

Process1300may begin by determining1305whether a profile message has been received. If no profile message has been received (1305—No), process1300may wait1310until a profile message is received. When a profile message has been received (1305—Yes), process1300may proceed by determining1320whether the profile message was already received. This may be done by, for example, comparing an ID of the profile message to one or more identities of recently received profile messages. If the profile message has already been received (1320—Yes), then process1300may proceed by waiting1310for another profile message to be received. Process1300may also send1315the profile message to one or more contacts with matched distances.

If the profile message has not already been received (1320—No), then process1300may proceed by determining1325whether the profile message matches (e.g., is sufficiently relevant to) a user profile. If profile message does not match the user profile (1325—No), then process1300may proceed by waiting1310for another profile message to be received. Alternatively, if the profile message is sufficiently relevant to the user profile (1325—Yes), then process1300may continue by alerting1330a user and displaying the profile message, which may be recorded in a memory1335. In certain implementations that include a profile message server230, memory1335may represent a storage device550or other component of the profile message server230. Additionally, or alternatively, memory1335may represent a memory320or other component of a user device210.

Process1300may continue by displaying1340a dashboard with responded users and enabling1345the user to respond affirmatively or negatively to the profile message (e.g., accept or decline an invitation to offer aid). If the user responds negatively (1345—No), process1300may wait1310for another profile message to be received. However, if the user responds affirmatively (1345—Yes), process1300may update memory1335with the user's affirmative response. In certain implementations, process1300may also update the memory1335when the user responds negatively.

Process1300may include displaying1350a map. Process1300may provide a user with the option of opening1355a communication channel and launching1360a voice/text communication with the with the user device that originated the profile message. Process1300may provide the user with the option of obtaining1365Global Positioning System (GPS) services. If the user declines (1365—No), then process1300may wait1310for another profile message to be received. However, if the user accepts GPS services (1365—Yes), process1300may launch1370GPS services, which may include modifying the map (1350) with an appropriate route for traveling to the geographic location where the profile message originated.

FIG. 14is a flowchart diagram of an example process1400for managing user devices. The depicted process1400may include receiving1410user profiles and contact profiles, mapping1420the user profiles and contact profiles, monitoring1430user profile availability statuses, and monitoring1440geographic locations of user profiles and contact profiles. Process1400may be performed by one or more components of profile message server230, such as processor520. Alternatively, process1400may be performed by the components of one or more other devices, including or excluding profile message server230.

Process1400may begin by receiving user profiles and contact profiles. In certain implementations, this may include a profile message server230receiving a user profile and contact profiles from one or more user devices210. Receiving1410user profiles and contact profiles may include storing the user profiles and contact profiles. As mentioned above, a user profile and a contact profile may each include data. Process1400may continue by mapping1420user profiles and contact profiles. In certain implementations, mapping1420user profiles and contact profiles may include populating a memory, which may include a relational database, with proper associations between the user profiles and the contact profiles.

Process1400may include monitoring1430user profile availability statuses. In some implementations, this may include receiving updates from user devices whenever a new user profile or contact profile is created or updated and updating a local memory or storage device accordingly. Process1400may include monitoring1440geographic locations of user profiles and contact profiles. In certain implementations, this may be done for one or more user profiles or contact profiles, continuously, periodically or in response to a specific event, such as receiving a profile message from a user device.

FIG. 15is a flowchart diagram of an example process1500for managing profile message communications. The depicted process1500may include receiving1510profile messages, identifying1520user profiles and contact profiles in a specified geographic area, excluding1530non-available profiles, excluding1540non-relevant profiles, broadcasting1550profile messages to the remaining profiles and providing1560user devices with dynamic dashboard data. Process1500may be performed by one or more components of profile message server230, such as processor520. Alternatively, process1500may be performed by the components of one or more other devices, including or excluding profile message server230.

Process1500may include receiving a profile message. In some implementations, the profile message may be received from a user device210. As discussed above, a profile message may include profile message data, such as originator data, a message type, target profile data, message content data and/or geographic data.

Process1500may include identifying user profiles and contact profiles in a specified geographic area. In some implementations, process1500may accomplish this based on the geographic data contained in the profile message. Additionally, or alternatively, identifying1520user profiles and contact profiles in a specified area may include generating a list of the user profiles and contact profiles that can be used in subsequent process1500operations. For example, process1500may include excluding1530non-available profiles and excluding1540non-relevant profiles from the list of user profiles and contact profiles. Process1500may broadcast profiles messages to any user profiles or contact profiles in the list and providing1550user devices210corresponding to said user profiles and contact profiles with dynamic dashboard data, thereby enabling the user devices210with the dynamic dashboard data features and operations described herein.

FIG. 16is a diagram that illustrates an example implementation1600of systems and/or methods described herein. As depicted, implementation1600may include several user devices1610-1670(also referred to as Jack1610, Ann1620, Jim1630, Doctor Walton1640, Emergency Services1650, Doctor Allen1660and Doctor Anderson1670), a telecommunications network1680, Doctor Walton's vehicle1642and an ambulance1652. In certain implementations, each of the user devices1610-1670may correspond to user device210, and telecommunications network1680may correspond to network220.

While hiking in a remote area, Jack1610has become ill and is in need of immediate medical attention. Jack1610tries calling for emergency services (e.g., “911”), but is unable to get cellular reception because of his location. As such, Jack1610broadcasts a profile message hoping to get help. Jack1610assigns an Emergency (Help Seeking) message type to the profile message, includes an audio recording and text message, as the message content, and specifies a broadcast range of 5 miles. Additional information, such as Jack's name and current geographic location, is automatically included in the profile message, which is shortly thereafter broadcasted 5 miles as specified by Jack1610.

Despite the broadcast range, the profile message does not reach the telecommunications network1680. However, the profile message does reach Ann1620, a fellow hiker in the area. While Ann1620is closer to a telecommunications network1680than Jack1610, Ann1620is still too far away to get any service from the telecommunications network1680. As such, Ann's user device1620relays the profile message to Jim1630, and Jim1630communicates the profile message to the telecommunications network1680.

The telecommunications network1680then broadcasts Jack's profile message, which is received by, and matches the profiles of, Doctor Walton1640, Emergency Services1650, Doctor Allen1660and Doctor Anderson1670. Upon receiving Jack's profile message, Doctor Walton1640immediately accepts Jack's request for aid, obtains Jack's current geographic location, travels1642to Jack's location and administers the necessary medical care. By accessing a dynamic dashboard, Doctors Allen1660and Anderson1670can see that Doctor Walton1640has already responded to Jack's request for aid and, therefore, see there is no need to take additional action. Eventually, Jack's message reaches emergency services1650and an ambulance1652comes and takes Jack to a nearby hospital.

FIG. 17is a diagram that illustrates an example implementation1700of systems and/or methods described herein. As depicted, implementation1700includes user devices1710-1750(also referred to as Julie1710, Plumber Alex1720, Plumber Ben1730, Plumber Allen1740and Plumber Dan1750), a telecommunications network1760and Julie's home1770. The implementation1700also includes an example UI for creating profile messages1780and an example UI for accepting responses1790, which correspond to user device1710. In certain implementations, each of the user devices1710-1750may correspond to user device210, and telecommunications network1760may correspond to network220.

With the pipes in her house1770leaking water, Julie1710has decided to broadcast a profile message in an attempt to quickly obtain plumbing services from nearby plumbers. As illustrated in UI1780, Julie enters the words “plumber” and “handyman” as key words and types “Pipes broken-need help ASAP” as her description. She also enters 2 miles as her broadcast range since she needs help quickly. If Julie1710wanted, she could also include an audio message, a photo, or a video via the Attach Media button in UI1780.

After inputting the necessary data, Julie1710then selects the Broadcast Message button of UI1780, and her profile message is broadcasted to Plumber Alex1720, Plumber Ben1730, Plumber Allen1740and Plumber Dan1750via telecommunications network1760. Shortly thereafter, Plumber Alex1720, Plumber Ben1730, Plumber Allen1740and Plumber Dan1750each responds affirmatively to Julie's1710profile message. As illustrated in UI1790, each of the plumbers' affirmative responses is listed for Julie1710to consider. To help her decide, Julie1710contacts each plumber, starting with Plumber Alex, by marking the box appropriate check box and pressing the Contact Responder button of UI1790.

FIG. 18is a diagram that illustrates an example implementation1800of systems and/or methods described herein. As depicted, implementation1800includes user devices1810-1840(also referred to as Nurse1810, Ashok1820, Alex1830, and Ben1840) and a telecommunications network1850. The implementation1800also includes example UI1870for creating profile messages and example UI1880for accepting responses, which correspond to Nurse1810. In certain implementations, each of the user devices1810-1840may correspond to user device210, and telecommunications network1850may correspond to network220.

A newly admitted hospital patient speaks a foreign language that none of the doctors, nurses or staff can recognize. Nurse1810, therefore, decides to broadcast a profile message in an attempt to quickly locate a translator. As illustrated in UI1870, Nurse1810inputs the key words “Foreign Language Skills,” and the description “Need Translator. Language unclear, see voicemail.” Since the translation services that Nurse1810is seeking could take place over the telephone, Nurse1810enters a relatively large broadcast range of 20 miles to increase the chance of finding an appropriate translator. Additionally, since Nurse1810does not know what language the newly admitted patient is speaking, Nurse1810makes a recording of the patient's voice and attaches the recording to the profile message. Nurse1810then presses the Broadcast Message button, causing the profile message to be broadcasted via telecommunications network1850to user devices1820-1840with matching profiles (Ashok1820, Alex1830and Ben1840).

One of the users, Ashok, is fluent in the foreign language and able to act as a translator. Therefore, Ashok responds affirmatively to the profile message. As illustrated in UI1880, Nurse1810receives the response from Ashok1820and lists Ashok1820as an affirmative responder to the recently broadcasted profile message. Nurse1810may then mark the box corresponding to Ashok in UI1880and press the Contact Responder button to initiate a telephone call, video conference, etc.

FIG. 19is a diagram that illustrates an example implementation1900of systems and/or methods described herein. As depicted, implementation1900includes user devices1910-1940(also referred to as Jane1910, Dan1920and potential customers1930-1940), a telecommunications network1950, and a home1960. Implementation1900also includes an example UI1970for creating a user profile and an example UI1980for accepting offers, which corresponds to user device1910. In certain implementations, each of the user devices1910-1940may correspond to user device210, and telecommunications network1950may correspond to network220.

Dan1920owns a window replacement business and is interested in finding new customers and generating business. As such, Dan1920periodically broadcasts profile messages to potential customers1930-1940over communications network1950. Dan' profile messages typically include discounts availability information regarding his window replacement services. Jane1910would like to hire someone to install a new window in her home1960. Therefore, as depicted in UI1970, Jane1910decides to update her user profile to include the key word “New Window.” Before long, Jane begins to receive profile messages from Dan1920, as illustrated in UI1980. Satisfied with her selection of offers, Jane accepts one of Dan's offers by marking the appropriate discount and selecting the Accept Offer button. As a result, Dan is notified of Jane's decision and may schedule his work accordingly. Since Jane is no longer interested in receiving window replacement offers, she again accesses her user profile and removes the phrase “New Window” from her profile.

FIG. 20is a diagram that illustrates an example implementation2000of systems and/or methods described herein. As depicted, implementation2000includes user devices2010-2040(also referred to as Principal Tom2010, Students2020, Parents2030, and John2040) and a telecommunications network2050. Implementation2000also includes example UI2060for creating a user profile and example UI2070for receiving a notification, which may be implemented on user device2040. In certain implementations, each of the user devices2010-2030may correspond to user device210, and telecommunications network2050may correspond to network220.

Principal Tom2010is a high school principal at Acton Boxborough High School, and John2040has a daughter that is a student at the high school. Via telecommunications network2050, Principal Tom2010periodically sends out notices and announcements to parents2030and students2020using profile messages. As such, in order to receive Principal Tom's notices and announcements, John2040accesses the user profile and enters “Acton Boxborough High School” in the Key Words text box, as illustrated in UI2060. A few days later, as illustrated in UI2070, John2040receives a profile message from Principal Tom2010stating that “Acton Boxborough High School Principal: School Canceled, Snow Day.”

As described above, in an implementation, user profiles may be used to search for and communicate with, in real-time, one or more individuals in a given geographic area. In certain implementations, a first user device may communicate with a second user device by broadcasting a profile message in a geographic area. Upon receiving the profile message, the second user device may determine whether the profile message matches a user profile of the second user device. If the profile message does not match the user profile, then the second user device may disregard the profile message. However, if the profile message matches the user profile of the second user device, then the second user device may notify the user of the second user device and enable the user to respond to the profile message.

For example, while series of blocks have been described with regard toFIGS. 7,9,11, and13-15, the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel.

Further, certain implementations may involve a “component” that performs one or more functions. These components may include hardware, such as an ASIC or a FPGA, or a combination of hardware and software.