Open sourceAGPL-3.0 · self-hosted · built on Django

Forms, approvals and signatures in one workflow.

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.

git clone https://github.com/surenjanath/paperlane.git
The Paperlane workflow builder: a personal loan workflow starting from a public application form, then the applicant, an ID check for a customer service group and a loan officer review, with the six documents it uses listed beside it.
Approvals on a phone: an insurance claim with its key facts and Approved, Reduce and Reject buttons.
  • Visual builderSteps, branches, parallel lanes
  • E-signaturesSealed, verifiable PDFs
  • Local AIOllama or any cloud model
  • Your serversPostgreSQL, Docker, backups
  • No build stepDjango + server-rendered pages
The product

Map the process the way it actually runs.

Each step names who fills what, and every document follows the same path, from the first form to the sealed PDF.

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.

The Documents list with expense approvals, vendor onboarding and insurance claims, each showing its status, next step and progress.

Public forms that fill themselves

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

A public form to apply for a personal loan, where the customer number and date of birth fill in the applicant's details.

No account needed to fill a step

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

A recipient completing the claim payment step of an insurance claim, with the claimant's signature already on the document.

See exactly where work waits

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

Workflow insights for personal loans: 30% completion rate, 32.4 hours median time, and a table of time per step that flags the slowest step.

Branches and parallel lanes

Send work to Finance only above a limit, run reviews side by side, and loop back for missing information.

Deadlines that escalate

Business-day SLAs. Overdue work is reminded, reassigned or escalated, and out-of-office covers itself.

Team work queues

Send a step to a group: the first person takes it, or a round-robin bot hands it to the least busy member.

Bots for the busywork

Reference numbers, Word templates, field transforms, cloud storage and chained workflows, with no code.

Connectors and webhooks

Call your own APIs or read-only databases, send HMAC-signed webhooks and use the REST API.

Duplicate detection

Flag a second claim on the same policy or invoice number before anyone pays it twice.

AI, on your terms

AI that does the setup work.

Describe a form or upload the paper version. Every change is shown for review before it's applied, and you can undo anything.

  • Build forms and workflows from a descriptionOr start from an existing PDF, Word file or photo of the paper form.
  • Runs on your hardwarePoint it at a local model with Ollama and nothing leaves your network. Sensitive fields are never sent to a model.
  • Ask what went wrongThe assistant reads a stuck document, explains the cause and can open a support ticket.
  • An MCP server for agentsAI agents can build workflows, start documents and complete steps with the same permissions as a person.
The AI document builder in the form editor, with example prompts and a Design the document button.
Security and audit

Controls you can explain to an auditor.

Built for insurers, finance teams and anyone else who gets asked who changed what, and when.

Field history

Every value change, who made it, and whether it came from a person, a step or a bot.

Sensitive fields

Bank and ID numbers are masked for anyone not involved, in exports too.

Roles and single sign-on

Six roles, groups, two-step sign-in, and Entra ID, Google or Okta with a domain allowlist.

Tamper-evident documents

Completed documents are sealed with a fingerprint anyone can check on the verify page.

Versions stay put

Edit and republish freely. Cases in flight finish on the version they started on.

Retention and legal hold

Delete finished work on a schedule, except whatever is on hold.

One decision, one record. If two teammates approve the same task at the same moment, it advances once. The second person is told who got there first, and the audit trail shows one approval.
One loan application's status page: each step with who completed it and when, the steps still to come, and tabs for revisions, history, audit trail and bot logs.
Self-host

Run it in two minutes.

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.

01Local: SQLite and the demo workspace. Sign in as [email protected] with the password paperlane-demo-2026.
02Server: PostgreSQL 17, a jobs worker, nightly backups and automatic HTTPS through Caddy.
03Updates: ./deploy/update.sh backs up first, then pulls and migrates.
Python 3.12+Django 6PostgreSQL or SQLiteVanilla JSDockerOllama
$ 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.

Free, open source and yours to run.

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.