If you've shipped a paper, you know the figure tax: you build a beautiful schematic, a reviewer asks you to move one box, and you spend an afternoon re-aligning everything by hand. Do that across three revisions and you've spent more time nudging vectors than running the analysis.

I started treating figures the way I treat code: as something that should be regenerable from a source, not hand-crafted once and patched forever. Here's the workflow that stuck.

1. Write the figure as text first

Before opening any drawing tool, I write the figure as a plain description in the repo:

ligand -> receptor (binding)