A resume has one job: get a human to open your portfolio. Everything on the page either serves that or is decoration. Here's the version that works, and a template to start from.
The formula is verb -> thing -> outcome, and the outcome is what separates TA resumes from artist resumes:
| Weak | Strong |
|---|---|
| "Worked on tools for the art team" | "Built a Blender batch exporter (Python/bpy) used by 6 artists - cut prop export time from ~15 min to under 1" |
| "Experienced with shaders" | "Authored the project's master material set; reduced shader permutations 40% during the optimization pass" |
| "Helped with pipeline" | "Wrote the P4 pre-submit validator that blocks wrongly-named assets - naming violations dropped to zero in two sprints" |
No metric? Estimate honestly ("about an hour a week per artist") or state scale ("used across 300+ assets"). A rough number you can defend in an interview beats a vague claim you can't.
Yes, applicant tracking systems screen for keywords. No, you don't need to keyword-stuff. The fix is mechanical: mirror the nouns from the job posting where they're true. If the posting says "Unreal Engine, Python, Perforce, shader development" and you have all four, those exact strings should appear somewhere on your page - in the skills block or inside project bullets. Write for the human; audit for the machine. One pass, five minutes, done.
Export text-based PDFs, not image-based ones. If you can't select the text in your PDF, neither can the ATS - your beautiful resume parses as an empty page. (Canva templates are a repeat offender.)
You have no employment. Experience is manufacturable, and TA is uniquely good for it: every tool you build for your own projects is real experience with a real user (you, and be honest - you're a demanding one). Game jams count. Mods count. That add-on you made because Blender's exporter annoyed you counts double, because shipping a fix for your own annoyance is the entire job description.
Structure a no-jobs-yet resume as: header -> portfolio pieces (as "Projects", written with the same verb->thing->outcome bullets) -> skills -> education -> anything else human (shipped jam games, community, teaching). Never apologize, never pad. A tight half-page of real things beats a full page of inflation.
Markdown, so you can version it in Git like the pipeline artifact it is. Render to PDF with anything (VS Code + extension, pandoc, or paste into your editor of choice).
# Firstname Lastname - Technical Artist portfolio.example.com - github.com/you - you@example.com - City / Remote (TZ) ## Projects **Batch Export Toolkit** - Python, Blender bpy - [github link] - Built a collection-aware FBX batch exporter with per-engine presets; used on a 4-person team, cut export setup from ~15 min to one click - What I'd change next: move preset storage from JSON to scene custom properties **"Riverbed" - stylized water shader** - HLSL, Unreal 5 - [breakdown link] - Authored depth-fade foam + flowmap water as a single master material, 6 artist-facing parameters, runs on Quest 3 within budget (breakdown on site) **Asset Validator** - Python CLI - [github link] - Pre-submit validator: naming, scale, missing LODs; blocks bad assets at the door - zero naming violations since adoption ## Skills - **Code:** Python, HLSL, a little C++ - **DCC:** Blender, Maya (cmds), Houdini (VEX basics) - **Engine & pipeline:** Unreal 5, Unity, Perforce, Git, Jira ## Experience **Freelance / personal pipeline work** - 2025-present - (Same bullet style: verb -> thing -> outcome) ## Education **BA Something, University of Somewhere** - 2024