A non-transitory, computer-readable medium containing instructions that, when executed by a hardware-based processor, causes the processor to perform stages for processing a schedule for a build project, the stages comprising:
- receiving, at a server, a data file that includes the schedule, the schedule including activities for completing the build project;
- attempting, by the server, to identify a format of the schedule by matching structural characteristics of the data file against a plurality of stored parsing rule sets, each stored parsing rule set corresponding to a known schedule file format and defining format-specific data extraction parameters for extracting schedule data from data files in the known schedule file format, and selecting a matching stored parsing rule set when the structural characteristics of the data file correspond to one of the known schedule file formats;
- in an instance in which the server does not recognize the format of the schedule, determining, by the server, hierarchy levels in the schedule from the data file having the unrecognized format, comprising:
- reading, by the server, internal data structures of the data file having the unrecognized format to identify fields corresponding to individual activities, wherein the reading comprises applying format-agnostic field recognition to the data file to extract each activity from the identified fields without relying on any of the stored parsing rule sets;
- displaying the activities as line items in a graphical user interface (GUI);
- attempting, by the server, to determine the hierarchy levels in the schedule by at least one of:
- (i) analyzing data patterns within the data file to identify boundaries that delineate section headers from activity records, and creating a hierarchy based on the identified section header boundaries, or (ii) reading format-specific structural metadata encoded in a file type of the data file, the format-specific structural metadata defining parent-child relationships among the activities;
- in an instance in which the server determines the hierarchy levels, displaying the activities as a hierarchical tree in the GUI organized according to the determined hierarchy levels;
- and
- in an instance in which the server does not determine the hierarchy levels, maintaining the display of the activities as the line items with no hierarchical structure in the GUI;
- extracting locations from the schedule using location parsing rules previously provided at the GUI;
- executing a rules engine to generate a location breakdown structure of the build project using the locations, including mapping each activity to a corresponding location;
- mapping, by the rules engine, each activity to a corresponding drawing type, where mapping each activity to a corresponding drawing type comprises:
- receiving, for each drawing type, inclusion and exclusion expressions;
- comparing an activity name for each activity to the inclusion and exclusion expressions;
- based on the comparison, matching each activity identifying a drawing type based on the activity name including the drawing type's inclusion expressions and not including the drawing type's exclusion expressions;
- and
- mapping each activity to its matched drawing type;
- for each drawing type, mapping a corresponding work phase to a location that a corresponding assigned activity is mapped to;
- mapping each activity to a work phase at the assigned activity's mapped location;
- generating, by the rules engine, a design schedule of the build project, the design schedule including work phases at each location, with start and end dates for the work phases, wherein the start and end dates were not part of the data file;
- and
- displaying, at a user device in the GUI, a design schedule of the build project, the design schedule including the location breakdown structure, each location's mapped work phases, each work phase's mapped activities, and each work phase's corresponding drawing types.