1. A method comprising: a) defining a document template based on a plurality of predefined data elements arranged in a tree-like data structure; b) editing one or more of the predefined data elements using content-specific pull-down menus to generate revised data elements; c) storing the revised data elements in a relational database to store a customized document; and d) automatically synthesizing text from the revised data elements by compiling the revised data elements according to the structure defined by the document template to generate the customized document.