Paste any job description. Structured data in under two seconds.
Paste a job description. The parser returns the fields you would otherwise type by hand. Company, title, experience level, required skills, salary range, and the keywords an ATS will match against. Each one lands in the correct field in the tracker, so you are not re-reading the same posting three times to remember what it asked for.
How to use job description parser.
3 steps. Each one runs in seconds. Scroll in order.
- 01
Paste the raw posting
Copy the full job description out of LinkedIn, Indeed, Glassdoor, or a company careers page and drop it into the box. No character limit on free or paid plans.
- 02
The model extracts the fields
The posting goes to a fast extraction model configured with a tight prompt. Output is a strict JSON shape: company, title, experience level, required skills, nice-to-have, salary range if listed, ATS keywords.
- 03
Every field lands in your tracker
The parsed record populates the job form in one pass. You can edit anything before saving. The full raw JD stays attached to the record so later steps (tailoring, keyword match, rejection analysis) can read it.
What the output actually looks like
Every field above is what the downstream AI uses. The resume tailor reads key_skills. The keyword match scores against ats_keywords. The rejection analyzer considers experience_level. Clean extraction is what makes the whole loop work.
Stripe is hiring a Senior Frontend Engineer on the Payments team. You will partner with product and design to turn Figma prototypes into shippable UI using React, Next.js, TypeScript, and our internal design system. You will care about Core Web Vitals, WCAG 2.1 AA, and writing Jest + Playwright tests for everything you ship. Experience in fintech or a regulated environment is a plus. Salary range: 190k to 240k plus equity.
{
"company_name": "Stripe",
"job_title": "Senior Frontend Engineer",
"experience_level": "senior",
"key_skills": ["React", "Next.js", "TypeScript"],
"nice_to_have": ["fintech", "regulated environment"],
"salary_range": "$190K to $240K + equity",
"ats_keywords": ["Core Web Vitals", "WCAG 2.1 AA", "Jest", "Playwright", "design system"]
}The mechanics nobody hides.
You should be able to tell how a feature works before you trust it with your job search.
A small fast model, not a heavyweight one
Extraction is a classification task, not a creative one. A small, fast model handles it in roughly a second and costs pennies per parse. A larger model would be overkill and slow the paste-to-saved flow.
Strict JSON shape
The prompt enforces a JSON schema so we never have to parse free-form paragraphs out of the model. If a field is not in the posting (say, salary is absent) we return null for that field instead of guessing.
Structured fields drive every downstream step
The tailor, keyword match, cover letter, and interview prep all read the parsed structured fields rather than re-reading the full 2,000-word posting. The parse runs once per job and is cached so downstream calls do not re-parse.
Works with any board format
The parser is format-agnostic. LinkedIn reels, Indeed bullet lists, company careers pages with three paragraphs of "about us" before the role. All supported. The extraction prompt is designed to surface the required skills and ATS keywords from the body of the posting, not the surrounding boilerplate.
What it deliberately does not do.
Honest limits read as trust signals. Hiding them does the opposite.
- We do not fetch a posting from a URL. Paste the text. This keeps the feature deterministic and avoids scraping.
- We do not parse PDF job descriptions inside the web app. Paste the text from the PDF.
- We do not claim 100% field accuracy. Unusual postings (single-paragraph descriptions, screenshots pasted as text) can miss fields. Everything is editable before save.
Common questions.
If your question isn't here, email support and you'll hear back from the founder.
How long does a parse take?
Roughly one to two seconds on a typical JD. Very long postings (3,000+ words) can push toward three seconds. Still under the threshold where you feel the wait.
How does the parser work?
A small, fast extraction model with a tight prompt. A larger general-purpose model would buy us nothing here and cost more. Free and Pro tiers use the same parser with the same prompt.
Is there a character limit?
No soft limit. Very large pastes (over 20,000 characters) get truncated before parsing, but we keep the full text on the record so tailoring still sees everything.
Can I edit the parsed fields before saving?
Yes. Everything is a regular form field after parsing. If the model missed the experience level or misread the salary range, type over it before you save the job.
Does the Chrome extension parse the JD on save?
No. Extension saves are intentionally cheap. The popup captures company, title, and the raw posting from the page via DOM scrape, no AI call at save time. The parse runs lazily the first time you open the saved job in the dashboard, so speculative saves (when you Save 30 postings while browsing but only act on 3) do not burn AI cost. Same parser, same accuracy, just deferred to the moment you actually engage with the job.
Pairs with
AI resume tailor
Every saved job gets its own resume, rewritten to mirror the posting. Validator catches dropped roles. Keyword matches verified server-side. Zero fabrication.
Keyword match breakdown
Matched and missing keywords named exactly. No opaque score, no black-box percent.
Shared insights
Anonymized outcome patterns from the whole opt-in network, not just your own history.
Stop reading about it. Run it on a real job.
Create a free account in under a minute. First job tracked, first tailored resume, and first keyword breakdown all happen inside the onboarding flow.
No credit card · 2-minute setup · Cancel anytime