Writing proposals, reports, and assessments are tasks many organisations undertake as part of their day-to-day operation.
A common approach to these tasks is to pick the most recent version of a document, copy it, and then begin changing it and customising it for the latest project or case.
This approach can be fraught with danger, especially if figures are not updated or a previous client's name is unnoticed and left in the document.
How We Solved It
Learning from our own experience
Because at Alchemy many of our projects include document production in one or more phases, this project was close to our heart.
We wanted to avoid re-inventing the wheel and leverage the power of word processing applications such as Microsoft Word™ and other applications from the Office suite.
We focussed on building a system that would allow users to continue to use the document editing functions they were use to in MS Word, but allow them to pull together content in a smart way using a library of templates and fragments.
We introduced a command syntax that can be used inside templates to indicate that other document fragments should be inserted at specific places.
We also introduced replaceable parameters or tokens that can be used throughout templates and fragments to replace common text such as client names or project titles. This eliminates the need for find-and-replace and is less susceptible to typos and spelling mismatches.
Finally we added tags to help make finding the right piece of content for each insertion point in a template faster easier.
Under the hood
Alchemy designed and built the system as a web based JSF application on top of a document store based on a relational database.
The system provides a WebDAV interface to allow Microsoft Word™ to directly access templates and fragments for editing.
The system uses the OpenDoc XML standard for manipulating and merging content.
The OneCompose system makes document production simpler and faster while ensuring you maintain consistency and correctness. Perfect documents every time.