Module
Generate HR letters — offer letters, verification letters and the like — from templates, as PDFs carrying your brand. Each employee has a document store, and you can see how much of your storage quota is used.
What this solves
Someone asks for an employment verification letter. The last one is in a folder somewhere, or in an email thread. It gets copied, the name gets changed, and ideally every other detail gets changed too — but that is a manual pass, and manual passes are where a previous employee’s salary ends up in a current employee’s letter.
Generating the letter from a template and the employee record removes the copy-paste step entirely. The letter carries the right name, the right details and your brand, because it was built from data rather than from the last one.
What is included
Offer letters, verification letters and similar documents generated from a template rather than copied from the last one.
Letters come out as PDFs carrying the brand color set in workspace settings, consistent with payslips and invoices.
Each employee has their own store for the documents that belong to them, visible in their self-service portal.
You can see how much of your storage you have used, so running out is something you see coming rather than something you discover during an upload.
Files are checked by reading the stored bytes back — size, magic bytes, MIME type, SVG sanitization, image-spoof detection. Anything that fails is deleted.
Documents are tenant-scoped in the database, so another organization’s files are unreachable even by direct id.
Documents are stored on Cloudflare R2, with the metadata and the access rules in Postgres. That separation is what makes the per-employee store enforceable: whether you can read a file is decided by a database row governed by Row Level Security, not by whether you happen to have a URL.
Validation runs after the upload completes, against the bytes as stored rather than against what the browser claimed during the upload. That ordering matters. A file renamed to look like a PNG is caught by sniffing its magic bytes once it has landed, and an SVG is sanitized rather than trusted. Anything that fails validation is deleted rather than quarantined and forgotten.
Documents & letters shares its records with the rest of the workspace, so these modules read the same data rather than a copy of it.
Sign your organization up, configure your timezone and brand color, and invite your team. You can be running the same day.