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.
{
"name": "Aarav Mehta",
"role": "Software Engineer",
"startDate": "2026-02-12",
"ctc": "₹ 18,00,000"
}Dear Aarav Mehta, we’re excited to offer you the position of Software Engineer…
Same Eshway UI system — tuned for docs.
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.
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.
Store a PDF once. Keep it versioned and re-usable across teams.
Define placeholders or coordinates for insertion (names, dates, amounts).
Batch render PDFs from structured input—same formatting every time.
Track exactly what changed, when, and by whom. Export a final PDF.
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)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.