What is Docassemble?
Another way to say this is that Docassemble is a web framework that can be easily customized to create a wide variety of interactive applications with a (usually linear) question/answer format that might:
- Deliver tailored information or advice
- Fill out a template with information gathered from a user or client
- Place information into an electronic database
For example, a Docassemble interview could ask for something like the user's name and address and use those to add the user's signature to a letter to Congress. A more complex example could ask for facts that underly a complaint and create tailored pleadings: and even electronically file them on PACER.
These applications are usually called interviews. A server running Docassemble can run many interviews at once.
An interview author can use Docassemble to create one of these interviews without having to focus on many of the details of running or configuring a web application. At the same time, Docassemble offers a great deal of flexibility to customize and add advanced features without needing to switch to a different platform.
If you are reading this in the United States, you have probably used TurboTax or a competitor for filing your taxes. Docassemble allows the creation of very similar applications. Direct competitors to Docassemble's functionality include:
Notable apps in the same space but with different functionality include:
How does Docassemble work?
Docassemble runs on a web server. This could be a desktop or laptop computer, but most commonly, it's a computer in "the cloud," such as Amazon Web Services (AWS).
You typically access Docassemble from a web browser, either on a desktop or a mobile device. Docassemble can also be accessed by SMS text messaging, voice control, or by API.
Interview authors need to think about three key components when creating a Docassemble interview:
- The interview questions (and their sequence, and logic controlling that sequence)
- The template or final output, and any logic internal to the template that decides whether certain sections are shown or hidden.
- The underlying logic of the problem that the application is addressing. For example, a legal rule that exists in the real world. A name for these that is useful in many domains is business rules.
Interview files are written in plain text, using a combination of the YAML file format, Markdown, and Mako.
Templates are normally one of three choices, each with different systems of logic:
- A plain text template, using the same Markdown and Mako syntax as is used to write interviews.
- Microsoft Word (.docx) files, using Jinja2 syntax
- Adobe PDF formatted documents, using Acrobat's field editor
The plain text format can be downloaded by the end user as an RTF, Word or PDF file, and Microsoft Word templates can also be downloaded as PDF files.
Docassemble runs on Python, a popular and easy to use computer programming logic. It's typical to write business rules in Python. There are slight variations on Python used for logic inside templates.
There's no one place that you absolutely must put this logic. It can live in the template file. It could be embedded into your interview file. Or it can live in separate Python modules.
However, it's recommended to keep most of the logic representing substantive rules in separate Python modules. This keeps templates and interview files neat and readable. It also helps you be able to view all of your business rules in one place to validate, check for errors, and even run automated tests. For example, you could use short functions like this:
for each rule that your interview makes use of. It's even possible to share these rules with other authors and avoid having to go through the difficult process of turning legal rules into computer code when unnecessary.
Docassemble has a number of special features that make it powerful for representing complex legal applications.
- Ability to schedule interaction after the user's session has ended
- Integration with email and SMS to automate reminders, follow-up interviews, and more
- Ability to call external APIs to integrate third-party applications (such as payment platforms, maps, and databases)