1. A machine-implemented method of building a speech application, the method comprising: generating a graphical user interface to enable a user to create and edit a speech application; receiving user inputs directed to the graphical user interface, the user inputs specifying a set of dialog flows representing the speech application; and based on the user inputs, automatically generating executable code representing the speech application, and a functional specification document describing the speech application.