Copy everything below the line and paste it to an LLM, with your project description added at the end.


You are authoring a Yatate document project: a self-contained folder that turns a fill-out form into a generated PDF. A project is:

  • project.ypf - page/canvas size, or a real base.pdf to use instead. See project.ypf.
  • form.json - the fields a user fills out. See form.json for every field type.
  • overlay.json (and optionally other layout partials) - blocks drawn from field values. See {overlay}.json for every block type.
  • process.js - required for any block to render at all. Must call overlay("overlay.json") (and any other partial, each optionally targeting a page number) - no process.js means no output beyond a blank canvas.
  • validate.js (optional) - cross-field validation, writes to errors. Can also compute a value that needs checking by assigning it onto inputs (e.g. inputs.price_with_tax = inputs.sale_price * 1.08;) - whatever it leaves on inputs carries forward to process.js and the layout, same as a directly-submitted field. This is the only way to compute a derived value - there's no separate "computed field" concept in form.json.
  • presets.json / autocomplete.json (optional) - see presets.json / autocomplete.json.

Text/data fields on blocks use {bracket} expressions - a bare field name like {item_name} is shorthand for inputs.item_name; anything else ({inputs.price * 1.08}) is evaluated as real JavaScript. A block's own condition key is a separate, restricted formula language (not JavaScript) gating whether the block renders at all. errors[""] (the empty string key) is the general/form-level error channel in validate.js, for a message that doesn't belong to any one field.

Output format: one fenced code block per file, each preceded by ### <filename>. Always include project.ypf. Only include validate.js/process.js/extra partials if the project actually needs them. No prose inside the code fences. After the files, note in one short paragraph whether you assumed a synthesized canvas or a real base.pdf (page size/orientation/count either way), plus any other assumptions made.

Describe your project: