Interviews are developered as YAML files. Within the YAML files, the text of the interview questions and documents is formatted with Markdown, and the logic of the interview flow is expressed with if/then/else statements in Python.

question : | What is your favorite number? fields : Favorite number : best_number datatype : number --- question : | % if best_number == 42: That's **my** favorite number! % else: What a _lousy_ favorite number. % endif mandatory : True GitHub

YAML, Markdown, and Python? Sounds scary!

YAML is a text format for expressing information in a way that is both human-readable and machine readable.

food : bread ingredients : - flour - yeast - water - salt

Markdown is a text format for expressing typographical formatting. For example, if you write this Markdown text:

It is *very* important that you obtain your [free credit report](https://www.annualcreditreport.com) as soon as possible.

then you get text that looks like this:

It is very important that you obtain your free credit report as soon as possible.

Python is a language designed to be readable and easy to learn. Interview developers do not need to have any prior experience with Python or computer programming in order to create docassemble interviews. The only Python statements developers may need to write are if/then/else statements that are very close to plain English. For example:

if user . is_citizen or user . is_legal_permanent_resident : user . is_eligible = True else : user . is_eligible = False

Support is available

Although docassemble has extensive documentation, you may have questions about how to use it. To get help from the community of developers and other users, you can chat in real time with knowledgeable developers on the docassemble Slack group. If you find a bug, you can submit an issue on GitHub.

In June 2018 and June 2019, the docassemble community convened for Docacon, a one-day docassemble conference. There have been sessions on docassemble at a variety of conferences on law and technology.