# docassemble

Guided interviews and document assembly from YAML, with a REST API to run and manage them.

docassemble is a web platform where you write interviews in YAML and Python that ask users questions and assemble documents such as contracts, intake forms and proposals. It runs as one Docker container. A documented REST API starts sessions, sets variables, manages users, the Playground, packages and server configuration.

- Capabilities: adaptable, operable
- Vertical: smb-ops-crm
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/jhpyle/docassemble (MIT), 1002 stars, last commit 2026-10-29
- Last activity: 2026-10-29
- Page: apps/jhpyle--docassemble.html
- JSON: apps/jhpyle--docassemble.json

## Use it when

- you need guided intake forms or contract generation where answers drive which documents get produced
- you want your agent to start sessions, fill answers and fetch generated documents through an API

## Gotchas

- the API needs a key per user, and privileged calls need a key from an admin or a user with a matching permission; API keys do not expire
- the Docker image is the supported install; the repo README itself only points to the website
- env vars listed are deployment settings; business behavior lives in interview YAML and config.yml
- the API has no call for live chat or touchscreen signatures; those run in the user's browser

## Editions

- Free: Free, open source
  - container: docker run -d -p 80:80 -p 443:443 --restart always --stop-timeout 600 jhpyle/docassemble
  - source: https://github.com/jhpyle/docassemble

## Adaptable: make it yours

Effort: light-edit (10 things to edit)

Interviews are YAML files with embedded Python that define questions, logic and document templates. config.yml sets branding and routing with keys such as default interview, default title, start page title, brandname, bootstrap theme and dispatch, plus feature switches like enable api. config.yml alone rebrands the site; your own intake flow and documents need a written interview, so effort is light-edit rather than config-only.

- Env vars: DAHOSTNAME, USELETSENCRYPT, LETSENCRYPTEMAIL, BEHINDHTTPSLOADBALANCER, DAENABLEPLAYGROUND, DAALLOWCONFIGURATIONEDITING, PACKAGES
- Config files: /usr/share/docassemble/config/config.yml, Docker/config/config.yml.dist, docassemble_demo/docassemble/demo/data/questions/hello.yml
- Prompt files: none
- Accounts you'll need: none

## Operable: what an agent can drive

Operability: official. Interface: api at https://docassemble.org/docs/api.html (published by the builder, local).

### Reach (partial coverage)

- Start and run an interview session: reachable. GET /api/session/new, GET/POST /api/session, POST /api/session/action
- Read and set interview variables: reachable. GET /api/session and POST /api/session; GET /api/interview_data
- Upload and retrieve files and generated documents: reachable. POST /api/session with files; GET /api/file/&lt;file_number>
- Create, invite and manage users and privileges: reachable. POST /api/user/new, POST /api/user_invite, PATCH /api/user, GET/POST /api/privileges
- Author interviews in the Playground: reachable. GET/POST/DELETE /api/playground, GET/POST/DELETE /api/playground/project, POST /api/playground_pull
- Install and update packages: reachable. POST /api/package, GET /api/package_update_status, DELETE /api/package
- Read and write server configuration: reachable. GET/POST/PATCH /api/config; POST /api/restart
- List and delete interview sessions: reachable. GET/DELETE /api/interviews and /api/user/interviews
- Extract fields from a DOCX or PDF template: reachable. POST /api/fields
- Help users by live chat, screen sharing and remote control: not reachable. Listed as Live chat on docassemble.org. No API route for it in the docs or under docassemble_webapp; it runs in the monitor web page over Socket.IO.

## Code stack

- Languages: Python, JavaScript
- Frameworks: Flask
- Package manager: pip
- Database: PostgreSQL
- Hosting target: docker

## Evidence and confidence

- formFactor: docassemble.org docs: web platform deployed in Docker (confidence 0.9)
- executionModel: interviews are YAML and Python logic; no model is required. The home page says interviews can use LLMs, which is interview code such as docassemble_demo aihelper.yml. (confidence 0.85)
- operability: docassemble.org/docs/api.html: X-API-Key or bearer auth; endpoint list read from the page and matched to route decorators in docassemble_webapp. (confidence 0.95)
- effort: docassemble.org/docs/config.html names default interview, default title, start page title, brandname and dispatch. Interview YAML holds the workflows and templates and takes Python for logic. (confidence 0.6)
- editions: MIT repo; docker run command from docassemble.org/docs/docker.html; Docker Hub jhpyle/docassemble has tag 1.10.15 from 2026-10-29 and about 2 million pulls; no price or hosted offer on docassemble.org. (confidence 0.9)
- active: GitHub commits API: last commit 2026-10-29; no GitHub releases
- reach:  (confidence 0.9)

## Sources

- https://docassemble.org (sourcing:smb-ops-crm:curated)
- https://docassemble.org/docs/api.html (analysis)
- https://docassemble.org/docs/docker.html (verification)
- https://docassemble.org/docs/config.html (verification)
