Overview
Discover what makes docassemble powerful
Docassemble is a **Python‑centric** expert system designed for guided interviews and dynamic document assembly. At its core, the platform exposes a web interface that orchestrates conversational flows defined in YAML/Markdown. The interview logic is compiled into lightweight Python objects, enabling developers to embed business rules, conditional branching, and external API calls directly within a declarative schema. When an interview completes, Docassemble renders output files (PDF, RTF, DOCX) using the Jinja templating engine and the *docx* or *reportlab* libraries, automatically populating placeholders with user data.
Python 3.10+
SQLite
Gunicorn
Celery
Overview
Docassemble is a Python‑centric expert system designed for guided interviews and dynamic document assembly. At its core, the platform exposes a web interface that orchestrates conversational flows defined in YAML/Markdown. The interview logic is compiled into lightweight Python objects, enabling developers to embed business rules, conditional branching, and external API calls directly within a declarative schema. When an interview completes, Docassemble renders output files (PDF, RTF, DOCX) using the Jinja templating engine and the docx or reportlab libraries, automatically populating placeholders with user data.
Architecture
Docassemble follows a monolithic Django‑like architecture but deliberately separates concerns through modular packages. The stack includes:
- Python 3.10+ as the runtime, with extensive use of pydantic for data validation.
- SQLite as the default datastore, with support for PostgreSQL or MySQL via SQLAlchemy.
- Gunicorn + Nginx for production deployment, but it can run under any WSGI server.
- Celery + Redis for background tasks such as email, SMS, or OpenAI API calls.
- WebSocket support for live chat and real‑time interactions.
The interview engine parses YAML files, converts them into a state machine, and stores session data in the database. Templates are rendered server‑side; client‑side JavaScript handles form validation and progress tracking.
Core Capabilities
- Declarative Interview Design: Define questions, logic branches, and output templates in a single YAML/Markdown file.
- Template Engine: Use Jinja syntax to interpolate data into DOCX, PDF, or RTF files.
- External API Integration: Call REST services from within an interview using
httpblocks or custom Python modules. - Webhooks & Events: Trigger external services (e.g., Slack, Zapier) on interview completion.
- Signature Capture: Store SVG or base64 signatures and embed them in generated documents.
- Multichannel Delivery: Email, SMS (via Twilio or other gateways), and even push notifications.
Deployment & Infrastructure
Docassemble is self‑hosted by design. A single docker-compose.yml can spin up the entire stack, making it ideal for CI/CD pipelines or Kubernetes deployments. The application scales horizontally by adding more web workers; the database layer must be shared (PostgreSQL) for true concurrency. For high‑availability, configure Nginx as a reverse proxy with SSL termination and use Redis in cluster mode for Celery.
Integration & Extensibility
Developers can extend Docassemble by:
- Creating Python packages that expose new interview blocks or helper functions.
- Writing custom Jinja filters for complex data transformations.
- Subscribing to the event bus (
docassemble.core.eventmodule) to hook into interview lifecycle events. - Leveraging the REST API (
/api/v1) for programmatic interview initiation and result retrieval.
The platform also offers a Word Add‑in that syncs DOCX templates to the server, simplifying template maintenance across teams.
Developer Experience
Docassemble’s documentation is thorough, with examples for every feature. The community is active on Slack and GitHub, providing quick support for integration questions. Configuration is largely YAML‑based, reducing boilerplate code. The platform’s open‑source license (GPLv3) ensures freedom to modify and redistribute, which is attractive for law firms or NGOs needing custom workflows.
Use Cases
- Legal Document Automation: Automate intake forms, generate NDAs or lease agreements on the fly.
- Healthcare Intake: Collect patient data via guided interviews and produce consent PDFs.
- Survey & Feedback Systems: Deploy dynamic questionnaires that adapt based on prior answers and send results to analytics dashboards.
- Compliance Checks: Run procedural checks (e.g., GDPR consent) and generate compliance reports.
Advantages
- Performance: Lightweight Python engine with minimal runtime overhead; caching and background workers keep response times low.
- Flexibility: Declarative YAML allows non‑technical staff to edit interview flows while developers focus on backend logic.
- Licensing: GPLv3 encourages community contributions and ensures no hidden costs.
- Ecosystem: Built‑in support for major document formats, signatures, and multichannel communication reduces the need for external services.
In summary, Docassemble offers a robust, extensible framework that lets developers build sophisticated guided‑interview applications with minimal friction while maintaining full control over deployment and data privacy.
Open SourceReady to get started?
Join the community and start self-hosting docassemble today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Thumbor
Smart, on-demand image resizing and cropping
REI3
Open low‑code platform for self‑hosted apps
HedgeDoc
Collaborative real‑time markdown editor
Reaparr
Cross‑platform Plex media downloader that syncs libraries
Islandora
Open‑source digital repository for managing and sharing collections
Kener
Stunning self‑hosted status pages in Docker
