EO
PT
LG
SL
/// INTERNAL TOOLING
Deterministic PDFs • versioned templates • audit-friendly.

Generate pixel-perfect offer letters & contracts.

Upload a PDF template once, then insert names & fields reliably across every document—no more manual edits, copy mistakes, or formatting drift.

Placeholders
{{name}} / coordinates
Output
PDF + audit log
Scale
Batch generate
pdf://render?template=offer-letter
/// INPUT
{
  "name": "Aarav Mehta",
  "role": "Software Engineer",
  "startDate": "2026-02-12",
  "ctc": "₹ 18,00,000"
}
/// OUTPUT
Offer Letter

Dear Aarav Mehta, we’re excited to offer you the position of Software Engineer

/signedaudit: onexport: pdf
/// TEMPLATE TYPES

Same Eshway UI system — tuned for docs.

Offer letters/pdf
Employment contracts/pdf
NDAs/pdf
MSAs/pdf
Internship letters/pdf
Invoices/pdf
Certificates/pdf
Policies/pdf
Offer letters/pdf
Employment contracts/pdf
NDAs/pdf
MSAs/pdf
Internship letters/pdf
Invoices/pdf
Certificates/pdf
Policies/pdf
/// TEMPLATES

A few templates to prove the components are here

Tab stack animation, glass cards, typography, and highlight effects are all ported from the main Eshway site — just repurposed for PDFs.

Offer Letter
Fast hiring with consistent docs
v1.0
name
{{name}}
startDate
{{startDate}}
role
{{role}}
ctc
{{ctc}}
placeholders
Dear {{name}}, this letter confirms your role as {{role}}
/// FLOW

How it works (productized, not “agency-ish”)

This section is intentionally different from the main website, but it uses the same visual language: glass, mono metadata, and soft brand glow.

templates/v1
Upload a template

Store a PDF once. Keep it versioned and re-usable across teams.

schema.json
Map fields

Define placeholders or coordinates for insertion (names, dates, amounts).

render()
Generate

Batch render PDFs from structured input—same formatting every time.

audit.log
Audit & export

Track exactly what changed, when, and by whom. Export a final PDF.

/// EXAMPLE (PSEUDO)
const template = await templates.get("offer-letter@v1")
const payload = { name: "Aarav", role: "Engineer", startDate: "2026-02-12" }

const { pdf, audit } = await render(template, payload)
await exports.save(pdf)
await audits.append(audit)
/// NEXT

Ready to plug in the utility functions?

This page is just the shell. Next we can add: template uploads, field mapping UI, PDF render endpoint, and a tiny “history/audit” viewer.