Type Designer
What this page is — the catalog of document types your organisation issues, and the six ways a new one comes into being: from scratch, cloned, copied from another project, imported from another environment, generated by AI from a description, or built by AI from an existing document.
What it is for — so every contract, certificate and offer letter of a kind comes out the same way, from wording and rules somebody approved once.
The problem it solves — each department keeps its own Word template, and nobody can say which wording was approved.
Route: /org/papers/designer · Permissions: View this project's document types. to look (and
Show the Type Designer sidebar entry. for the sidebar entry); Create/edit/retire project types and template versions. to create,
publish, clone and retire; Manage org-canonical types/templates (projects inherit). for org-wide types that every project inherits.
1. What it is
A type is the mould; a document is what comes out of it. A type carries five things, and they do not all behave the same way when you change them:
| Part | Tab | Versioned | A change reaches existing documents? |
|---|---|---|---|
| Template | Template | Yes | No — only documents created after publishing |
| Fields | Fields | Yes | No |
| Lifecycle | Lifecycle | Yes | No |
| Behaviour | Behavior | No — saved on the type | Mostly yes, immediately |
| AI configuration | AI Config | No — saved on the type | Yes, from the next lifecycle event |
That table is the most useful thing to know about this screen. A document remembers the version it was created from, so a fixed template does not repair documents already made from a broken one. Behaviour, by contrast, is read live — turning Allows amendment off stops amendments on every existing document of the type at once.
Each card shows:
| On the card | Means |
|---|---|
| Name | What authors pick when creating a document |
| Code | The permanent machine identifier — unique across the whole organisation |
| Family chip | One of eleven classes (§5). Fixed at creation |
| Status badge | draft, active or retired |
| Org-wide badge | Belongs to no project — every project can create documents from it |
| Unpublished warning | No published version yet |
| Status | Offered in New Document | Means |
|---|---|---|
draft | No | Never published |
active | Yes | Has a published version |
retired | No | Withdrawn. Existing documents keep working. Types are never deleted |
2. Why you would use it
- The approved wording is the only wording on offer. Authors cannot drift from a template they never edit.
- Rules travel with the type. Approval, signature, numbering and confidentiality are decided once per class of document instead of remembered per document.
- AI removes the blank page. Describe a document, or upload last year's offer letter, and a working draft type — fields, sections, tables and signature anchors — is waiting for review in minutes.
- Types move between environments safely. Export from dev, import into production, and the importer tells you exactly which approval workflows and clauses it could not reconnect.
- Variants do not fork the original. Clone or copy a type to build a variant without touching the one in use.
3. Six ways to get a new type
Every route below creates a draft. Nothing is ever published automatically.
| Route | Starts from | Cost | Best for |
|---|---|---|---|
| New Type | Nothing | Free | A simple fixed-wording letter |
| Clone | A type in the same scope | Free | A variant — one-way NDA from a mutual one |
| Copy to project | A type in another project | Free | Project B wants project A's type, with a tweak |
| Import | An exported type file | Free | Moving a type from dev to production |
| Generate with AI | A plain-language description | 600 credits est. · 2,400 max | You have only an idea |
| Build from a document | An uploaded file | 1,200 credits est. · 4,800 max | You have a real document whose wording you want to keep |
Generate with AI runs papers_template_generator: you describe the document, optionally force the
family and jurisdiction, and it returns a name, code, family, field schema, template and notes on what to
review.
Build from a document runs papers_type_from_document. The file's text layer is read directly, or OCR
is used for scans; text is capped at 60,000 characters (about 40 pages). Optional guidance — "salary,
joining date and designation must be variables; keep the confidentiality clause fixed" — is the single
highest-leverage input. Anything the model was unsure about is left as fixed text and listed in
review_items, because silently turning a negotiated clause into a blank is the more dangerous mistake. The
uploaded file is discarded after conversion.
4. Step by step
Create and publish
- Pick a route from §3.
- Open the card and work through the Template, Fields, Behavior, Lifecycle and AI Config tabs.
- Save draft — the designer does not autosave.
- Publish. The badge becomes
activeand the type appears in New Document.
Change a published type — New draft version → edit → Publish. Documents already created keep the version they were made from.
Retire — Retire on the card, then confirm.
Move between environments — Export downloads the definition as JSON; Import in the target environment re-creates it as a draft and shows a report.
5. Field reference
New / Clone drawer
| Field | Required | Rules | Refusal |
|---|---|---|---|
| Clone from | No | Retired types are not offered. When set, family and description come from the source | — |
| Name | Yes | Typing it fills the code until you edit the code | — |
| Code | Yes | Lowercase letters, digits and underscores; unique across the organisation, not just the project; permanent | invalid code "X": lowercase letters, digits and underscores only · a document type with code "nda" already exists in this organization — choose a different code |
| Family | Yes | One of the eleven below; permanent | invalid family "x" |
| Description | No | Shown on the card | — |
The eleven families
The family is the one decision on this page you cannot revisit. It chooses the default lifecycle chain, the defaults the Behavior tab applies, the checklist AI clause reviews use, and which smart fields, signatory grants and regulation rules match.
| Family | Typical documents | Apply defaults turns on |
|---|---|---|
| Transactional | Quotation, pro-forma, purchase order | Approval, line items, tax exclusive, 30-day validity |
| Agreement | NDA, MSA, contract, SOW | Approval, signature, counterparty, amendment, versioning |
| Correspondence | Offer letter, notice | Approval |
| Certificate | Certificates, warranties | Download on; signature and draft watermark off |
| Policy | Internal policy, SOP | Approval, versioning |
| Record | Minutes, reports, filings | Nothing |
| Specification | SRS, design documents | Approval, versioning; signature off |
| Compliance filing | Statutory returns, licences, permits | Approval, versioning, 365-day validity |
| Proposal / bid | Tenders, RFP responses | Approval, line items, tax exclusive, 30-day validity |
| Form / application | Intake submissions | Approval, counterparty; draft watermark off |
| Custom | Anything | Turns every switch off |
Limits and refusals
| Rule | Detail |
|---|---|
| Type limit | System Config papers.max_types_per_org; 0 = unlimited. Counts every non-retired type in every project — the chip reads "n of N used across the organization". Refusal: your organization has reached its limit of N document types (papers.max_types_per_org) — this limit is shared by all projects |
| Retiring a type an intake form uses | Refused: this type is generated by a Papers intake bridge from the "X" form — delete that bridge in Organization Settings → Papers → Intake forms before retiring the type |
| Copy to project | Needs a new code (codes are org-wide). Counts against the limit. References that could not travel are listed as warnings |
Import report
| Reference in the file | Re-matched in the target by | If not found |
|---|---|---|
| Approval workflow on a transition | Module and workflow name | Set empty and listed — reconnect it on the Lifecycle tab |
| Clause in a Clause block | Clause title | Set empty and listed — reconnect it on the Template tab |
| Type code | Kept, or the nearest free code | could not find a free code near "x" — rename the type and import again |
Other import refusals: That file is not valid JSON — pick a file exported from the Type Designer. · the export has no type name.
6. Worked example
An HR operations lead needs an Offer Letter (India) type and has last year's approved letter as a PDF.
- Generate with AI → Document tab → upload the PDF. Guidance: "candidate name, designation, annual CTC, joining date and reporting manager must be variables; keep the confidentiality clause fixed."
- About 1,200 credits later the review screen shows the fields —
candidate_name(party),designation(text),annual_ctc(currency),joining_date(date),reporting_manager(text),salary_components(line items) — and one review item: "Probation period of six months — could be a variable if it differs per offer." - They rename the code to
offer_letter_india, keep family Correspondence, and Create draft type. - In the designer they promote the probation period to a
probation_monthsnumber field, press Apply Correspondence defaults, pick theHR/{FY}/{SEQ:0000}numbering sequence, Save draft, Publish.
Two weeks later they Export it from dev and Import it into production. The report lists one unresolved reference: the approval workflow "HR offer approval" does not exist there yet. They create it, reconnect it on the Lifecycle tab, and publish.
7. The admin contract
| Must be true | Where | What breaks without it |
|---|---|---|
| The role holds Create/edit/retire project types and template versions. | Role editor | The designer is read-only: no New Type, Generate, Publish, Clone or Retire |
| Manage org-canonical types/templates (projects inherit). for shared types | Role editor | Org-wide types cannot be changed from a project |
papers.max_types_per_org has headroom | System Config | Every create, clone, copy and import is refused |
| Approval workflows exist in each environment | Approval engine | Imported types arrive with gated transitions disconnected |
papers_template_generator and papers_type_from_document are active | Orbit AI Flow | Generate with AI fails |
| Numbering sequences and branding exist | Papers settings | Published types seal unnumbered, unbranded PDFs |
8. Downstream
| When you… | Then |
|---|---|
| Publish | New documents use this version; existing documents keep theirs |
| Change a Behaviour switch | It applies at once to existing documents of the type (see behaviour) |
| Retire | No new documents; existing ones keep working |
| Clone or copy | An independent duplicate — later edits to either do not reach the other |
| Change the family | Not possible — create a new type |
9. Don't confuse this with…
| Create a document | Uses a type. This screen builds one |
| Clause library | The second tab — reusable wording shared between types |
| Papers settings | Where numbering, branding and rules are created. A type refers to them |
| Classify | Picks an existing type for a document. Generate with AI creates a new type |
10. Troubleshooting
| Symptom | Cause |
|---|---|
| A type is not offered in New Document | It is draft or retired, not active |
| Fixing the template did not fix an existing document | Documents keep the version they were created from |
| …already exists in this organization… | Codes are unique org-wide — another project has it |
| …reached its limit of N document types… | The organisation cap; retired types do not count, so retire obsolete ones |
| Retire is refused | An intake bridge generates from the type — delete the bridge first |
| An imported type fails on submit | A workflow or clause reference was not reconnected — read the import report |
| New Type and Publish are missing | Your role lacks Create/edit/retire project types and template versions. |