Files
Reactive-Resume/docs/guides/exporting-resume-to-markdown.mdx
T
Amruth Pillai b404dbd42a Add application tracker (#3220)
* feat(applications): job application tracker with AI copilot

Add an Applications module at /dashboard/applications: pipeline board
(dnd-kit), table view with bulk actions, Insights (fit tiles, funnel,
sources, shareable funnel-flow SVG), campaigns, tags, CSV import, and
Add/Edit/Detail slide-overs. Each application links a live Reactive
Resume.

AI "Application Copilot" (applications.ai.*): job-posting autofill,
resume↔job match score (fit ring), resume tailoring, and cover-letter /
follow-up drafting — via the user's configured provider.

Board cards + table rows get context menus (edit / move / archive /
delete). Charts are CSS/SVG (no new chart dep); adds a UI Checkbox.

Also includes local TanStack devtools setup and toolchain bumps.

Claude-Session: https://claude.ai/code/session_01TEeRHnEayw2MFCShFRyL5f

* feat(applications): close follow-up gaps + squash migrations

Finish the deferred/open items on the applications tracker:

- Cover-letter upload re-enabled. Fix the storage blocker by deriving the
  key extension from content type (buildFileKey/EXTENSION_BY_CONTENT_TYPE)
  instead of hardcoding .jpeg, so PDFs serve correctly and non-JPEG image
  avatars keep working under FLAG_DISABLE_IMAGE_PROCESSING. Add
  coverLetterUrl/coverLetterName columns + Documents-section upload/remove.
- Contacts editor in the detail sheet (add/edit/remove, keyed per app).
- Board caps rendered cards per column (COLUMN_PAGE_SIZE=50 + "Show more").
- Extract new Lingui messages across locales.
- Guard coverLetterUrl to http(s)/relative at the API boundary.

Squash the five branch-only application-table migrations (create -> +tags
-> +cover-letter -> drop -> re-add) into a single clean CREATE TABLE via
drizzle-kit generate.

Claude-Session: https://claude.ai/code/session_01TEeRHnEayw2MFCShFRyL5f

* chore: update dependencies

* fix(web): address React Doctor findings — compiler, purity, query, component structure

prefer-module-scope-pure-function: hoist buildSubtitle, getDecimalPlaces,
handleLocaleChange, onLocaleChange, stop, listContent/groupedListContent to
module scope so they aren't rebuilt on every render.

react-compiler-todo (??=): rewrite draft.metadata.styleRules ??= [] to the
non-assignment form to unblock auto-memoization.

set-state-in-effect: derive updatedAtLabel at render time instead of syncing
it through useState + useEffect.

query-destructure-result: destructure useQuery results at call site in
resume-analysis and resume-thumbnail to follow TanStack Query v5 convention.

only-export-components: extract non-component exports to sibling .ts files so
Fast Refresh can preserve component state:
  - getNextWeights → typography/get-next-weights.ts
  - detectJsonImportType + ImportType → dialogs/resume/import.utils.ts
  - getLocaleOptions → features/locale/locale-options.tsx
  - preview helpers + DEFAULT_PDF_PAGE_SIZE → preview.shared.utils.ts
  - resolveHighlightToolbarState + defaultHighlightColor → rich-input.utils.ts
  - computeDelta + getSparklinePoints → statistics.utils.ts

no-multi-comp: split multi-component files into focused companions:
  - ResumePane + ToolbarButton → routes/agent/-components/resume-pane.tsx
  - DesktopBuilderShell → builder/$resumeId/-components/desktop-builder-shell.tsx
  - MobileBuilderShell + helpers → builder/$resumeId/-components/mobile-builder-shell.tsx
  - setBuilderLayout/getBuilderLayout moved to -store/sidebar.ts

fix(tests): add Resume type import to section-builder mocks and cast partial
mock data as unknown as Resume to satisfy stricter type checking; fix
noExplicitAny Biome errors in the same mocks.

* feat(applications): improve performance

* chore: fix knip issues

* perf(builder): halve per-keystroke render cost

Section-form fields called `form.handleSubmit()` on every keystroke, which
re-validated the whole form and toggled submit state — firing the render
cascade twice per character (~6809 renders/keystroke, FPS dropping to 9).

Persist via a form-level `listeners.onChange` instead and drop the per-field
`handleSubmit()` (basics, custom-fields, design). Narrow header/dock resume
subscriptions to metadata slices so they no longer re-render on content edits.

Cuts renders 6809 -> 3403 per keystroke (50%), 0 frame drops. Save, preview,
and design controls verified working; 449/449 web tests pass.

* perf(home): eliminate hero CLS from unreserved video box

The hero <section> is `flex items-center` (shrink-to-fit), so the video
wrapper's width depended on the video's intrinsic size, which only resolves
after the media loads. aspect-ratio couldn't reserve height without a definite
width, so the video grew from ~190px to ~563px after first paint and shoved the
centered hero text down ~373px (CLS ~0.095).

Give the wrapper a definite width (w-full + mx-auto on the CometCard) and set an
explicit aspect ratio + width/height on the video so its box is reserved before
load. CLS 0.095 -> 0; hero stays visually centered at max-w-4xl.

* docs: add application tracker guides

* chore(db): squash application migrations

* fix(email): import React in auth template for server-side rendering compatibility

* chore(release): v5.2.1

* Refactor resume rendering and builder workflows

* fix: address application tracker review findings
2026-07-05 23:44:04 +02:00

109 lines
5.0 KiB
Plaintext

---
title: "Exporting a resume to Markdown"
description: "Export your resume as a clean Markdown file for AI tools, personal websites, version control, notes, and quick text edits."
---
Use Markdown when you want the content of your resume in a portable plain-text format. Markdown keeps headings, lists, links, bold text, and italic text, but it does not try to preserve the visual template, page layout, colors, or spacing from the PDF.
Use PDF when you are submitting the finished resume. Use Markdown when you want to reuse, review, transform, or store the resume content.
## Export Markdown
<Steps>
<Step title="Open your resume">
Go to the dashboard and open the resume you want to export.
</Step>
<Step title="Open Download">
Click **Download** in the builder header, or open the **Export** section in the right sidebar and click **Download**.
</Step>
<Step title="Choose Resume or Cover letter">
Select **Resume** to export the resume content. Select **Cover letter** if you want a Markdown copy of the cover letter instead.
</Step>
<Step title="Download Markdown">
In the **Markdown** row, click **Download**. Your browser saves a `.md` file.
</Step>
</Steps>
<Frame caption="Download dialog with the Markdown export option">
<img
src="/images/guides/exporting-resume-to-markdown/screenshot-1.webp"
alt="Download dialog showing PDF, DOCX, Markdown, and JSON export options for a resume"
/>
</Frame>
## Use cases
Markdown export is useful when you need readable resume content outside the PDF.
| Use case | Why Markdown helps |
| --- | --- |
| **AI agents and assistants** | Markdown gives the model structured text with headings and lists, without the layout noise of a PDF. |
| **File search and retrieval systems** | `.md` files are easy to index, search, chunk, and cite in retrieval workflows. |
| **GitHub profile or portfolio repositories** | GitHub renders Markdown files, so you can reuse resume content in a profile README or portfolio repo. |
| **Personal websites and static sites** | Many site generators and CMS workflows accept Markdown as source content. |
| **Notes and knowledge bases** | Apps like Obsidian use Markdown syntax, so your resume can live next to job-search notes and interview prep. |
| **Version control** | Markdown diffs cleanly, making it easier to review what changed between resume versions. |
| **Quick editing** | Open the file in any text editor, make content edits, then copy the text wherever you need it. |
## Example Markdown
A shortened export of the built-in sample resume looks like this:
```md
# David Kowalski
_Game Developer | Unity & Unreal Engine Specialist_
david.kowalski@email.com - +1 (555) 291-4756 - Seattle, WA - [davidkowalski.games](https://davidkowalski.games)
## Summary
**Passionate game developer with 5+ years of professional experience** creating engaging gameplay systems and polished player experiences across multiple platforms. Specialized in Unity and Unreal Engine with strong expertise in C#, C++, and game design principles.
## Experience
### Cascade Studios - Senior Game Developer (March 2022 - Present)
_Seattle, WA_
- Lead gameplay programmer on an unannounced AAA action-adventure title built in Unreal Engine 5 for PC and next-gen consoles
- Architected and implemented core combat system including hit detection, combo mechanics, and enemy AI behavior trees serving 15+ enemy types
- Developed custom editor tools in C++ that reduced level designer iteration time by 40% and improved workflow efficiency across the team
- Optimized rendering pipeline and gameplay systems to maintain 60 FPS performance target on all supported platforms
## Education
### University of Washington - Bachelor of Science, Computer Science (2014 - 2018)
_Seattle, WA - Grade: 3.6 GPA_
Concentration in Game Development. Relevant Coursework: Game Engine Architecture, Computer Graphics, Artificial Intelligence, Physics Simulation, 3D Mathematics, Software Engineering, Data Structures & Algorithms
## Skills
### Unity Engine - Expert
C# - Editor Tools - Performance Profiling
### Unreal Engine - Advanced
C++ - Blueprints - UE5 Features
```
## What Markdown includes
Markdown export includes the visible resume or cover-letter content for the selected tab. It keeps the document structure, section headings, item headings, rich-text paragraphs, lists, links, bold text, and italic text.
Markdown export does not include visual-only choices such as template design, page size, column layout, colors, icon styling, spacing, or PDF page breaks.
<Tip>
If you are sharing the file with an AI assistant, include the job description in the same prompt and ask for changes as Markdown. That makes the result easy to compare before you update the resume in Reactive Resume.
</Tip>
## When not to use Markdown
Do not use Markdown as the final file for most job applications. Applicant portals and recruiters usually expect a PDF or DOCX file. Export Markdown when you need a working copy of the content, then export PDF when you are ready to submit.