Boxed form planner · Basalt & cyan · JetBrains Mono + Inter
Odoo
A purchase order shaped like Odoo's purchase.order — vendor, planned receipt dates per line, incoterm and payment terms — ready to replace the stock RFQ and PO print without a line of mapping.
2 designs, each a separate take on the same document rather than a recolour of one layout: Boxed form planner and Minimal, type-led. Every preview below is the actual compiled output, not a mock-up.
Open one in the editor and render it from your own JSON over the API — 1 page of A4 portrait, the same engine either way.
Printing from Odoo? These designs map to Odoo's own fields with no expression to write
Boxed form planner · Basalt & cyan · JetBrains Mono + Inter
Minimal, type-led · Slate & violet · Libre Baskerville + Inter
Same document, same data model, 2 different arguments about how it should look on paper. Pick on layout and typography — the content behaves identically.
| Design | Layout | Palette | Typefaces | Pages |
|---|---|---|---|---|
| Datum Sheet | Boxed form planner | Basalt & cyan | JetBrains Mono + Inter | 1 · A4 portrait |
| Quiet Folio | Minimal, type-led | Slate & violet | Libre Baskerville + Inter | 1 · A4 portrait |
Each design is authored against an explicit reflow contract, so it is defined up front which blocks are emitted once per record and which fields absorb longer content. That is what stops the layout falling apart at a hundred rows.
| Design | Repeats per record | Grows with your data |
|---|---|---|
| Datum Sheet | order lines (table rows; the column heads repeat on page break); tax-group rows in the total box | vendor and deliver-to fields; item descriptions; terms and instructions |
| Quiet Folio | order lines (table rows; the column heads repeat on page break); tax-group rows in the totals; note paragraphs in the column stream | vendor address; order facts; item descriptions; the receiving, note and acceptance paragraphs |
Open a design in the editor and the agent reshapes it around your schema — then render it from your own data over the API, or let your users edit it in the embedded editor.