First Look: DocAssemble

DocAssemble is free (as in both speech and beer), open source software for creating online interviews and automatically generating documents from the answers provided. It was written by Jonathan Pyle, a lawyer and software developer in Philadelphia. I saw it mentioned in a conversation about cloud-based document automation and presumed that it would be another HotDocs-style application.  It is both more and less.

The Less

First, DocAssemble is not Software-as-a-Service.  It’s just…software. Specifically, server software. It is intended to be installed and run on a web server. The installation instructions say that it is possible to run it on Mac or Windows, but you probably don’t want the hassle. For the purposes of giving it a try, I created a temporary “droplet” at  DocAssembly requires a “Docker” one-click app droplet with at least 1GB of memory.  That will run you in the range of $10/month to play with.  Once I had the droplet server up and running, I was able to install DocAssemble with a single Unix command, and the rest was through a much more pleasant web interface.

More pleasant, but still not exactly pleasant. DocAssemble does not have a graphical user interface.  It is, when it comes right down to it, more of a programming language than a program.  But it did provide you with a graphical development environment in the browser that it calls the Playground.

image of DocAssemble Playground screen

The Playground is essentially a web text editor with a few features to make it easier to write DocAssemble code.

The bottom half of the Playground is documentation and examples, which is actually really convenient.  The top right is a list of variables, functions, objects, and the like that you can use to get information or one-click insert them into the text.  The top left is where you do your hacking.

How does it work?

Well, it’s more of a programming language than an application, so it sort of works however you tell it to work.  But here’s how a typical, simple project might work out.

Step 1: Code your Template in Mako

Document generation is actually the technology that runs more or less the entire web. DocAssemble doesn’t reinvent the wheel here, it just allows you to use one of the existing tools, called Mako. Again, if you’re hoping for this to be pretty, you’re going to be disappointed.  Mako is a templating library written in the Python programming language.

The good news is that for very simple things, a Mako template is pretty intuitive-looking. And DocAssemble is happy for you to create your Mako template in Microsoft Word.  So you could do something in Word that looked like this:

Hello, ${ }!
%if first_time
Let me introduce the lawyer. They are:
${ lawyer.last_name }, ${ lawyer.first_name }

Step 2: Run the Template Wizard in DocAssemble

The document tells the software what data you want.  DocAssemble needs to read that document and see what’s in there.  You run the Template Wizard, and DocAssemble will allow you to upload your Word document with Mako templating code, and it will grab the names of all the variables and things that you need to collect in your interview. The wizard is actually itself a DocAssemble interview!

Step 3: Tell DocAssemble about the data.

Now, you have to help DocAssemble understand the data.  This is done by writing what DocAssemble calls the “Objects Initial Block.” For our example, the following would do:

- client: Individual
- lawyer: Individual

What we’re doing here is we are saying that the client variable and the lawyer variable are both what DocAssemble calls “Individuals.”  DocAssemble was written by a lawyer and comes with a library of objects that are specifically useful in the legal context.  Docket numbers, cases, judges—these are all things that DocAssemble already understands, and will save you some time.

Step 4: Write some questions.

Questions in DocAssemble are also written in the code in something called “question blocks.” (All the code, by the way, is written in another markup language called YAML, which has the benefit of not looking like a programming language.)  For the simple template, you can get away with things like this:

 What is your name?
 - Enter the Client's Name here:

If what you need to ask is not something that DocAssemble already knows about, you can specify the data type in the question, and DocAssemble will know what to do.

 When were you born?
 - Birthdate: client.birthdate
   datatype: date

Doing this will create a calendar drop-down in the interview. There are ways of specifying buttons, images, drop-down lists of options, yes/no options, even map locations, and signatures. If you need, you can have the question asked repeatedly, and then in a later choice question you can pull the choices from the answers to the earlier question, features that are available only in the most advanced SaaS online form generators.

Step 5: You’re done.

“Wait… I haven’t told it what order to ask the questions in!”  I hear you saying.  You don’t need to.  DocAssemble starts from the document you are trying to generate and works its way backward to figure out what questions to ask.  You can explicitly make one question dependent on knowing the answer to another.  Or, you can just refer to them in the question text.  For example:

 What is the name of ${}'s client?
 - Client name:

If your document makes reference to a client first, DocAssemble will look at the code for asking for client names, and it will notice that it doesn’t have anything to put in ${}. So it will look for another question it can ask to find out the lawyer’s name first, and do that. The flow of the interview is figured out by DocAssemble. And if you ever need to change it, you can.

The interview that is generated will also include a final page that will give you the option of downloading the resulting document in multiple formats, or emailing them wherever you want them to go.

The More

Remember I said it was both less and more than a document assembly tool?  Here is a glimpse into some of the things it is capable of that you might not expect.

Multi-User Interviews

We already know that you can specify that a certain question can’t be asked until another question is answered, to control the flow.  What DocAssemble also allows you to do is specify who has to answer a question, and it need not be the user who started the interview.  So you can send questions off to a lawyer to confirm that the case is viable, you can send questions off to admin staff to confirm whether or not a particular document has been provided, or whatever you like, and it all stays in the same interview workflow, so none of the earlier data is ever forgotten.

Live Help

Not sure how to answer a question? If the lawyer is logged in and marked as available, you can ask for live chat help through the DocAssemble interface.  No coding required.

What Else?

There’s a lot.

  • Interviews by text messaging.
  • Connect to existing databases to get information for questions or save answers.
  • Connect to other software, like practice management systems, via API to import data that has already been entered there.
  • Data encrypted on the server for client confidentiality.
  • Ability to create a user account, save answers, and come back and finish the interview later.
  • Ability to upload documents as a part of the interview.
  • Ability to have the system do things on a schedule after a question is answered, like reminders to send in documents.
  • Rudimentary machine-learning capabilites for text analysis.
  • Multi-language support.
  • Extensible with any Python libraries or code.
  • Easily integrate YouTube videos to help explain how to answer questions.
  • Ask the same question a random number of times (repeating sections). (e.g. Is there anyone else you want to leave a gift?)
  • Ask questions about the answer to previous questions. (e.g. What do you want to leave Aunt Millie?)
  • Make answers to previous questions the options for later questions. (e.g. Which beneficiary should this go to?)
  • Designed for scalability, so put it on a cloud server and it should never crash.
  • Modular, so you can re-use code.

Try it

There is a live demo to show you what the end product looks like. Check it out for yourself.

The Pros

  • Extremely powerful, integrates well with other tools
  • Lets you focus on the content of the interview instead of the form
  • Advanced interview features
  • Way less painful than most programming tools.
  • Completely free.
  • Extensive library of legal objects.

The Cons

  • No graphical user interface for generating interviews.
  • No graphical user interface for generating document templates.
  • High learning curve.
  • Very new, likely to change fast.
  • Low user-base, difficult to get support.

Leave a Reply