The present application generally relates to a service offering provided by an online or web-based job hosting service, which is known and referred to in the art as a paid job posting or promoted job posting. Specifically, the present application relates to a data processing framework and technique used in matching online job postings with member profiles of members of a job hosting service, particularly when the online job postings are subject to a pay-for-performance model.
An online or web-based job hosting service is an Internet-enabled service that allows those who are seeking employees to create and post online job postings that describe available job opportunities, while simultaneously allowing those seeking job opportunities to search for and browse recommended online job postings. One of the fundamental ways in which online job hosting services operate is by performing some type of matching between characteristics or attributes of a job opportunity as expressed by the various data fields of the online job posting, with characteristics or attributes of a job-seeking member, as may be embodied in a member profile associated with the job-seeking member. Online job hosting services tend to use these matching algorithms in both recommendation systems as well as search engines. For instance, the matching of job postings to a member, or the matching of members to a job posting, occurs in several different contexts, some of which involve recommendation systems, and in other instances, search engines.
Many online job hosting services offer a job posting service that involves a pay-for-performance model. For example, when a job-posting member is providing information to generate a job posting, the job-posting member may be prompted to pay a fee, or provide a bid for an auction-based system, and in exchange for the fee or bid, the job posting will receive certain beneficial handling or processing via the job hosting service. For example, when a job-seeking member performs a search for relevant job postings, a pay-for-performance job posting, referred to herein as a paid job posting or promoted job posting, may be selected for presentation in a prominent position within the search results that are presented to the job-seeking member. Alternatively, a paid or promoted job posting may be presented in a format (e.g., bold text, bright colors, etc.) that differs from other job postings, so as to draw attention to the paid or promoted job posting. Similarly, when job postings are recommended to a job-seeking member who may be browsing recommended job postings, a paid or promoted job posting may be selected for presentation in a particular presentation format, or prominent position within several recommended job postings. Additionally, a paid or promoted job posting may be brought to the attention of certain job-seeking members via email, mobile application notifications, or other communication channels. Importantly, a paid or promoted job posting is generally subject to some additional beneficial processing, whereas free or non-paid job postings, referred to herein as organic job postings, are not subject to the same beneficial processing as their promoted counterparts.
Embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which:
Described herein are methods and systems to facilitate a data processing framework and technique for use in matching an online job posting with member profiles of members of a job hosting service, and for use in matching a member profile of a member with one or more paid or promoted online job postings. In the following description, for purposes of explanation, numerous specific details and features are set forth in order to provide a thorough understanding of the various aspects of different embodiments of the present invention. It will be evident, however, to one skilled in the art, that the present invention may be practiced and/or implemented with varying combinations of the many details and features presented herein.
For purposes of the present disclosure, a member of an online service is an end-user of the online service. End-users, or members, who generate job postings are referred to herein as job-posting members, or simply job-posters, whereas members who are seeking employment opportunities by browsing, searching for, or otherwise reviewing online job postings are referred to herein as job-seeking members or simply, job-seekers.
With many conventional online job hosting services, a job-seeker who is actively searching for a job opportunity may utilize a website that provides a search engine to perform a search for job postings by specifying a search query including one or more keywords for the search. Similarly, a job-seeker may invoke a request to view a list of recommended job postings, as generated by a job recommendation service. In either case, when a request to present job postings to a particular job-seeking member is received at the online job hosting service, the request may be processed by the online job hosting service in two stages. For example, as illustrated in
As shown in
The conventional selection and ranking technique as described in connection with
However, due to the nature of the conventional selection and ranking algorithms, as described above in connection with the description of
Another problem with many conventional selection and ranking techniques, such as that described in connection with
Consistent with embodiments of the present invention, an improved selection technique—referred to as a targeting technique—is provided for use with paid or promoted job postings. Using the technique presented herein, when a person is creating a job posting, that person may be prompted to pay to promote the job posting, while being presented with accurate information reflecting various characteristics of the qualified candidate pool, the size of the qualified candidate pool, and in some instances, the size of the expected target audience. As described in greater detail below, for any promoted job posting, the qualified candidate pool is a group of members determined via a graph (e.g., a member profile-to-job posting graph), which uses matching logic, referred to herein as implicit facets, and in some instances keywords used in search queries, to map member profiles to job postings. Accordingly, the qualified candidate pool is the group of members who, by virtue of their member profile attributes and search keywords, are linked to a promoted job posting via an implicit facet. However, as not all members are actively logging into and using the online service, the expected target audience for a promoted job posting is generally a subset of the qualified candidate pool, determined in part through a process referred to herein as inventory forecasting. Through the process of inventory forecasting, the size of the expected target audience—that is, the number of members to whom the job posting might be presented, if the job posting is promoted—can be accurately determined. Additionally, through inventory forecasting, the expected number of job applications that the job posting is likely to generate, if promoted, can be accurately estimated. Advantageously, the information relating to the expected target audience can be presented to the job-poster, during the job posting flow, and is derived based on a combination of the targeting framework and inventory forecasting, as described in greater detail below.
First, a member profile-to-job posting graph is derived, offline, for mapping member profiles of members of an online service to job postings hosted by the online service. The graph is derived by generating what are referred to herein as implicit facets. Each individual implicit facet represents matching logic for matching member profiles to job postings. Each individual implicit facet is comprised of a combination of member profile attributes that are linked with a corresponding combination of job attributes. As such, when a member profile of a member has member profile attributes that correspond with or match the member profile attributes of a particular implicit facet, that member will be mapped to all of the job postings that have job attributes that correspond with or match the job attributes of the implicit facet.
Consider an example of an individual implicit facet, as shown immediately below, linking a combination of various member profile attributes and attribute values to a combination of job attributes and attribute values:
In this example, each attribute begins with a series of letters to indicate the attribute type. For example, a member profile attribute begins with the letters, “Mem” for “Member Profile Attribute,” whereas the job attributes begin with the letters, “Job” to indicate that the attribute is a job attribute. As evidenced by the symbol, “<==>”, the combination of member profile attributes and corresponding member profile attribute values, as shown on the left, are linked to the combination of job attributes and corresponding job attribute values, as shown on the right. Each attribute has a corresponding attribute value. For instance, in the example above, the attribute “MemTitle” is a member profile attribute (e.g., attribute type) and has the attribute value, “Data Scientist.”
Each individual facet maps one or more member profiles to one or more promoted job postings, via the combination of the linked attributes specified by the implicit facet. For example, any member who has a member profile with member profile attributes and corresponding values that match the member profile attributes and attribute values of a particular implicit facet will be mapped to or linked with that particular implicit facet, and thus mapped to or linked with any promoted job posting that has job attributes and attribute values that match the job attributes and attribute values of the particular implicit facet. Referring again to the example implicit facet shown above, if a member has a member profile indicating the member is skilled in machine learning, and currently employed at ACME Widgets with job title, “Data Scientist,” that member would be mapped to or linked with any promoted job postings that are mapped to the implicit facet. Similarly, a job posting for the company, Macrosoft, Inc, with job title, “Machine Learning Engineer” and desired skill, “Machine Learning” would map to all member profiles that are linked with the implicit facet.
In some instances, individual member profile attributes in the group of profile attributes for a particular implicit facet will match or intuitively correspond with a counterpart job attribute in the group of job attributes for the implicit facet. For instance, in the example above, the member profile attribute, “MemSkill” with corresponding attribute value, “Machine Learning” intuitively corresponds with the job attribute, “JobSkill” with the exact same attribute value, “Machine Learning.” One might expect a person having the skill, “Machine Learning” to be a qualified candidate for a job that requires that particular skill. However, in many instances, a member profile attribute in a group of member profile attributes for an implicit facet may have an attribute value that does not match or intuitively correspond with a counterpart attribute value in the group of job attributes for the implicit facet. For instance, again referring to the example implicit facet above, the member profile attribute “MemTitle” with corresponding attribute value, “Data Scientist” does not match the attribute value, “Machine Learning Engineer,” for the job attribute “JobTitle.”
Consistent with some embodiments, the member profile-to-job posting graph that maps the member profiles of members to job postings may have hundreds, or even thousands of individual implicit facets. Via the graph, each member profile may be mapped to one or more individual implicit facets, and each job posting may map to one or more implicit facets. As described in greater detail below, with some embodiments, the combination of linked attributes and corresponding attribute values that comprise each individual implicit facet are arrived at through a process of data mining, and in some instances machine learning and/or clustering algorithms, using as input, data relating to confirmed hires. In this context, a confirmed hire occurs when confirmation is obtained that a member, associated with a particular member profile, has accepted a job or position that corresponds with an online job posting. Accordingly, each confirmed hire can be represented as a pairing of a member profile, with all of its member profile attributes, and a job posting, with all of its job attributes, at a particular point in time when the member associated with the member profile was confirmed to have accepted a job described in the job posting. By analyzing, in the aggregate, a significantly large volume of data relating to confirmed hires through a process of data mining machine learning, and/or clustering techniques, patterns within the data can be identified. Specifically, implicit facets can generally be derived based upon identifying within the confirmed hires data (e.g., member profile and job posting pairs) combinations of member profile attributes and corresponding attribute values that frequently co-occur with job attributes and corresponding job attribute values.
Referring again to the example implicit facet set forth above, the linking of the attribute values, “Data Scientist” and “Machine Learning Engineer” for the member profile and job attributes corresponding with the attribute for a job title may result from a pattern identified within the confirmed hires data, where members having the job title, “Data Scientist” are frequently found to have accepted new employment positions with the job title, “Machine Learning Engineer.” While the linking of these two attributes may or may not intuitively make sense, a further example may better illustrate the point. Consider a scenario where, for some unknown and unexplainable reason, members who have the job title, “Senior Engineering Manager” are transitioning to employment positions with the job title, “Zookeeper.” While this may not intuitively make sense, if a significant number of members make this transition, the confirmed hires data will nonetheless reflect this unexpected and perhaps unexplained pattern in member job title transitions. Accordingly, by using a data driven approach that analyzes confirmed hires data to identify groups of corresponding member profile attributes and job attributes, unexpected and unexplained patterns may be identified. In this example, an implicit facet may be derived to include within the group of member profile attributes an attribute for a job title with attribute value, “Senior Engineering Manager,” and a corresponding job attribute for a job title, with attribute value, “Zookeeper.” Accordingly, with some embodiments, the generation of the plurality of implicit facets is the result of a data driven process involving analyses of historical data relating to confirmed hires.
Once the member profile-to-job posting graph has been derived, the relationships between member profiles and promoted job postings, as represented within the graph, are leveraged to generate information about an expected target audience for a new job posting. For example, when a person or organization is creating a new job posting, information about the new job posting can be analyzed to identify the relevant job attributes. Using the job attributes, the new job posting can be mapped to one or more implicit facets. The member profiles that are linked to or associated with the one or more implicit facets represent the qualified candidate pool for the new job posting. As each implicit facet is a combination of member profile attributes and job attributes, the information relating to these attributes can be provided to the person who is creating the new job posting to explain to that person the various characteristics that can be expected of members to whom the promoted job posting will be presented. Furthermore, the size of the qualified candidate pool can easily be obtained via a simple count of member profiles associated with the implicit facets to which the new job posting is linked. As described in greater detail below, the size of the expected target audience—generally, some subset of the qualified candidate pool—can be derived from historical data indicating how frequently members in the qualified candidate pool are invoking requests to view job postings.
Several additional technical advantages arise from generating and utilizing the member profile-to-job posting graph, as described herein. First, consistent with embodiments of the present invention, the member profile-to-job posting graph can be pre-computed. That is, the graph is derived offline, and pre-exists at the time when a particular member makes a request to view recommended job postings, or when a member performs a search for job postings. Because the graph is pre-computed, the latency associated with the candidate generation stage when processing a particular member request is significantly reduced, as compared to the conventional approach, such as that described in connection with the description of
Additionally, during the job posting flow, when a person is prompted to provide information about a job opportunity via one or more user interfaces, the job hosting service can utilize the pre-computed graph to quickly identify the qualified candidate pool for the promoted job posting. For instance, when the person creating the job posting has provided all of the information for the job described in the job posting, this information can be analyzed to identify the relevant job attributes, and these job attributes can then be used to identify one or more implicit facets to which the job posting can be linked or mapped. Accordingly, the member profiles linked to or associated with the identified one or more implicit facets represent the qualified candidate pool. In some instances, each implicit facet may have associated statistics that are pre-computed, for example, to indicate the number of member profiles and/or job postings that are associated with the implicit facet. Furthermore, as each individual implicit facet is a mapping of some relatively small number of member profile attributes to job attributes, the various attributes and corresponding attribute values that determine the qualified candidate pool can be used to provide an explanation to the job-poster creating the job posting of how or why various members are qualified for the job posting. A variety of other advantages will be apparent from the description of the several figures that follows.
As discussed above, one advantage in separating the selection logic 204 for organic job postings, from the targeting logic 202 for promoted job postings, is that the separate software-based techniques can be individually optimized to meet different metrics and/or requirements. For example, with some embodiments, the targeting logic 202 may be optimized to map members with job postings, based on data relating to confirmed hires or other historical data, whereas the selection and ranking for the organic job postings may be optimized based on a combination of attribute matching and member engagement—that is, the activity level of members at the online service. Accordingly, in various embodiments, the metrics by which the targeting logic 202 and the selection logic 204 are optimized may vary.
In processing the request 214, the targeting logic 202 uses a member profile-to-job posting graph to identify job postings to which the member has been linked, via the graph. An example of the member profile-to-job posting graph, and how it may be derived, is presented and described in connection with
In various alternative embodiments, different techniques may be used to analyze and process the confirmed hires data 300 to derive the individual implicit facets (e.g., labeled in
Consistent with some embodiments, to generate individual implicit facets, the member profiles and the job postings associated with the confirmed hires data 300 are first separately analyzed to generate separate clusters for the member profiles, and the job postings. For example, as a result of the initial clustering, clusters of member profiles are determined, with each cluster being associated with a combination of member profile attributes and corresponding attribute values. Similarly, for the job postings associated with the confirmed hires data, the result of the clustering is clusters or groups of job postings with each cluster or group being associated with a combination of job attributes and corresponding values. Once the clustering has been done for the member profiles and the job postings, links or connections between individual clusters (e.g., one group of member profiles and one group of job postings) are formed based on an analysis that determines the number of member profiles within a cluster that are associated with job postings in another cluster. If, for example, the number of member profiles from a member profile cluster linked with job postings in a job cluster exceeds some threshold, this may indicate that members who possess the member profile attributes of the member profile cluster are strong candidates for job postings having job attributes associated with the job profile cluster.
While
As shown in
Referring now to
Referring briefly again to
Referring now to
By way of example, as shown in the request activity table 500, the member, with member identifier “MEMBER1,” previously made a request, as evidenced by the row with reference number 502. This member, “MEMBER1,” has a member profile that maps to the implicit facet designated as “C1” as indicated in column two with heading, “IMPLICIT FACET” 506. The columns with headings, “REQUEST (1 Day),” 510, “REQUEST (2 Day),” 512 and “REQUEST (5 Day),” 514 are updated to reflect the number of requests, consistent with the information reflected for that row, which have been received and processed within a particular time period. For instance, referring again to the row with reference 502, as indicated by the value (e.g., “1”) in column five 512, one request of a member with a member profile mapped to the implicit facet designated as “C1” has been processed and received within the last two days. Similarly, as evidenced by the value (e.g., “1”) in the row with reference 502 at column six, with reference 514, one request of a member with a member profile mapped to the implicit facet designated as “C1” has been processed and received within the last five days.
Referring now to the row with reference number 504 in the request activity table 500, the same member, “MEMBER1” also invoked a request with a search query that included the keyword, “machine learning,” as indicated in column three with heading “KEYWORD” 508. While some relevant requests may be associated with requests to view a listing of recommended job postings, other requests invoked by members may involve a search of job postings, for example, for which the member has specified one or more keywords as part of a search query. Accordingly, as shown in the table 500, the column with the heading, “KEYWORD” is provided to capture and reflect a request that has been received and processed, where the member included a particular keyword as part of a search query.
Consistent with embodiments of the invention, using a table similar to the example table 500 illustrated in
Consistent with some embodiments, the historical information reflected in the request activity table 500 may be used, in combination with other information, to derive the size of the expected target audience—that is, the expected number of impressions or opportunities to present a particular promoted job posting to a member in the qualified candidate pool for that promoted job posting. For example, in an auction-based system, where a job-posting member provides a bid amount and competes, via auction, against others for winning the opportunity to have a promoted job posting presented to a member of a qualified candidate pool, the bid amount will also impact the inventory forecast, and ultimately the size of the expected target audience. Therefore, at least with some embodiments, the historical information reflected in the request activity table may be one of several data inputs to an algorithm that calculates or determines the inventory forecast for a particular promoted job posting.
While implicit facets provide a mechanism to map member profiles to relevant promoted job postings via the linking of member profile attributes and job attributes, in many instances, a member's activity may also be important in determining relevant job postings for a member. Specifically, a member's search activity as evidenced by the particular search queries that a member uses in performing searches for job postings can be important information in recommending promoted job postings to the member. For example, in specific instances, certain members may be looking to make a career change, such that the transition that the member is hoping to make may be considered unconventional. For instance, whereas it may be conventional for a person employed as a software engineer (e.g., as a job title) to a first new job position as a senior software engineer, followed by a second transition to a job position as a data scientist, and so on, it may be considered less conventional or even unconventional for a member to transition from a job position as a software engineer, to a job position as a dentist or zookeeper. Accordingly, for this reason and others, in addition to matching member profile attributes to job attributes for purposes of recommending relevant job postings, it is also important to consider a member's search history.
Referring now to
In addition to mapping the new job posting 608 to one or more implicit facets 610 in the member profile-to-job posting graph, the job posting data 604 is provided as input to a trained machine learned model 612, which uses the input data to predict one or more keywords 614 that members will use when searching for the job posting 608. In some instances, the job posting data may be converted from raw text data to standardized job attributes, prior to being provided as input to the trained machine learned model 612. In any case, the keywords 614, predicted or output by the trained machine learned model 612, are then stored in association with the job posting as what are referred to as implicit keywords 614. The implicit keywords 614 are subsequently used to filter promoted job postings when processing member requests that involve keywords extracted from search queries, as described in greater detail below in connection with the description of
As shown in
In
In
In various implementations, the operating system 804 manages hardware resources and provides common services. The operating system 804 includes, for example, a kernel 820, services 822, and drivers 824. The kernel 820 acts as an abstraction layer between the hardware and the other software layers, consistent with some embodiments. For example, the kernel 820 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionality. The services 822 can provide other common services for the other software layers. The drivers 824 are responsible for controlling or interfacing with the underlying hardware, according to some embodiments. For instance, the drivers 824 can include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth.
In some embodiments, the libraries 806 provide a low-level common infrastructure utilized by the applications 810. The libraries 806 can include system libraries 830 (e.g., C standard library) that can provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 806 can include API libraries 832 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in a graphic context on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. The libraries 806 can also include a wide variety of other libraries 834 to provide many other APIs to the applications 810.
The frameworks 808 provide a high-level common infrastructure that can be utilized by the applications 810, according to some embodiments. For example, the frameworks 808 provide various GUI functions, high-level resource management, high-level location services, and so forth. The frameworks 808 can provide a broad spectrum of other APIs that can be utilized by the applications 810, some of which may be specific to a particular operating system 804 or platform.
In an example embodiment, the applications 810 include a home application 850, a contacts application 852, a browser application 854, a book reader application 856, a location application 858, a media application 860, a messaging application 862, a game application 864, and a broad assortment of other applications, such as a third-party application 866. According to some embodiments, the applications 810 are programs that execute functions defined in the programs. Various programming languages can be employed to create one or more of the applications 810, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third-party application 866 (e.g., an application developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third-party application 866 can invoke the API calls 812 provided by the operating system 804 to facilitate functionality described herein.
The machine 900 may include processors 910, memory 930, and I/O components 950, which may be configured to communicate with each other such as via a bus 902. In an example embodiment, the processors 910 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 912 and a processor 904 that may execute the instructions 916. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. Although
The memory 930 may include a main memory 932, a static memory 934, and a storage unit 936, all accessible to the processors 910 such as via the bus 902. The main memory 930, the static memory 934, and storage unit 936 store the instructions 916 embodying any one or more of the methodologies or functions described herein. The instructions 916 may also reside, completely or partially, within the main memory 932, within the static memory 934, within the storage unit 936, within at least one of the processors 910 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 900.
The I/O components 950 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 950 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 950 may include many other components that are not shown in
In further example embodiments, the I/O components 950 may include biometric components 956, motion components 958, environmental components 960, or position components 962, among a wide array of other components. For example, the biometric components 956 may include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components 1058 may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 960 may include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 962 may include location sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
Communication may be implemented using a wide variety of technologies. The I/O components 950 may include communication components 964 operable to couple the machine 900 to a network 980 or devices 970 via a coupling 982 and a coupling 972, respectively. For example, the communication components 964 may include a network interface component or another suitable device to interface with the network 980. In further examples, the communication components 964 may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices 970 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB).
Moreover, the communication components 964 may detect identifiers or include components operable to detect identifiers. For example, the communication components 964 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 964, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth.
The various memories (i.e., 930, 932, 934, and/or memory of the processor(s) 910) and/or storage unit 936 may store one or more sets of instructions and data structures (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions 916), when executed by processor(s) 910, cause various operations to implement the disclosed embodiments.
As used herein, the terms “machine-storage medium,” “device-storage medium,” “computer-storage medium” mean the same thing and may be used interchangeably in this disclosure. The terms refer to a single or multiple storage devices and/or media (e.g., a centralized or distributed database, and/or associated caches and servers) that store executable instructions and/or data. The terms shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media, including memory internal or external to processors. Specific examples of machine-storage media, computer-storage media and/or device-storage media include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms “machine-storage media,” “computer-storage media,” and “device-storage media” specifically exclude carrier waves, modulated data signals, and other such media, at least some of which are covered under the term “signal medium” discussed below.
In various example embodiments, one or more portions of the network 980 may be an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, the Internet, a portion of the Internet, a portion of the PSTN, a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 980 or a portion of the network 1080 may include a wireless or cellular network, and the coupling 982 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling 982 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long range protocols, or other data transfer technology.
The instructions 916 may be transmitted or received over the network 980 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 964) and utilizing any one of a number of well-known transfer protocols (e.g., HTTP). Similarly, the instructions 916 may be transmitted or received using a transmission medium via the coupling 972 (e.g., a peer-to-peer coupling) to the devices 970. The terms “transmission medium” and “signal medium” mean the same thing and may be used interchangeably in this disclosure. The terms “transmission medium” and “signal medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 916 for execution by the machine 900, and includes digital or analog communications signals or other intangible media to facilitate communication of such software. Hence, the terms “transmission medium” and “signal medium” shall be taken to include any form of modulated data signal, carrier wave, and so forth. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a matter as to encode information in the signal.
The terms “machine-readable medium,” “computer-readable medium” and “device-readable medium” mean the same thing and may be used interchangeably in this disclosure. The terms are defined to include both machine-storage media and transmission media. Thus, the terms include both storage devices/media and carrier waves/modulated data signals.