Using Pandoc and LaTeX, this LaTeX template and shell script allows a small-time independent consultant to write consulting proposals (Statement of Work, Retainer Agreement, etc.) and consulting reports as nice, sane Markdown files and publish them as PDFs suitable for sending to clients.
You need pandoc and pdflatex installed on a UNIX-like system to use this
template.
Output includes a simple layout, listing of basic facts of the engagement, and optionally a pre-filled "sign on the dotted line" acceptance page at the end.
The first eight digits of the MD5 hash of the source file (the result of
md5sum /path/to/my/sow.md | cut -c -8) are patched in as a reference number
for the document, helping to keep a bitwise handle on versions of a legally
binding document when preparing an engagement with less organized clients.
$ rm ./examples/sow.pdf # Blow away the example output.
$ ./consult ./examples/sow.md # Build your own!
# Have a look at your own ./examples/sow.pdf.
$ git reset --hard # Get back to where you started.
Add this repo to your ${PATH} or copy consult and consult_template.tex to
a directory in your ${PATH} such as /usr/local/bin. Then you can run
consult from anywhere:
/home/me/engagements/acme_anvils> consult sow.md
This publishes the document to /home/me/engagements/acme_anvils/sow.pdf.
consult uses some crude Pandoc template logic to allow some flexibility
through the YAML metadata at the top of the Markdown document. At the time of
writing, there are no guardrails to ensure that your metadata makes sense, and
Pandoc silently substitutes blanks for necessary but missing metadata, so use
with care.
A Statement of Work by a sole proprietor consultant with an attached acceptance
page, as in examples/sow.md, looks like this:
---
marketing_name: "Wile E. Coyote"
byline: "Land bird catching"
doc_title: "Statement of Work"
consultant_name: "Wile E. Coyote"
document_date: "17 September 1949"
document_hash:
client_name: Acme Anvils
client_representative: Jebediah Springfield
project_title: "Roadrunner Crushing Proof of Concept"
acceptance_page: true
agreement_text: |
The parties hereto verify that the terms of this Statement of Work are
acceptable. The Client Representative verifies that he or she is authorized
by the Client to execute this agreement on the Client's behalf.
...
But some variations can be helpful.
- If Wile E. Coyote incorporated, he could add a
consultant_representativeand useconsultant_namefor his corporate name. - Dropping the acceptance page by setting
acceptance_page: falseor just leaving the last two items off takes care of consulting reports or proposals where the client has their own contractual process. - For reports,
consultant_nameandconsultant_representativecan be omitted to present more streamlined top matter. - For projects without titles (such as retainer proposals),
project_titlecan be omitted to present more streamlined top matter. - (Coming Soon) If Wile E. Coyote got a corporate logo, he could substitute the
marketing_nameandbylinefor a pointer to the logo file.