A method, comprising: receiving a design specification comprising a plurality of functions for automatically generating a user interface and relationship information describing how the plurality of functions relate to each other, wherein the functions of the plurality of functions comprise functions to be implemented in the user interface, and wherein the relationship information is received via a design interface; generating a tree of design actions based on the plurality of functions and relationship information, wherein: a root node of the tree represents the design specification each intermediary node of the tree represents a partial user interface design, each branch of the tree represents a design action that corresponds to a potential action to construct the user interface and that creates or modifies a respective partial user interface design, and each leaf node in the tree represents a candidate user interface design, and wherein the tree of design actions is not fully instantiated but is generated incrementally, by utilizing a Monte Carlo tree search, when the tree of design actions is traversed; determining, automatically without user intervention, a plurality of candidate user interface designs, each implementing the received plurality of functions, by automatically traversing the tree along multiple traversal paths from the root node of the tree to respective leaf nodes of the tree and by executing respective design actions represented by branches along the traversal paths, wherein each traversal from the root node to a leaf node results in a corresponding complete user interface; wherein, after each traversal from the root node to a leaf node, an evaluation of the respective candidate user interface design represented by the corresponding leaf node is executed, the evaluation comprising a calculation of a corresponding design score for the respective candidate user interface design, and the evaluation being initiated at the corresponding leaf node, wherein the determining and the design score calculation steps are executed until a design score satisfies a threshold design score; selecting, automatically without user intervention and based on design scores of the candidate interface designs of the plurality of candidate interface designs, a selected candidate interface design from the plurality of candidate interface designs; and generating the user interface based on the selected candidate user interface design. receiving a design specification comprising a plurality of functions for automatically generating a user interface and relationship information describing how the plurality of functions relate to each other, wherein the functions of the plurality of functions comprise functions to be implemented in the user interface, and wherein the relationship information is received via a design interface; generating a tree of design actions based on the plurality of functions and relationship information, wherein: a root node of the tree represents the design specification each intermediary node of the tree represents a partial user interface design, each branch of the tree represents a design action that corresponds to a potential action to construct the user interface and that creates or modifies a respective partial user interface design, and each leaf node in the tree represents a candidate user interface design, and wherein the tree of design actions is not fully instantiated but is generated incrementally, by utilizing a Monte Carlo tree search, when the tree of design actions is traversed; a root node of the tree represents the design specification each intermediary node of the tree represents a partial user interface design, each branch of the tree represents a design action that corresponds to a potential action to construct the user interface and that creates or modifies a respective partial user interface design, and each leaf node in the tree represents a candidate user interface design, and wherein the tree of design actions is not fully instantiated but is generated incrementally, by utilizing a Monte Carlo tree search, when the tree of design actions is traversed; determining, automatically without user intervention, a plurality of candidate user interface designs, each implementing the received plurality of functions, by automatically traversing the tree along multiple traversal paths from the root node of the tree to respective leaf nodes of the tree and by executing respective design actions represented by branches along the traversal paths, wherein each traversal from the root node to a leaf node results in a corresponding complete user interface; wherein, after each traversal from the root node to a leaf node, an evaluation of the respective candidate user interface design represented by the corresponding leaf node is executed, the evaluation comprising a calculation of a corresponding design score for the respective candidate user interface design, and the evaluation being initiated at the corresponding leaf node, wherein the determining and the design score calculation steps are executed until a design score satisfies a threshold design score; selecting, automatically without user intervention and based on design scores of the candidate interface designs of the plurality of candidate interface designs, a selected candidate interface design from the plurality of candidate interface designs; and generating the user interface based on the selected candidate user interface design.