Every case, where it is and who has it
Status, current step and progress for everything in flight. Filter for overdue work, or ask your documents a question.

Build the form, route it to the right people and keep a record of every step. On your own servers, with your own database, and AI that can run on your own hardware.
Each step names who fills what, and every document follows the same path, from the first form to the sealed PDF.
Status, current step and progress for everything in flight. Filter for overdue work, or ask your documents a question.

Look a customer up as they type, and the rest comes from your API, a spreadsheet or past documents.

Recipients open a secure link, save a draft, sign and finish, in English or Spanish.

Completion rate, time per step and the slowest step, so you know which part of the process to fix.

Send work to Finance only above a limit, run reviews side by side, and loop back for missing information.
Business-day SLAs. Overdue work is reminded, reassigned or escalated, and out-of-office covers itself.
Send a step to a group: the first person takes it, or a round-robin bot hands it to the least busy member.
Reference numbers, Word templates, field transforms, cloud storage and chained workflows, with no code.
Call your own APIs or read-only databases, send HMAC-signed webhooks and use the REST API.
Flag a second claim on the same policy or invoice number before anyone pays it twice.
Describe a form or upload the paper version. Every change is shown for review before it's applied, and you can undo anything.
Built for insurers, finance teams and anyone else who gets asked who changed what, and when.
Every value change, who made it, and whether it came from a person, a step or a bot.
Bank and ID numbers are masked for anyone not involved, in exports too.
Six roles, groups, two-step sign-in, and Entra ID, Google or Okta with a domain allowlist.
Completed documents are sealed with a fingerprint anyone can check on the verify page.
Edit and republish freely. Cases in flight finish on the version they started on.
Delete finished work on a schedule, except whatever is on hold.
Try it on your laptop with demo data, then put it on a server with one script. You keep the data, the database and the keys.
[email protected] with the password paperlane-demo-2026../deploy/update.sh backs up first, then pulls and migrates.$ git clone https://github.com/surenjanath/paperlane.git $ cd paperlane $ python3 -m venv .venv $ .venv/bin/pip install -r requirements.txt $ .venv/bin/python manage.py migrate $ .venv/bin/python manage.py seed_demo $ .venv/bin/python manage.py runserver # open http://127.0.0.1:8000
Optional: seed_stories and seed_bank_demo add more workflows and a complete bank-loan example.
# Ubuntu or Debian, with a domain pointing at the server $ git clone https://github.com/surenjanath/paperlane.git $ cd paperlane $ sudo ./deploy/install.sh --domain docs.example.com \ --email [email protected] --workspace "Acme Insurance"
Installs Docker if needed, writes fresh secrets, starts PostgreSQL, the app, the worker and Caddy, then prints your sign-in details. Re-running it is safe. Deployment guide
$ cp .env.example .env # set PAPERLANE_SECRET_KEY, PAPERLANE_ALLOWED_HOSTS, # PAPERLANE_SITE_URL, POSTGRES_PASSWORD and email $ docker compose --profile https up -d --build $ docker compose exec web python manage.py createsuperuser
Services: PostgreSQL 17, the web app (migrates on start) and a worker for jobs and nightly backups. Leave out --profile https if you run your own proxy.
Paperlane is licensed under AGPL-3.0, tested on every change: about 350 tests on SQLite and PostgreSQL, plus end-to-end browser tests. Star it, try it and tell us what your paperwork needs.