Construction projects are often complex endeavors involving the coordination of many professionals across several discrete phases. Typically, a construction project commences with a design phase, where architects design the overall shape and layout of a construction project, such as a building. Next, engineers engage in a planning phase where they take the architects' designs and produce engineering drawings and plans for the construction of the project. At this time, engineers may also design various portions of the project's infrastructure, such as HVAC, plumbing, electrical, etc., and produce plans reflecting these designs as well. After, or perhaps in conjunction with, the planning phase, contractors may engage in a logistics phase to review these plans and begin to allocate various resources to the project, including determining what materials to purchase, scheduling delivery, and developing a plan for carrying out the actual construction of the project. Finally, during the construction phase, construction professionals begin to construct the project based on the finalized plans.
Managing and tracking the progress of a construction project can be an arduous task. For instance, work for the construction project must be meticulously tracked—not only in the form of information for time spent working on the construction project, but also in the form of information about specific tasks on which time was spent—so that schedule progress for the construction project can be tracked accurately, the budget for the construction project can be managed and distributed appropriately, and payroll can be approved and processed in a timely manner. Construction professionals are typically required to log every instance of time spent on each task performed for the construction project and then submit that time to be approved for billing and payment, which can be time-consuming, cumbersome, and prone to user error. In instances where one construction professional (e.g., a project manager, a crew foreman, etc.) is responsible for managing a group of other construction professionals, tracking detailed information about work activity, time, labor, and resources, for the entire group in a consistent way can be particularly challenging.
In an effort to alleviate some of the challenges associated with tracking and billing time and labor spent on work for a construction project, software technology has been developed to digitize timekeeping for construction projects. For instance, Procore Technologies, Inc. (“Procore”), who is the assignee of the present application, offers a construction management software application that includes various software tools that facilitate management of different aspects of tracking time for work performed in relation to a construction project. For example, such software tools may enable construction professionals to create and manage time entries for work performed on a construction project. Further, such software tools may enable a construction professional to enter other information for a time entry that may facilitate billing and/or payroll processes, such as information about a given task for which work was performed, or information about whether a given time entry is billable against a project budget, as some examples.
While this existing software technology for tracking time spent working on a construction project provides benefits to construction professionals involved in creating, managing, and processing time entries for work performed on a construction project, it still presents some shortcomings.
As one example, the existing software technology for managing time entries for work performed on a construction project typically requires each new time entry that is created to include information about the type of work performed for that entry, which can be useful for managing, accounting, and billing of time, labor, and resources spent on work for the construction project. However, the existing software technology fails to address the burden on construction professionals to quickly, easily, and accurately identify the type of work for a given time entry. Work for a construction project may be broken down into different categories and sub-categories of tasks, or action items, that are to be completed. Each such task is typically associated with a unique identifier that serves to define the specific type of work that the task involves. A unique identifier may take the form of a numeric or alphanumeric code, referred to herein as a “cost code,” and a construction project may involve a large number (e.g., hundreds or thousands) of such cost codes. A cost code may indicate various types of information in addition to a specific type of work involved in a task, including a project phase associated with the task, a type of cost associated with the task, or budget information associated with the task. In some instances, a cost code may correspond to work breakdown structure (“WBS”) information for the project and may thus also be referred to as a WBS code. At the time of creating a new time entry, the existing technology requires a construction professional to select, from a listing of the hundreds or thousands of cost codes that are available for the construction project, a particular cost code that defines the specific type of work for which the new time entry is being created. This process can be inconvenient, tedious, and error-prone, as it forces the construction professional to identify the specific cost code by either recalling it from memory, referencing other material (e.g., a previously-created time entry, instructions for creating time entries and identifying cost codes, etc.), or manually filtering through and/or searching for a specific cost code from the listing of the hundreds or thousands of cost codes. Construction professionals may perform various types of work throughout the duration of a construction project, and keeping track of the respective cost code that corresponds to each specific type of work that is performed can be cumbersome and frustrating.
To help address these and other problems, disclosed herein is new software technology that improves upon existing solutions for managing timekeeping for a construction project. In particular, the disclosed software technology is directed to facilitating creation of new time entries and identifying recommended cost codes for the new time entries.
At a high level, the disclosed software technology may function to (i) apply data analytics to initial user-defined information for a new time entry and obtained contextual information and thereby identify one or more recommended cost codes for the new time entry, (ii) receive additional user-defined information that includes a given cost code that has been selected from the recommended cost code(s), and (iii) create the new time entry comprising the given cost code, among various other functions that are performed by the disclosed software technology and are described in further detail below.
The initial user-defined information may include (i) date information for work performed and (ii) identifying information for at least one individual who performed the work. The initial user-defined information may have been provided in various ways. As one possibility, the initial information may have been provided by a user via a graphical user interface (GUI) displayed at a client device, which the user may have interacted with to access a software application incorporating the disclosed technology and being run by a back-end computing platform. The user may have then accessed a software tool for creating new time entries. The software tool that enables creation of new time entries may include one or more GUI views that enable the user to provide user input indicating a request to create the new time entry and may also enable the user to provide date information for the new time entry.
After the user has inputted the request to create the new time entry including the date information, the user may be presented with information that enables identification of at least one individual that performed the work for the new time entry. The user may then confirm the identification of the one or more individuals who performed work for the time entry by selecting a GUI element indicating that the user's selection is complete.
After receiving an indication that the user has completed identifying the one or more individuals, the client device may transmit the communication that includes the initial user-defined information for the new time entry to the back-end computing platform to facilitate the process of determining one or more recommended cost codes for the new time entry. In turn, the back-end computing platform may obtain contextual information related to the initial user-defined information that may be used during data analysis as part of determining one or more recommended cost codes for the new time entry. The contextual information may take various forms, including schedule information for the construction project, project phase information, budget information, work breakdown structure information, information related to the at least one individual identified in the initial user-defined information, or other project information that is accessible to the back-end computing platform, among other possibilities.
The back-end computing platform may then determine a set of one or more recommended cost codes for the new time entry. The function of determining the set of one or more recommended cost codes may take various forms. In at least some implementations, the back-end computing platform may utilize one or more data analytics operations that serve to analyze some set of information for the new time entry, which may comprise a portion of (i) the user-defined information and (ii) the contextual information, and then predict which one or more cost codes are most appropriate for the new time entry based on that analysis. Such a data analytics operation may take various forms. As one possibility, a data analytics operation carried out by the back-end computing platform to determine which one or more cost codes to recommend may be embodied in the form of a user-defined set of one or more rules that is applied to the set of information for the new time entry and outputs a determination of which one or more cost codes to recommend for the new time entry.
As another possibility, a data analytics operation carried out by back-end computing platform to determine which one or more cost codes to recommend may be embodied in the form of a data science model that receives a particular set of information as input and then outputs a determination of one or more recommended cost codes for the new time entry. The data science model may comprise a machine-learning model that has been trained based on historical data regarding time entries using any one or more machine learning techniques now known or later developed.
In one example, the machine-learning model may be a multi-class classification model. The machine-learning model may be configured to receive input information comprising at least a portion of (i) the user-defined information and (ii) the obtained contextual information. In one example, the input information may include all of the user-defined information and the contextual information. In another example, the input information may include a portion of one or both of the user-defined information or the contextual information. For instance, in practice, certain types of information may have more influence or weight (compared to other types of information) with respect to determining which of the available cost codes (e.g., hundreds or thousands of cost codes) are relevant to the new time entry. The machine-learning model may be configured to evaluate the input information and based on the evaluation, render predictions regarding the applicability or suitability of different cost code options that are represented in the form of output data. As one possibility, the output data may comprise a respective likelihood value (or the like) for each cost code option in the universe of cost codes that are available to be included in the new time entry. Each respective likelihood value may provide a measure of likelihood that a cost code option is relevant to the new time entry (i.e., a measure of how applicable or suitable the potential cost code option is predicted to be for the new time entry).
In another example, the machine-learning model may comprise a plurality of binary classification models that are each configured to (i) receive input information for a new time entry, evaluate the input information, and then based on the evaluation, output a prediction that takes the form of a predicted likelihood that a given cost code is applicable or suitable for the new time entry.
Further, the data science model may also apply post-processing logic that functions to interpret the output data of the machine-learning model in order to determine which cost code(s), if any, to recommend for the new time entry. The post-processing logic may take various forms. As one possibility, the post-processing logic may function to identify a set of recommended one or more cost codes using a ranking-based approach. As another possibility, the post-processing logic may function to identify a set of recommended one or more cost codes using a threshold-based approach. As yet another possibility, the post-processing logic may function to (i) identify whichever cost code that has a highest likelihood as a single recommended cost code for the new time entry, so long as that cost code's likelihood value exceeds a threshold value, and (ii) if there are no cost codes having a likelihood value that exceeds the threshold value, do not identify any cost codes that are to be recommended for the new time entry (in which case the new time entry may be assigned a cost code based solely on user input and not any recommendation by the back-end computing platform). Further, as another possibility, the post-processing logic may function to identify a set of recommended one or more cost codes using a hybrid of the ranking-based, threshold-based, or other approaches.
In either case of a data analytics operation embodied in the form of a user-defined set of rules or a data analytics operation embodied in the form of a data science model, the one or more cost codes that are recommended by the data analytics operation could comprise either a single cost code that is deemed to be most applicable to the new time entry or a set of multiple cost codes that are each deemed to be sufficiently applicable for the new time entry, among other possibilities.
After determining the one or more recommended cost codes for the new time entry, the back-end computing platform may transmit, to a client device, a communication identifying the one or more recommended cost codes for the new time entry and thereby cause a visual representation of each recommended cost code to be presented at a GUI displayed by the client device. In addition to the visual representation of each recommended cost code, the back-end computing platform may cause the client device to display one or more fields for inputting additional user-defined information related to the new time entry, thereby enabling the user to provide user input comprising (i) a selection of a given cost code and (ii) the additional user-defined information for the new time entry.
Thereafter, the back-end computing platform may receive, from the client device, a second communication comprising the selected given cost code and the additional user-defined information for the new time entry. In turn, the back-end computing platform may create the new time entry that includes the selected given cost code and the additional user-defined information, which may involve storing a data record of the new time entry along with information about the selected given cost code and the additional user-defined information. The back-end computing platform may optionally cause a representation of the newly created time entry to be presented to the user.
Accordingly, in one aspect, disclosed herein is a method that involves a computing system (1) receiving, from a client device associated with a user, a first communication comprising an initial set of user-defined information for a new time entry related to a construction project, wherein the initial set of user-defined information includes (i) a date for the new time entry and (ii) identifying information for at least one individual working on the construction project; (2) after receiving the initial set of user-defined information for the new time entry, obtaining contextual information related to the at least one individual's work on the construction project; (3) based at least on the initial set of user-defined information and the contextual information related to the at least one individual's work on the construction project, identifying a set of one or more recommended cost codes for the new time entry; (4) causing the client device to display the set of one or more recommended cost codes to the user; (5) receiving, from the client device, a second communication comprising an additional set of user-defined information for the time entry that includes a given cost code that has been selected from the one or more recommended cost codes; and (6) based at least on the initial set of user-defined information and the additional set of user-defined information, creating the new time entry comprising the given cost code.
In another aspect, disclosed herein is a computing system that includes a network interface, at least one processor, a non-transitory computer-readable medium, and program instructions stored on the non-transitory computer-readable medium that are executable by the at least one processor to cause the computing system to carry out the functions disclosed herein, including but not limited to the functions of the foregoing method.
In yet another aspect, disclosed herein is a non-transitory computer-readable storage medium having program instructions stored thereon that are executable to cause a computing system to carry out the functions disclosed herein, including but not limited to the functions of the foregoing method.
One of ordinary skill in the art will appreciate these as well as numerous other aspects in reading the following disclosure.
Features, aspects, and advantages of the presently disclosed technology may be better understood with regard to the following description, appended claims, and accompanying drawings, as listed below. The drawings are for the purpose of illustrating example embodiments, but those of ordinary skill in the art will understand that the technology disclosed herein is not limited to the arrangements and/or instrumentality shown in the drawings.
The following disclosure makes reference to the accompanying figures and several example embodiments. One of ordinary skill in the art should understand that such references are for the purpose of explanation only and are therefore not meant to be limiting. Part or all of the disclosed systems, devices, and methods may be rearranged, combined, added to, and/or removed in a variety of manners, each of which is contemplated herein.
The present disclosure is generally directed to software technology for managing time entries. At a high level, the disclosed software technology may function to (i) apply data analytics to initial user-defined information for a new time entry and obtained contextual information and thereby identify one or more recommended cost codes for the new time entry, (ii) receive additional user-defined information that includes a given cost code that has been selected from the recommended cost code(s), and (iii) create the new time entry comprising the given cost code, among various other functions that are performed by the disclosed software technology and are described in further detail below. This disclosed software technology may be incorporated into one or more software applications that may take any of various forms.
As one possible implementation, this software technology may be incorporated into a software as a service (“SaaS”) application that includes both front-end software running on one or more client devices that are accessible to individuals associated with construction projects (e.g., contractors, subcontractors, project managers, architects, engineers, designers, etc., each of which may be referred to generally herein as a “construction professional”) and back-end software running on a back-end computing platform (sometimes referred to as a “cloud” platform) that interacts with and/or drives the front-end software, and which may be operated (either directly or indirectly) by the provider of the front-end software. As another possible implementation, this software technology may be incorporated into a software application that takes the form of front-end client software running on one or more client devices without interaction with a back-end computing platform. The software technology disclosed herein may be incorporated into software applications that take other forms as well. Further, such front-end client software may take various forms, examples of which may include a native application (e.g., a desktop application or a mobile application), a web application running on a client device, and/or a hybrid application, among other possibilities.
Turning now to the figures,
Broadly speaking, back-end computing platform 102 may comprise one or more computing systems that have been provisioned with software for carrying out one or more of the functions disclosed herein, including but not limited to functions related to receiving and evaluating user-defined information, obtaining and evaluating contextual information, causing information to be displayed via a front-end interface (e.g., a graphical user interface (GUI)) at the one or more client devices, and facilitating creation and management of time entries. The one or more computing systems of back-end computing platform 102 may take various forms and be arranged in various manners.
For instance, as one possibility, back-end computing platform 102 may comprise computing infrastructure of a public, private, and/or hybrid cloud (e.g., computing and/or storage clusters) that has been provisioned with software for carrying out one or more of the functions disclosed herein. In this respect, the entity that owns and operates back-end computing platform 102 may either supply its own cloud infrastructure or may obtain the cloud infrastructure from a third-party provider of “on demand” computing resources, such as Amazon Web Services (AWS) or the like. As another possibility, back-end computing platform 102 may comprise one or more dedicated servers that have been provisioned with software for carrying out one or more of the functions disclosed herein. Other implementations of back-end computing platform 102 are possible as well.
In turn, client devices 112 may each be any computing device that is capable of running the front-end software disclosed herein. In this respect, client devices 112 may each include hardware components such as a processor, data storage, a communication interface, and user-interface components (or interfaces for connecting thereto), among other possible hardware components, as well as software components that facilitate the client device's ability to run the front-end software incorporating the features disclosed herein (e.g., operating system software, web browser software, mobile applications, etc.). As representative examples, client devices 112 may each take the form of a desktop computer, a laptop, a netbook, a tablet, a smartphone, and/or a personal digital assistant (PDA), among other possibilities.
As further depicted in
While
Although not shown in
It should be understood that network configuration 100 is one example of a network configuration in which embodiments described herein may be implemented. Numerous other arrangements are possible and contemplated herein. For instance, other network configurations may include additional components not pictured and/or more or less of the pictured components.
The processor 202 may comprise one or more processor components, such as general-purpose processors (e.g., a single- or multi-core microprocessor), special-purpose processors (e.g., an application-specific integrated circuit or digital-signal processor), programmable logic devices (e.g., a field programmable gate array), controllers (e.g., microcontrollers), and/or any other processor components now known or later developed. In line with the discussion above, it should also be understood that the processor 202 could comprise processing components that are distributed across a plurality of physical computing devices connected via a network, such as a computing cluster of a public, private, or hybrid cloud.
In turn, the data storage 204 may comprise one or more non-transitory computer-readable storage mediums that are collectively configured to store (i) program instructions that are executable by the processor 202 such that computing platform 200 is configured to perform some or all of the functions disclosed herein, which may be arranged together into software applications, virtual machines, software development kits, toolsets, or the like, and (ii) data that may be received, derived, or otherwise stored, for example, in one or more databases, file systems, or the like, by the computing platform 200 in connection with the disclosed functions. In this respect, the one or more non-transitory computer-readable storage mediums of the data storage 204 may take various forms, examples of which may include volatile storage mediums such as random-access memory, registers, cache, etc., and non-volatile storage mediums such as read-only memory, hard-disk drive(s), solid-state drive(s), flash memory, or optical-storage device(s), etc. In line with the discussion above, it should also be understood that the data storage 204 may comprise computer-readable storage mediums that are distributed across a plurality of physical computing devices connected via a network, such as a storage cluster of a public, private, or hybrid cloud. The data storage 204 may take other forms and/or store data in other manners as well.
The communication interface 206 may be configured to facilitate wireless and/or wired communication with external data sources and/or client devices, such as one or more client devices 112 of
Although not shown, the computing platform 200 may additionally include or have one or more interfaces for connecting to user-interface components that facilitate user interaction with the computing platform 200, such as a keyboard, a mouse, a trackpad, a display screen, a touch-sensitive interface, a stylus, a virtual-reality headset, and/or speakers, among other possibilities, which may allow for direct user interaction with the computing platform 200.
It should be understood that the computing platform 200 is one example of a computing platform that may be used with the embodiments described herein. Numerous other arrangements are possible and contemplated herein. For instance, other computing platforms may include additional components not pictured and/or more or fewer of the pictured components.
As mentioned above, disclosed herein is new software technology that improves upon existing software technology for managing time entries for work performed on construction projects. In particular, the disclosed technology is directed to facilitating creation of new time entries and recommending a set of one or more relevant cost codes for the new time entries based on applying data analytics to one or more of (i) a date on which work was performed, (ii) information identifying at least one individual who performed the work on that date, and (iii) contextual information related to the date and/or the at least one individual.
The disclosed software technology comprises various aspects that may be implemented either individually or in combination, which will now be described in further detail. Further, in practice, the disclosed software technology may be incorporated into any software application that facilitates timekeeping management and tracking, including but not limited to a construction management software application. Moreover, the disclosed software technology may be actuated by a back-end computing platform, such as the back-end computing platform 102 discussed above with reference to
In accordance with the disclosed technology, the back-end computing platform 102 may be configured to facilitate creation of new time entries for work that is performed on a construction project and recommend a set of one or more cost codes for the new time entries based on (i) a date for the time entry and (ii) identifying information about at least one individual.
The process 300 may begin at block 302, where the back-end computing platform 102 may receive, from a client device 112 that is associated with a user, a communication comprising initial user-defined information for a new time entry for work performed on a construction project, wherein the initial information includes (i) date information for the work performed and (ii) identifying information for at least one individual who performed the work. The initial user-defined information may have been provided in various ways.
As one possibility, the initial information may have been provided by the user via a graphical user interface (GUI) displayed at the client device 112, which the user may have interacted with to access a software application incorporating the disclosed technology and being run by the back-end computing platform 102. The user may have then accessed a software tool for creating new time entries. Such a software tool may take any of various forms. For instance, the construction management software application offered by Procore Technologies, Inc. includes various software tools that facilitate creation of new time entries (and perhaps also facilitate auto-population of new time entries with relevant information), some examples of which include a “Timecard” software tool for managing employee-specific time entries, a “Timesheets” software tool for managing project-specific time entries, a “Daily Log” software tool for managing day-specific information related to labor, communication, equipment, materials, and site events for a given construction project, a Request for Information (“RFI”) tool for creating and/or managing RFIs, or software tools for providing visual data (e.g., images, videos, etc.), audio data, audio visual data, or sensor data to the back-end computing platform 102. Examples of other software tools that may facilitate creation of new time entries are also possible.
The software tool that enables creation of new time entries may include one or more GUI views that enable the user to provide user input indicating a request to create the new time entry. For instance, the user may select a GUI element, such as a selectable “Add” GUI button or a selectable “plus sign” GUI icon to request creation of the new time entry. The GUI may also enable the user to provide date information for the new time entry. In some implementations, the user may be prompted to first provide date information for the new time entry and then provide the user input to request creation of the new time entry. In other implementations, the user may be prompted to provide the date information after providing the user input to request creation of the new time entry. The manner in which the date information may be provided may take various forms, such as a text input representing a given date, selection of a given date from a listing of one or more dates, or selection of a given date from a calendar view, among other examples. In still further implementations, the date information may be automatically populated with the current date when the user initiates the software tool that facilitates the new time entry, and thus the user input indicating the request to create the new time entry may provide the user-defined date information, by virtue of the user electing to create the time entry for the current date.
After the user has inputted the request to create the new time entry including the date information, the user may be presented with information that enables identification of at least one individual that performed the work for the new time entry. The information that enables the identification of the at least one individual may be based on various factors. As one possibility, the information may be based on a permission level associated with the user. For example, a first permission level, such as baseline “standard”-level permissions, may be assigned to any construction professional who is a user of the software application and may provide permissions for the user to create and manage time entries for work performed by that user. As another example, a second permission level, such as advanced “administrator”-level permissions, may be assigned to any construction professional who is responsible for overseeing work (e.g., project manager, foreman, general contractor, etc.) performed by one or more other construction professionals and may provide permissions for the user to create and manage time entries for not only work performed by that user but also for work performed by other construction professionals within that user's purview. The administrator permissions may provide access to additional time-entry related features as well, such as enabling a user to create, edit, or manage two or more time entries at once in “bulk.” Other permission levels are also possible.
The manner in which the information that enables the identification of the at least one individual is presented to the user may take various forms. As one possibility, in an implementation where the user has standard permissions, the information may take the form of a selectable representation of an identifier of the user. The selectable representation may take various forms, such as a textual label of the user's name accompanied by a selectable checkbox or radio button, or a drop-down menu including a selectable representation of the user's name, among other possibilities. As another possibility, in another implementation where the user has standard permissions, the user may be identified automatically (e.g., by default) as the at least one individual that performed the work for the new time entry. The user may optionally be prompted to confirm that the user is the at least one individual that performed the work for the new time entry.
As yet another possibility, in an implementation where the user has administrator permissions, the information may take the form of selectable representations of respective identifiers of one or more construction professionals that the user is responsible for managing and/or one or more construction crews associated with one or more construction professionals that the user is responsible for managing. For instance, the information may include a first set of selectable representations of the one or more construction professionals and a second set of selectable representations of the one or more construction crews, whereby the user may toggle between each set to view and/or select one or more options from a given set. Further, the selectable representations may take various forms. The information may take other forms as well. The user may then confirm the identification of the one or more individuals who performed work for the time entry by selecting a GUI element indicating that the user's selection is complete.
It should be understood that an “individual” or a “construction professional” that may be identified as having performed work for the construction project may comprise any entity that is capable of performing work, which may include, in addition to a human individual, a machine (e.g., a drone, a robot, an automated excavator, a brick laying machine, etc.), or some other non-human entity.
After receiving an indication that the user has completed identifying the one or more individuals, the client device 112 may transmit the communication that includes the initial user-defined information for the new time entry, which is received by the back-end computing platform 102 at block 302 of
Returning to
As one possibility, the contextual information may comprise schedule information for the construction project. For instance, a master schedule or a look-ahead schedule for the construction project may define specific work that was scheduled to be performed on or around the user-defined date for the time entry. Such information may be used to identify specific cost codes that are relevant to the new time entry based on specific work that was scheduled on or around the date for the new time entry. As another possibility, the contextual information may comprise project phase information that identifies a project phase (development, pre-construction, construction, etc.) that the construction project was in on or around the user-defined date for the time entry. Each project phase may have associated categories of work that is to be performed during that phase. Such information may be used to identify specific cost codes that are relevant to the new time entry based on the type of work that is scheduled to be performed during a given project phase. As yet another possibility, the contextual information may include budget information for the construction project. For instance, a budget for the construction project may define estimated costs for the work that is to be performed for the construction project. Such information may be used to identify specific cost codes that are relevant to the new time entry based on the estimated work costs that have been budgeted for the construction project. Still, as another possibility, the contextual information may include work breakdown structure information for the construction project. For instance, a work breakdown structure for the construction project may include detailed information defining all of the work activities that are to be completed for the construction project, including budget and cost information for each work activity. Such information may be used to identify specific cost codes that are relevant to the new time entry based on work activities that are defined for the construction project.
As yet another possibility, the contextual information may include information related to the at least one individual identified in the initial user-defined information. As one example, the contextual information may include information about a given construction professional's role with respect to the construction project, which may be used to identify specific cost codes that are relevant to the new time entry based on the type of work that the given construction professional is likely to perform for the construction project. For instance, if the construction professional is a painter and/or a member of a paint crew, then it may be likely that the construction professional performed paint-related work, whereas if the construction professional is a concrete worker and/or a member of a concrete crew, then it may be likely that the construction professional performed concrete-related work. As another example, the contextual information may include location information related to the at least one individual identified in the initial user-defined information, such as a site location at which specific work was scheduled to be performed by the at least one individual on or around the date for the new time entry.
Still, as another possibility, the contextual information may include any other project information that is accessible to the back-end computing platform 102 that may provide additional context about the type of work that was performed by the at least one individual identified in the initial user-defined information on or around the date for the new time entry and may thus be used to identify specific cost codes that are relevant to the new time entry. Some examples of such project information may include information that was previously-entered using one or more other software tools of the software application, such as bid information (e.g., information that the at least one individual was hired to perform specific work for the construction project), observation entries (e.g., notes, observations, or incident reports that a given construction professional recorded while on-site), change event information (e.g., a change order that a given construction professional requested based on an observation made on or near the date for the new time entry), daily log information (e.g., information about work progress, obstacles, incidents, weather reports, etc.), images, videos, or other audiovisual data, sensor data, or previously-created time entries, among other possibilities.
The contextual information may include other types of information as well.
In some implementations, some contextual information may be included in the first communication received by the back-end computing platform 102 at block 302. For example, the first communication may include photo or video data, and the back-end computing platform 102 may analyze that data (e.g., using computer vision) to obtain additional contextual information, such as an object or an activity that is discernible from the data, that may facilitate a determination of a recommended cost code(s). In other implementations, the process 300 of
Advantageously, supplementing a time entry with contextual information as described above may be useful for tracking and/or analyzing performance metrics related to work performed on a construction project. For instance, time entry information may be aggregated in order to extract net performance metrics based on one or more attributes, such as location or cost code, etc. For example, aggregated time entry information indicating (i) a given location where work was performed, (ii) the recommended cost code for the work performed (the process for recommending cost codes will be discussed further below, (iii) total time spent to complete that work, and (iv) individuals that performed that work, can provide insight about work performance and costs incurred for work at the given location. This may be particularly useful for benchmarking, goal-setting, and increasing efficiency (e.g., comparing performance metrics based on time entry information for work performed on a first floor of a building with work performed on a second floor of the building may provide insight about how work performance may be improved on other floors of the building).
At block 306, the back-end computing platform 102 may determine a set of one or more recommended cost codes for the new time entry. The function of determining the set of one or more recommended cost codes may take various forms. In at least some implementations, the back-end computing platform 102 may utilize one or more data analytics operations that serve to analyze some set of information for the new time entry, which may comprise a portion of (i) the user-defined information and (ii) the contextual information, and then predict which one or more cost codes are most appropriate for the new time entry based on that analysis. Such a data analytics operation may take various forms.
As one possibility, a data analytics operation carried out by the back-end computing platform 102 to determine which one or more cost codes to recommend may be embodied in the form of a user-defined set of one or more rules that is applied to the set of information for the new time entry and outputs a determination of which one or more cost codes to recommend for the new time entry. In general, any suitable rule(s) to determine which one or more cost codes to recommend may be utilized. Further, in practice, the user-defined rules that are used to determine which one or more cost codes to recommend could be defined by the software application provider, users of the software application, industry-defined standards, or some combination thereof. Further yet, the user-defined rules that are used to determine which one or more cost codes to recommend may be adjusted based on factors such as the specific construction project for which the new time entry is being created or the particular user that is requesting to create the new time entry, among other possibilities.
As another possibility, a data analytics operation carried out by back-end computing platform 102 to determine which one or more cost codes to recommend may be embodied in the form of a data science model that receives a particular set of information as input and then outputs a determination of one or more recommended cost codes for the new time entry. For instance, the data science model may comprise one or more machine-learning models that have been trained based on historical data regarding time entries using any one or more machine learning techniques now known or later developed, examples of which may include any of various supervised learning techniques, such as a neural network technique (which is sometimes referred to as “deep learning”), a regression technique, a k-Nearest Neighbor (kNN) technique, a decision-tree technique, a support vector machines (SVM) technique, a Bayesian technique, an ensemble technique, a clustering technique, an association-rule-learning technique, a dimensionality reduction technique, an optimization technique such as gradient descent, a regularization technique, artificial and/or recurrent neural networks, and/or a reinforcement technique, among other possible types of machine learning techniques.
The machine-learning model 502 may be configured to evaluate the input information 504 and, based on the evaluation, render predictions regarding the applicability or suitability of different cost code options that are represented in the form of output data 506. As one possibility, the output data 506 may comprise a respective likelihood value (or the like) for each cost code option in the universe of cost codes that are available to be included in the new time entry. Each respective likelihood value may provide a measure of likelihood that a cost code option is relevant to the new time entry (i.e., a measure of how applicable or suitable the potential cost code option is predicted to be for the new time entry). For instance, the machine-learning model 502 may be configured to predict a likelihood value for each of N potential cost code options. In some implementations, the machine-learning model 502 may be configured to predict a likelihood value for every possible cost code, such that the N potential cost code options may include hundreds or even thousands of cost code options. Alternatively, the machine-learning model 502 may be configured to predict a likelihood value for a predetermined maximum number of cost codes. In this way, the N potential cost code options may correspond to only the most likely cost codes (e.g., 20, 50, etc.), among other possibilities.
As illustrated in
The machine-learning model(s) 502 may take other forms as well.
For example, as another possibility, the machine-learning model(s) 502 may comprise a plurality of binary classification models that are each configured to (i) receive input information 504 for a new time entry, evaluate the input information 504, and then based on the evaluation, output a prediction that takes the form of a predicted likelihood that a given cost code is applicable or suitable for the new time entry.
For instance, the machine-learning model(s) 502 may comprise (1) a binary first classification model that is configured to output a first prediction 506a that takes the form of a predicted likelihood that cost code A is appropriate for the new time entry, (2) a second binary classification model that is configured to output a second prediction 506b that takes the form of a predicted likelihood that cost code B is appropriate for the new time entry, (3) a third binary classification model that is configured to output a third prediction 506c that takes the form of a predicted likelihood that cost code A is appropriate for the new time entry, and (4) an nth binary classification model that is configured to output an nth prediction 506n that takes the form of a predicted likelihood that cost code N is appropriate for the new time entry. In such an implementation, the post-processing logic 508 may then comprise either a single, global threshold value that is to be applied to the outputs of all of the binary classification models in order to identify any recommended cost codes for the new time entry, or a model-specific threshold value that is applied to the respective output of each binary classification model outputs in order to identify any recommended cost codes for the new time entry, among other possibilities.
The data science model 500 for identifying recommended cost codes for the new time entry may comprise one or more machine learning models of other types as well, including but not limited to a machine learning model that is created based on unsupervised machine learning techniques, one example of which includes a clustering technique.
Further, the data science model 500 may also apply post-processing logic 508 that functions to interpret output data 506 of the machine-learning model 502 so as to determine which cost code(s), if any, to recommend for the new time entry. The post-processing logic 508 may take various forms.
As one possibility, the post-processing logic 508 may function to identify a set of recommended one or more cost codes using a ranking-based approach. For example, the post-processing logic 508 may rank the cost codes A-N based on their respective likelihood values and then identify some pre-defined, top-ranked number of cost codes as the recommended cost codes, such as the top 1, top 3 or top 5 cost codes, among various other possible cutoffs for the new time entry.
As another possibility, the post-processing logic 508 may function to identify a set of recommended one or more cost codes using a threshold-based approach. For example, the post-processing logic 508 may compare each likelihood value 506a-506n to a threshold value and then identify any cost codes having a likelihood value that meets the threshold value as the recommended cost codes for the new time entry. The threshold value may be any suitable threshold and may be pre-defined in the program code for the data science model 500 or by one or more users of the software application. As one example, if the threshold value is set to an 80% likelihood of suitability, the post-processing logic 508 may identify in the output 510 a set of recommend cost code(s) comprising both cost code A and cost code B. As another example, if the threshold value is set to a 90% likelihood of suitability, the post-processing logic 508 may identify in the output 510 a set of recommend cost code(s) comprising only cost code A.
As yet another possibility, the post-processing logic 508 may function to (i) identify whichever cost code that has a highest likelihood as a single recommended cost code for the new time entry, so long as that cost code's likelihood value exceeds a threshold value, and (ii) if there are no cost codes having a likelihood value that exceeds the threshold value, do not identify any cost codes that are to be recommended for the new time entry (in which case the new time entry may be assigned a cost code based solely on user input and not any recommendation by the back-end computing platform 102). As one example, the post-processing logic 508 may identify cost code A as the recommended cost code if an example threshold value of 90% is used, whereas it may not identify any cost code if an example threshold value of 96% is used. Other example post-processing rules are possible as well.
Further, as another possibility, the post-processing logic 508 may function to identify a set of recommended one or more cost codes using a hybrid of the ranking-based, threshold-based, or other approaches. For example, under a hybrid approach, the post-processing logic 508 may start by preliminarily identifying any cost code having a likelihood value that meets a threshold value, and if there is less than a cutoff number of cost codes that are preliminarily identified, the computing platform may then identify each such cost code as a recommended cost code, whereas if there is more than the cutoff number of cost codes that are preliminarily identified, the post-processing logic 508 may then rank the cost codes that are preliminarily identified based on their likelihood values and then identify some pre-defined number of top-ranked cost codes as the recommended cost codes.
The function of identifying the set of one or more recommended cost codes may take other forms as well.
As mentioned above, in either case of a data analytics operation embodied in the form of a user-defined set of rules or a data analytics operation embodied in the form of a data science model, the one or more cost codes that are recommended by the data analytics operation could comprise either a single cost code that is deemed to be most applicable to the new time entry or a set of multiple cost codes that are each deemed to be sufficiently applicable for the new time entry, among other possibilities.
Returning to
The visual representations of the recommended cost code(s) may be presented in various manners. As one possibility, the visual representations may be presented as a list, such as a drop-down list. As another possibility, the visual representations may be presented in a pop-up GUI pane or window that is overlaid on a GUI view displayed at the client device 112.
Moreover, a visual representation of a set of one or more recommended cost codes may take various forms. In general, the visual representation of each cost code may comprise an indicator that identifies the recommended cost code. The indicator may take various forms, such as a text label, a numerical label, or a combination thereof, among other possibilities. Further, the indicator may be selectable or include a selectable GUI component (e.g., a checkbox, a radio button, etc.) that enables the user to select the respective recommended cost code. In some implementations, where only a single cost code is recommended for the new time entry, a selectable GUI component of the cost code's visual representation may be selected by default such that the user may not need to affirmatively select the GUI component to select the recommended cost code, although the GUI component may be de-selected if the user does not wish to select the recommended cost code.
In some implementations, the visual representation of each recommended cost code may additionally include a selectable GUI element that enables the user to dismiss the recommended cost code (e.g., a “delete” or “X” GUI button, etc.). Additionally, in some implementations, the GUI view may include an input field or other GUI component that enables the user to input a cost code that is different from any recommended cost code. Other examples of visual representations and/or selectable indicators are possible as well.
In addition to the visual representation of each recommended cost code, the back-end computing platform 102 may cause the client device 112 to display one or more fields for inputting additional user-defined information related to the new time entry. Such one or more fields may take any of various forms, including but not limited to selectable drop-down menus, text input fields, numerical input fields, selectable GUI components, or any combination thereof. The additional user-defined information may define various types of information, including but not limited to location information indicating a site where the work for the time entry was performed, information about a quantity or duration of time spent performing the work, billing rate information, whether or not the work is billable against the construction project budget, or notes and/or comments, among other possibilities.
After being presented with the visual representation of each recommended cost code and the one or more fields for inputting the additional user-defined information related to the new time entry as described above, the user may provide user input comprising (i) a selection of a given cost code and (ii) the additional user-defined information for the new time entry.
Returning to
Returning to
Information about user cost code selection based on cost code recommendations (including both acceptances and rejections of cost code recommendations provided by the back-end computing platform 102) may be provided as training data to the machine-learning model(s) 502 on a recurrent basis, thereby embedding expertise into the model(s) and improving the recommended cost codes that are presented to users.
Turning now to
The processor(s) 702 may comprise one or more processing components, such as general-purpose processors (e.g., a single- or a multi-core CPU), special-purpose processors (e.g., a GPU, application-specific integrated circuit, or digital-signal processor), programmable logic devices (e.g., a field programmable gate array), controllers (e.g., microcontrollers), and/or any other processor components now known or later developed.
In turn, the data storage 704 may comprise one or more non-transitory computer-readable storage mediums that are collectively configured to store (i) program instructions that are executable by the processor(s) 702 such that the client device 700 is configured to perform certain functions related to interacting with and accessing services provided by a computing platform, such as the example computing platform 200 described above with reference to
The one or more communication interfaces 706 may be configured to facilitate wireless and/or wired communication with other computing devices. The communication interface(s) 706 may take any of various forms, examples of which may include an Ethernet interface, a serial bus interface (e.g., Firewire, USB 3.0, etc.), a chipset and antenna adapted to facilitate wireless communication, and/or any other interface that provides for any of various types of wireless communication (e.g., Wi-Fi communication, cellular communication, short-range wireless protocols, etc.) and/or wired communication. Other configurations are possible as well.
The client device 700 may additionally include or have interfaces for one or more user-interface components 708 that facilitate user interaction with the client device 700, such as a keyboard, a mouse, a trackpad, a display screen, a touch-sensitive interface, a stylus, a virtual-reality headset, and/or one or more speaker components, among other possibilities.
It should be understood that the client device 700 is one example of a client device that may be used to interact with a computing platform as described herein. Numerous other arrangements are possible and contemplated herein. For instance, in other embodiments, the client device 700 may include additional components not pictured and/or more or fewer of the pictured components.
In the ways described above, the disclosed software technology provides several improvements and advantages over existing technology for managing timekeeping for work performed on construction projects.
Example embodiments of the disclosed innovations have been described above. Those skilled in the art will understand, however, that changes and modifications may be made to the embodiments described without departing from the true scope and spirit of the present invention, which will be defined by the claims.
Further, to the extent that examples described herein involve operations performed or initiated by actors, such as “humans,” “operators,” “users,” “parties,” or other entities, this is for purposes of example and explanation only. Claims should not be construed as requiring action by such actors unless explicitly recited in claim language.