8 min read

The Data Analyst Resume: Exactly Which Keywords ATS Is Scanning For

SQL appears in 92% of data analyst job descriptions. Most rejected resumes had the skill — they just named it wrong. Here's the full keyword map by seniority level.

Here's a scenario that happens constantly: a data analyst with two years of SQL, Python, and Tableau experience applies to 40 jobs and hears back from three. Not because they're underqualified. Because their resume says "data visualization tools" and the job description says "Tableau."

ATS doesn't infer. It pattern-matches. And for data analyst roles specifically, the keyword expectations are so well-documented at this point that there's really no excuse for guessing.

This post is a map of exactly what ATS is looking for, broken down by seniority, with notes on why each tool matters and how to frame experience you actually have.

The Non-Negotiable: SQL

SQL appears in 89-92% of data analyst job descriptions, which makes it less of a "skill" and more of a baseline literacy requirement. Not having SQL on your resume is the equivalent of a writing job that lists "English" as optional.

But just writing "SQL" isn't always enough at mid and senior levels. ATS at those tiers often looks for the specific flavor: PostgreSQL, MySQL, BigQuery, Snowflake. "SQL" is the minimum. If you've used BigQuery on a project, write BigQuery. If you've written complex queries in PostgreSQL, say PostgreSQL. The parent term is a safety net, not a substitute.

One thing worth noting: if you understand SQL, write it exactly. Don't write "database querying language" or "structured data retrieval." Writing "visualization software" instead of "Tableau" can cost 10-15 ATS points. The same logic applies to every tool name in this field.

The Core Stack: Python, BI Tools, Excel

After SQL, here's what the frequency data actually looks like across job postings:

A few observations:

Power BI now edges out Tableau in raw posting frequency, but both are worth having if you have experience with both. They're not interchangeable in ATS, so list both by name.

Python is listed at the library level in most JDs. "Python" alone is fine for junior roles. "Python (pandas, NumPy)" is noticeably better for mid-level. If you've done any modeling, add scikit-learn.

Excel is genuinely still dominant for quick analysis, especially at companies that aren't data-mature. Senior analysts sometimes omit it as beneath them. Don't. It still appears in a significant share of JDs and ATS doesn't know you think you're above it.

This connects to a broader point about how keyword density actually works in ATS scoring: it's not about stuffing every possible term, it's about matching the specific tools and methods the posting names.

The Seniority Split

Keywords aren't just a yes/no question, they're a level question. ATS filters are usually calibrated per role, and a senior-level job description that finds only junior-tier keywords is going to score you lower even if the raw tool names match.

Junior (0-2 years)

Core: SQL, Excel, Python (pandas), Tableau or Power BI, Google Analytics, data cleaning, data validation, descriptive statistics, pivot tables.

Certs that move the needle: Google Data Analytics Professional Certificate, Tableau Desktop Specialist, IBM Data Analyst Professional Certificate. See how certifications factor into ATS scoring for where to place these.

Mid-level (3-6 years)

Core: SQL (with flavor: PostgreSQL or BigQuery), Python (scikit-learn), Tableau/Power BI, Git, Jupyter, A/B testing, ETL, data pipeline, regression analysis, cohort analysis, KPI tracking, Agile.

The stat that trips up a lot of mid-level candidates: domain expertise is explicitly required in 69.3% of mid and senior data analyst JDs. If you've worked in e-commerce, fintech, healthcare, or SaaS, that vertical should appear on your resume, not buried in a company description but callable in a skills or summary section.

Communication and stakeholder management also enter the keyword pool here. This sounds soft, but "stakeholder communication" and "cross-functional collaboration" are searchable terms that HR filters sometimes include explicitly.

Senior (6+ years)

Core expands to: Snowflake, BigQuery, dbt, Airflow, Spark, AWS/GCP/Azure, Looker, data governance, data architecture, machine learning, C-suite reporting, team management, data strategy.

The shift here is from execution to infrastructure and leadership. If you're writing senior-level resumes that only list execution tools, you're mismapping your level.

