Po creator
@dealdesk/po-creator
Turn a deal into a clean order form or purchase order, in markdown and printable HTML. Computes line totals, discounts, contract value, and a billing schedule, and lists what finance needs before signature. Works offline from a JSON file or a short text form.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
What it makes
Real output from this kit
Preview with scripts turned off. Download it to see it run.
- Sample file2 KB, download to openOrder formFrom the kit's tests
- Sample file2 KB, download to openOrder formFrom the kit's tests
How this works
- It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
- While it works, it reads and changes files in the places it lists, nowhere else.
- It runs these commands on your computer: node scripts/po-creator.mjs.
- Nothing runs until you choose to use it, and you can remove it any time.
SKILL.md
Order form and PO creator
Turns deal terms into a document a customer can sign and finance can bill from. The script does every calculation, so the numbers are exact and the same every time. You collect the terms, run it, and walk the user through the checklist.
When to use
- A rep or deal desk needs an order form or purchase order for a deal.
- The user pastes deal terms from a CRM, an email, or a quote and wants it "ready to sign".
- Not for contracts or MSAs. Those are legal documents; this produces the commercial order that sits under them.
Inputs
Ask for anything missing. Never invent a legal name, address, price, or PO number.
| Field | Notes |
|---|---|
| Customer legal name | Exact registered name with suffix (Inc., LLC, Ltd., GmbH) |
| Billing address and billing contact | Contact can be a team ("Accounts Payable") plus an email |
| Products | SKU, description, quantity, list price, net price; mark one-time fees |
| Term and start date | Months, and YYYY-MM-DD |
| Billing frequency and payment terms | annual (default), quarterly, monthly, semi-annual, upfront; Net 30 default |
| PO required? PO number? | Many larger customers will not pay an invoice without their PO number on it |
| Signer, tax ID, order number | Optional, but flagged when missing |
Recurring prices are per unit per year. Add "price_period": "month" (or | month in the short form) for monthly unit prices.
Steps
Collect the deal. If the user gave a file in
data/, use it. Otherwise writedata/deal.json(shape: the kit'sexamples/deal.json) ordata/deal.txtin the short form:customer: Contoso Robotics Inc. address: 22 Harbor Road, Bayview billing contact: Finance Team, invoices@contoso.example start: 2027-01-01 term: 24 months billing: annual payment terms: Net 30 po required: no line: PLAT-SEAT | Platform seat | 120 | 600 | 510 line: ONB-PLUS | Onboarding plus training | 1 | 9000 | 9000 | one-timeShow the user the terms you captured and ask them to confirm before generating.
Generate.
node scripts/po-creator.mjs data/deal.json --out out --name order-formUse
--nameto give each deal its own files, for example--name of-2026-0142. Add--today YYYY-MM-DDonly to reproduce an old run.- Read the summary in
out/<name>.json:totals,billing_schedule,checklist,blockers. - Report back with the template below. Lead with blockers.
- Fix and rerun. When the user supplies a missing item (PO number, signer), update the deal file and run step 2 again. Never hand-edit numbers in the output files.
- Hand off. The HTML prints cleanly to PDF from any browser (File, Print, Save as PDF). The finance checklist prints on its own last page and is marked internal: remind the user to drop that page before sending.
Output to the user
**Order Form OF-2026-0142** for Northwind Traders LLC: TCV $34,000.00, ACV $30,000.00, discount 17.1%.
Files: out/order-form.md, out/order-form.html (print to PDF)
Before signature (1 blocker):
- BLOCKER: customer requires a PO and none is recorded.
- Payment terms Net 45 are past Net 30: needs finance approval.
- Signer name and title are missing.
Billing: 4 quarterly invoices, first one $11,500.00 on 2026-12-01 (includes onboarding).Checks the script makes
- Blockers: missing legal name, address, billing email, start date; PO required but no PO number; zero or negative quantities.
- Warnings: no entity suffix on the legal name, start date in the past, payment terms past Net 30, overall discount above 20%, net above list, missing signer.
- Info: no tax or VAT ID, no order number, vendor onboarding forms.
If the discount or terms look non-standard, suggest running discount-approval-check (same deal file) before sending.
Guardrails
- Never fill in a legal name, PO number, tax ID, or price the user did not give you. Leave it missing and let the checklist flag it.
- Never send the document to anyone. The user sends it.
- Do not add legal terms, warranties, or SLAs to the order form. If the user asks, say those belong in the contract and suggest they reference it by name.
- Currency is one per document. If the deal mixes currencies, stop and ask.
README.md
PO creator
Turns deal terms into a clean order form or purchase order you can print to PDF and send for signature. It does the math (line totals, discounts, contract value, billing schedule) and lists what finance still needs before anyone signs.
Who it is for
Account executives, deal desk, and founders who sell and are tired of rebuilding the same order form in a doc every week. Works with any CRM: paste the terms or save them as a small JSON or text file.
Example
Input (data/deal.txt):
customer: Northwind Traders LLC
address: 100 Market Street, Springfield
billing contact: Accounts Payable, ap@northwind.example
start: 2026-12-01
term: 12 months
billing: quarterly
payment terms: Net 45
po required: yes
line: PLAT-SEAT | Platform seat | 50 | 600 | 480
line: SUP-PREM | Premium support | 1 | 6000 | 6000
line: ONB-STD | Onboarding package | 1 | 5000 | 4000 | one-timeOutput: out/order-form.md, out/order-form.html, and out/order-form.json, with:
- Total contract value $34,000.00, ACV $30,000.00, discount 17.1%
- Four quarterly invoices, the first $11,500.00 (it includes onboarding)
- Checklist: BLOCKER no PO number yet; Net 45 needs finance approval; signer missing
Try it right away with examples/deal.json or examples/deal.txt.
What it can access
- Runs
node scripts/po-creator.mjs(Node built-ins only, no network). - Reads
data/(plus the kit's ownexamples/), writesdata/andout/.
Setup
None. No API keys. Node 22 or newer.
Files
- README.md
- SKILL.md
- examples/deal.json
- examples/deal.txt
- kit.json
- scripts/po-creator.mjs
Did it work?
0worked for them0did not work
Sign in to say whether it worked for you.
Nobody has said yet. Tried it? Tell the next person.
