Raysan Designs
All work

Case study · Studio system

Branded Document System

My invoices came out of FreshBooks and looked nothing like my website. I turned my studio paperwork into a small design system with code behind it. Invoices, quotes, my resume and letters now come from the same brand rules, built from data instead of redrawn by hand.

Client

Raysan Designs, my studio

Product

PDF templates + AI skills

Role

Design & art direction, AI-assisted build

Documents

Invoice, quote, resume, letter

One brand, four documents. The same wordmark bar, color bar, type scale and footer, filled with different data. All client details shown are samples.

The problem

My paperwork didn't look like my work

For years my invoices came out of FreshBooks. They worked, but they looked like everyone else's and nothing like raysandesigns.com.

When I needed a new invoice for a client, I also wanted a quote template and a resume in the same style. Making each one by hand in a layout tool meant three files that would drift apart the first time I changed a color or a phone number. I wanted the brand decided once and applied everywhere.

The approach

One brand, one pipeline

Every document goes through the same three steps. The content lives in a small data file. A build script lays it out with a shared brand kit. A headless browser prints it to a Letter-size PDF. Changing the brand means changing one file, and every document follows.

Data

A JSON file per document: the client, the line items, the dates. A new invoice is a few lines of data.

Brand kit

Fonts, colors, the type scale, the header, the color bar, the footer and the icons, defined once in Python and CSS.

Print

Chromium renders the page to PDF with the fonts embedded. Quotes then get fillable signature and date fields.

The rules

The brand, written down as rules

I started from my website header and translated it to print: a cream wordmark bar flush to the top-left corner, then a color bar that steps from dark coral to light peach. I explored cool tones and a pistachio green along the way and came back to coral, partly because anything blue read too close to Panasonic, where I work day to day.

  • A 60px wordmark bar and a 100px color bar, with white text and no shadow
  • Four gradient stops: #F98A5E, #FE9A6C, #FFA874 and #FFBA82, with cream #FFECCE for accent panels
  • Sofia Sans on a major-third scale from a 10pt base: 8, 10, 12.5, 15.6, 19.5, 24.4 and 30.5pt
  • Small uppercase labels with wide tracking, and warm gray #E4E2DE for every rule
  • The name is always "Raysan Designs." Only the URL and email stay lowercase.

Details

Small decisions that make it feel finished

The cream panel behind Amount due fades into white and runs off the right edge of the page, flush under the color bar, with the number right-aligned to the margin. The one figure a client needs is the one they see first.

Some table lines looked heavier than others. They were landing on half-pixels, so every row height is now a whole pixel. The header rule is 2px and the row rules are 1px of the same warm gray.

The invoice header. Billed to, Issued and Due sit in equal columns. The amount due gets its own cream panel.

Quotes

Long quotes that still sign cleanly

A quote can run to several pages. Line items never split across a page break. Terms and totals always start on a fresh page that repeats the header, and the signature block and footer are pinned to the bottom of the last page.

The client name and signature line is a real form field, and the date opens a date picker in Acrobat and Reader. A client can sign and return a quote without printing it.

Page one sells the scope. Page two repeats the header and holds the terms, totals and signature.

Process

I directed it; Claude wrote the code

I built this with Claude as a build partner. I set the direction, chose the type, color, spacing and icons, and judged every render. Claude wrote and rewrote the Python and CSS, rendered the PDFs and measured each layout. Most of the work happened in tight feedback loops: "the header is still too tall, cut it in half," "the rule under June looks different."

A few things broke along the way, and each one became a rule:

  • A long resume title spilled out of the color bar. Titles now sit on one line at the 24.4pt step.
  • The signature landed mid-page on short quotes. A small script measures the page and pins the block to the bottom.
  • Resume content was silently clipped at the page edge. A fit check now reports where each page's content ends before anything prints.
  • One overly broad edit wiped most of a script. It was restored from the saved template, and edits since then are small and targeted.

System

Each document became a skill

Templates still need someone to remember how to use them. So each document type became a skill: written instructions plus the code, which Claude loads when I ask for that document. "Make the October invoice for Matrix" or "tailor my resume to this posting" now starts from my rules instead of from scratch.

  • Invoice. Finds the last invoice number, fills in the months and hours, and applies NJ sales tax.
  • Quote. Numbers the quote, flows it across pages and adds the signature and date fields.
  • Resume. Tailors to a job posting from a fact bank of real experience, never inventing claims, and checks that it fits two pages.
  • Document system. The brand kit, letters, and the recipe for adding a new document type.

Extending it

A new document is a data file and a page of layout

The shared pieces live in one brand kit. A new document type uses it and only describes what's new about its own layout. The letter was the first type built this way, and it came together without restating a single brand rule. Its cover-letter version swaps the wordmark to my name, the same way the resume does.

Same kit, different jobs. A client letter for the studio and a resume under my own name.

What's next

Things to improve

  • One source for the brand. The invoice, quote and resume scripts were built before the shared kit and still carry their own copy of the styles. Moving them onto it would make a brand change truly one edit.
  • Catch visual changes automatically. I review every render by eye. Comparing each new PDF against an approved version would flag a shifted rule or a wrapped title before I do.
  • Accessible PDFs. The files look right but aren't tagged for screen readers. Adding document structure and reading order is the next step for anything sent to clients.
  • More document types. Project proposals and one-page capability sheets for prospective clients are next, built on the same kit.
  • Decide the rules earlier. Many rounds went into details like header height and rule weight. Writing those as rules up front, the way they're written now, would have saved most of them.

Available for work

Let's make it happen

Screen