How Recruiters Filter After ATS

As covered in the ATS mechanics post, the filtering isn't just algorithmic. Here's how data analyst roles specifically tend to get screened:

  1. HR pre-screens on minimum credentials. A bachelor's in a quantitative field is the typical floor. Without it, you often don't surface.
  2. Hard skills get the highest ATS weight. The tool names from the JD need to appear verbatim in your resume.
  3. Job title matching matters more than people realize. "Analytics Specialist" may not match "Data Analyst" in a strict filter. If your title is non-standard, add the standard title in parentheses or in your summary.
  4. Domain knowledge is the major mid-level filter, per the 69.3% figure above.
  5. After HR, recruiters prioritize communication. Per discussions on r/dataanalysis, communication skills are the single biggest post-technical filter.
  6. The recruiter skim is 6-7 seconds. Your summary needs to convey your specialty, the scale you've worked at, and one concrete result. That's it.

The skills section order also matters here. Which skills to lead with in the ATS context is worth reading alongside this if you're restructuring from scratch.

Framing Projects and Academic Work

One of the most common gaps in junior data analyst resumes is listing project work without quantifying it. ATS can't distinguish a "analyzed customer data" bullet from a strong one, but the recruiter who reads your resume after ATS passes it can.

The formula that works: Action verb + specific tool/method + data scope + measurable outcome.

A few examples of what this looks like in practice:

  • "Analyzed 12,000 customer churn records using Python (pandas, Matplotlib) and identified 3 retention triggers that informed a pilot campaign producing 8% churn reduction."
  • "Built an interactive Tableau dashboard tracking foot traffic across 4 campus locations, enabling 15% reduction in food waste through data-driven ordering recommendations."
  • "Cleaned and merged 6 CSV datasets (50,000+ rows) using SQL and Python to create a unified engagement database for a university research office."

Two things this accomplishes: it gives ATS the exact tool names (Python, pandas, Matplotlib, Tableau, SQL), and it gives the human reader a concrete sense of scale and outcome. How to write these outcome-focused bullets is worth going through if this structure is new to you.

Label projects clearly. "Analytics Project" or "Data Analyst Intern" reads as real work. "Class Assignment" signals you're trying to pad. GitHub and Tableau Public links in your header are a signal to human reviewers that the work is real and verifiable.

The Checklist Before You Submit

Run through this before every application:

  • SQL, Python, and your BI tool appear in the first 4 sentences of your summary
  • Every tool listed in your skills section appears in at least one experience or project bullet (ATS cross-references this)
  • Tool names exactly match the JD, not paraphrases
  • Each bullet follows: Action + Tool + Data Scope + Metric
  • Job title on your resume reasonably matches the title in the JD
  • Domain expertise is visible if the JD mentions an industry
  • Target ATS score of 78+ before applying

The summary check is particularly easy to skip. If your summary says you're "experienced in data tools and analysis techniques," that's close to invisible to ATS. Whether your summary is even doing anything for you is a question worth asking before you finalize.

The Volume Problem

Here's where it usually breaks down.

If you're applying to 5 jobs a week, doing this keyword audit manually per application is totally reasonable, maybe 20-30 minutes of work total. If you're applying to 20-30 roles a week, which is what a serious search often requires, manually rewriting your summary and rephrasing your bullets to mirror each new JD becomes a multi-hour time sink.

Most people don't do it. They submit the same resume everywhere, get a 2-3% response rate, and conclude the market is just brutal. Sometimes it is. More often, it's a keyword mismatch problem that compounds across every application.

If you're applying at that volume, BulkResumes handles the matching and rephrasing step: paste in your base resume and the job descriptions, and it generates individually tailored versions with the vocabulary of each specific role baked in. The ATS logic described in this post is what's running under the hood.

Whether you do it manually or with a tool, the principle is the same: use their exact words, name your tools precisely, and never let a parser throw out experience you actually have.

Applying to multiple jobs at once?

BulkResumes tailors your resume and cover letter for each job description in seconds. Free to start, no credit card needed.

Try it free