1. A method of generating customized versions of a document using a computer system, the method comprising: storing the document in raw form; parsing the document to create an internal representation of the document; receiving a request to generate a second-level document; decomposing the document to create the second-level document, wherein decomposing the document comprises: applying a first first-level transform to the internal representation of the document to create a first first-level document; and in response to the request to generate the second-level document, applying a second-level transform to the first first-level document to create the second-level document; decomposing the document to create a second first-level document, wherein decomposing the document to create the second first-level document comprises: applying a second first-level transform to the internal representation of the document to create a second first-level document; tracking changes to at least one of: (i) the raw form of the document, (ii) the first first-level transform, (iii) the second level transform, and (iv) the second first-level transform; regenerating the document created using any of (i)-(iv) whose changes are tracked if a change occurs in any of (i)-(iv) whose changes are tracked; and designating a previously stored version of the regenerated document invalid; wherein the first first-level document and the second first-level document are different.