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 realbase.pdfto 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 calloverlay("overlay.json")(and any other partial, each optionally targeting a page number) - noprocess.jsmeans no output beyond a blank canvas.validate.js(optional) - cross-field validation, writes toerrors. Can also compute a value that needs checking by assigning it ontoinputs(e.g.inputs.price_with_tax = inputs.sale_price * 1.08;) - whatever it leaves oninputscarries forward toprocess.jsand 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 inform.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: