Skip to main content
All Docs
FeaturesPurple PepperUpdated April 6, 2026

Document Storage & Management

Document Storage & Management

The document storage and management system lets agents upload, categorise, and manage files associated with a tenancy term — such as signed agreements, inventory reports, deposit certificates, and legal notices — directly within the tenancy overview.

Accessing Documents

Navigate to a tenancy and open the Tenancy Overview:

  • Overview tab — shows a "Term Documents" summary card at the top of the page with signing method and visibility badges for each document.
  • Documents tab — full document management interface with upload, filter, and delete capabilities. A badge on the tab label shows the total document count.

Uploading a Document

  1. Go to the Documents tab on a tenancy overview.
  2. Click Upload Document.
  3. Fill in the modal form:
FieldRequiredDescription
Document TypeYesCategory of the document (see list below)
File NameYesDisplay name for the file (e.g. Tenancy Agreement - 123 High St.pdf)
File URLYesDirect URL to the file — Vercel Blob, S3, or any external link
Signing MethodYesUploaded (no signing), Manually Signed (externally), or eSigned (electronically)
Date SignedNoOnly shown when signing method is Manually Signed or eSigned
VisibilityYesWho can see the document (see below)
NotesNoOptional free-text notes (max 2,000 characters)
  1. Click Upload Document to save.

Document Types

ValueLabel
tenancy_agreementTenancy Agreement
inventoryInventory
deposit_certificateDeposit Certificate
check_in_reportCheck-In Report
check_out_reportCheck-Out Report
section_21Section 21 Notice
section_8Section 8 Notice
guarantor_agreementGuarantor Agreement
reference_reportReference Report
insurance_certificateInsurance Certificate
otherOther

Signing Methods

ValueMeaning
uploadedDocument uploaded for reference only — no signing involved
manualSigned manually (wet signature or external tool); date can be recorded
eSignedElectronically signed; date can be recorded

Visibility Controls

Each document has a visibility setting that controls which parties can access it.

SettingWho can see it
Agent OnlyInternal — only agents in your organisation
Tenant VisibleAgents + the tenant(s) on this tenancy
Landlord VisibleAgents + the landlord
All PartiesAgents, tenants, and landlord

Visibility is displayed as a colour-coded badge on both the Overview and Documents tabs.

Filtering Documents

On the Documents tab, use the Type filter dropdown to show only documents of a specific category.

Deleting a Document

A delete action is available on each row in the Documents table. Deletion requires confirmation and is restricted to:

  • The user who originally uploaded the document, or
  • A user with an admin or owner role in the organisation.

All deletions are recorded in the audit log.

Audit Logging

The following actions are automatically logged:

  • Document uploaded
  • Document metadata updated (visibility, notes, signing info)
  • Document deleted

tRPC API Reference

The document router exposes the following procedures:

// Upload a document for a tenancy term
trpc.document.upload.mutate({ tenancyTermId, documentType, fileName, fileUrl, signingMethod, signedAt?, visibility, notes? })

// List documents for a tenancy term
trpc.document.listByTenancyTerm.query({ tenancyTermId, type?, visibility? })

// Get a single document
trpc.document.getById.query({ id })

// Update document metadata
trpc.document.update.mutate({ id, visibility?, notes?, signedAt?, signingMethod? })

// Delete a document (uploader or admin/owner only)
trpc.document.delete.mutate({ id })

// Get document count for a tenancy term
trpc.document.countByTenancyTerm.query({ tenancyTermId })

// Get available document types
trpc.document.getDocumentTypes.query()

Database Schema

Documents are stored in the tenancy_term_documents table:

ColumnTypeDescription
idstringPrimary key
tenancyTermIdstringLinks document to a tenancy term
uploadedByUserIdstringUser who uploaded the document
documentTypeenumCategory of the document
fileNamestringDisplay/original file name
fileUrlstringStorage URL
fileMimeTypestringMIME type of the file
fileSizeBytesstringFile size in bytes
signingMethodenumeSigned, manual, or uploaded
signedAttimestampWhen the document was signed (optional)
visibilityenumagent, tenant, landlord, or all
notesstringOptional notes (max 2,000 chars)

The table is indexed on orgId, tenancyTermId, and documentType.