Turn an Excel valuation model into a polished, institutional-grade equity research deck using Claude Design and Claude Code skills. The same workflow can be reused across pitch books, dashboards, and reports.
The dashboard automation guide showed how to wrap a Python financial model in an interactive HTML dashboard. This page covers the next problem most analysts run into: turning that same model into a professional, reusable presentation.
The workflow has two phases. First, Claude Design generates a complete institutional design system: colors, typography, chart styles, slide templates, the whole thing. Claude packages this as a downloadable skill you can drop into any project. Second, Claude Code uses that skill to build the actual deck, pulling figures directly from your Excel model and exporting a finished PDF.
Open Claude on the web (claude.ai), switch to Design mode, and hand it the prompt below. Design mode is where Claude can draft visuals, build palettes, define typography, and package everything into a reusable skill.
The prompt is opinionated on purpose. It tells Claude exactly who you are, what kind of work you produce, what aesthetic you want, what to avoid, and asks it to make strong choices instead of giving you options to pick from.
I'm a financial analyst. I build equity pitch decks, valuation reports, dashboards, and Excel models for institutional audiences (portfolio managers, investment committees, boards). I want a single design system I can apply across all of it so my output looks professional and consistent instead of cobbled together. The look should feel institutional: think sell-side research, consulting pitch decks, Bloomberg terminals. Serious, clean, numbers-first. Not startup-marketing or consumer-tech. Restrained, durable, ages well over many years. Please build me a complete design system and hand me the pieces I'll reuse: colors, typography, spacing rules, chart styles, and table formatting. Include reusable templates I can drop numbers into (slide layouts: title, chart, table, comparison, cover; a dashboard template; a report cover page; and the chart types I use all the time: line, bar, waterfall, sensitivity grid, football field, scatter). Charts need to work in both HTML/PDF output and in Excel models built with Python. I don't know design jargon. Make strong opinionated choices for me instead of giving me options.
Claude Design will create a project folder containing every piece of the design system as
actual files: the color tokens, the typography rules, the chart definitions, slide layouts,
and a SKILL.md manifest that tells Claude Code how to use them.
The folder typically looks like this:
Download the entire folder. Claude Design exports it as a zip. Save it somewhere you'll remember.
Skills live in the .claude/skills/ directory inside any project. To install,
unzip the design system folder and copy it into .claude/skills/ in the project
where your Excel model lives.
Open the project in VS Code, launch Claude Code (claude in the terminal), and
the skill is automatically discovered. From now on, any prompt you write can reference the
design system by name.
With the skill installed and the Excel model in the same project folder, hand Claude Code
the prompt below. It instructs Claude to use the design system, extract numbers from Excel
with openpyxl, render every slide, and export a combined PDF.
I have a design system called [name of your skill here] in the skills folder, and a finished Excel model here in this folder. Build a 9-slide equity research deck using the design system, pulling all figures from the Excel model (Base Case scenario). Export as a combined PDF. Start by writing a small data-extraction step: open the workbook with openpyxl (or the formulas package if you need to resolve formulas) and produce a JSON dict with every figure the slides need (historical and forecast revenue, net income, subscribers, avg price, WACC inputs, DCF bridge, scenarios, peer multiples). Every slide's HTML reads from that dict so the deck is live-linked to the model. Slides: 1. Cover with thesis, price target, rating 2. Company overview and shareholder structure 3. Strategy and geographic position 4. Historical financials (revenue composition, net income, margins) 5. Base case forecast with assumption rationale 6. Peer multiples and operational ratios 7. WACC build-up with beta regression scatter 8. DCF valuation with sensitivity grid 9. Football field and final recommendation Only rule that matters: no content overlaps the slide footer. Every slide has a Source footer absolutely positioned at the bottom. After each slide, run a Playwright check that no element's bottom extends past the footer's top, and trim until none does. Don't trust scrollHeight alone, walk descendants and compare against the footer's bounding rect. If a slide ends up with empty space, fill it with a short commentary block (takeaway bullets, assumption rationale, interpretation) so there are no visible gaps.
Replace [name of your skill here] with the folder name from your
.claude/skills/ directory (in our example, institutional-design).
Once the first pass is done, the entire deck is just HTML files reading from your JSON dict and rendered through the design system. Iterating is fast: ask Claude to swap a chart type, add a slide, change the cover thesis, or pull a different scenario from the model. The design system stays consistent, so every change still looks like it belongs in the same deck.
Every change goes through Git, so you can compare versions and roll back instantly if the new layout doesn't land.
You've now seen the full design-to-deliverable loop: Claude Design builds the visual language once, packages it as a portable skill, and Claude Code reuses it forever. Pair that skill with any Excel model and you get a finished, audit-quality presentation in minutes instead of days.
The same skill can power valuation decks, board materials, sector overviews, monthly portfolio reviews, or any other recurring presentation in your workflow. Build the design system once, point Claude at a different model and a different prompt, and the output stays consistent every time.