A system for generating a Web application, the system comprising: one or more processors; a non-transitory computer-readable medium storing instructions which, when executed by the one or more processors, cause: receiving organized data comprising columns and rows; after receiving the organized data: determining a plurality of data types by determining a data type for each column contained in the organized data; determining one or more suggested widgets for each data type of the plurality of data types, wherein determining the one or more suggested widgets for each data type comprises: determining for all data types a particular data type of the plurality of data types can be split into two or more data types by determining that the corresponding data includes two or more sub-data-types; determining a suggested widget for each data type from the two or more data types for the particular data type; displaying the plurality of data types and the determined one or more suggested widgets for each data type of the plurality of data types, including the suggested widget for each data type from the two or more data types for the particular data type; in response to receiving user input accepting the one or more suggested widgets, generating a Web application comprising the one or more suggested widgets. one or more processors; a non-transitory computer-readable medium storing instructions which, when executed by the one or more processors, cause: receiving organized data comprising columns and rows; after receiving the organized data: determining a plurality of data types by determining a data type for each column contained in the organized data; determining one or more suggested widgets for each data type of the plurality of data types, wherein determining the one or more suggested widgets for each data type comprises: determining for all data types a particular data type of the plurality of data types can be split into two or more data types by determining that the corresponding data includes two or more sub-data-types; determining a suggested widget for each data type from the two or more data types for the particular data type; displaying the plurality of data types and the determined one or more suggested widgets for each data type of the plurality of data types, including the suggested widget for each data type from the two or more data types for the particular data type; in response to receiving user input accepting the one or more suggested widgets, generating a Web application comprising the one or more suggested widgets. receiving organized data comprising columns and rows; after receiving the organized data: determining a plurality of data types by determining a data type for each column contained in the organized data; determining one or more suggested widgets for each data type of the plurality of data types, wherein determining the one or more suggested widgets for each data type comprises: determining for all data types a particular data type of the plurality of data types can be split into two or more data types by determining that the corresponding data includes two or more sub-data-types; determining a suggested widget for each data type from the two or more data types for the particular data type; displaying the plurality of data types and the determined one or more suggested widgets for each data type of the plurality of data types, including the suggested widget for each data type from the two or more data types for the particular data type; in response to receiving user input accepting the one or more suggested widgets, generating a Web application comprising the one or more suggested widgets. determining a plurality of data types by determining a data type for each column contained in the organized data; determining one or more suggested widgets for each data type of the plurality of data types, wherein determining the one or more suggested widgets for each data type comprises: determining for all data types a particular data type of the plurality of data types can be split into two or more data types by determining that the corresponding data includes two or more sub-data-types; determining a suggested widget for each data type from the two or more data types for the particular data type; determining for all data types a particular data type of the plurality of data types can be split into two or more data types by determining that the corresponding data includes two or more sub-data-types; determining a suggested widget for each data type from the two or more data types for the particular data type; displaying the plurality of data types and the determined one or more suggested widgets for each data type of the plurality of data types, including the suggested widget for each data type from the two or more data types for the particular data type; in response to receiving user input accepting the one or more suggested widgets, generating a Web application comprising the one or more suggested widgets.