QA Career
Freelance QA Tester Portfolio Guide for Beginners (2026)
Use this freelance QA tester portfolio guide to build credible samples, case studies, automation evidence, and client-ready pitches from scratch today.
22 min read | 3,415 words
TL;DR
Create three compact case studies that show how you investigate risk, document defects, and verify fixes. Include reproducible evidence, a clear service menu, and a short call to action, then send prospects only the case study most relevant to their product.
Key Takeaways
- Build three focused case studies instead of collecting unrelated certificates and screenshots.
- Show the client's problem, your test strategy, evidence, and business impact in every project.
- Publish sanitized test artifacts such as charters, bug reports, traceability tables, and automation reports.
- Use a small runnable Playwright project to prove that your automation evidence can be reproduced.
- Separate public portfolio evidence from confidential client data through strict redaction and permission rules.
- Match each proposal to one portfolio artifact that reduces the buyer's specific risk.
- Review links, claims, and test execution monthly so your portfolio remains trustworthy.
A strong freelance qa tester portfolio guide should help you prove one thing: you can reduce product risk without needing constant supervision. As a beginner, you do not need paid-client logos or a huge automation framework. You need a few honest case studies that let a buyer inspect how you think, what you tested, what you found, and how clearly you communicated the result.
Your portfolio is not a gallery of course certificates. It is a compact evidence system. This guide shows you how to create that system with public practice applications, sanitized artifacts, runnable tests, and client-focused writing. For a wider career view, read the complete QA portfolio and job-search guide, then use the steps below to build the freelance version.
TL;DR
Build three case studies: one exploratory web review, one API or data-validation project, and one small automation suite. For each one, publish the scope, assumptions, environment, risks, test approach, selected evidence, defects, retest result, and what you would test next.
| Portfolio element | What a client learns | Minimum credible evidence |
|---|---|---|
| Service statement | Whether you solve their type of problem | Audience, deliverable, turnaround model |
| Manual case study | How you investigate unfamiliar software | Charter, notes, three detailed defects |
| API case study | Whether you can reason below the UI | Requests, assertions, negative tests |
| Automation project | Whether your work is maintainable and reproducible | Repository, setup instructions, CI or HTML report |
| Communication sample | Whether you can support a remote team | Executive summary and prioritized findings |
| Contact path | What the prospect should do next | One specific call to action |
Do not wait until every artifact is perfect. Publish a narrow first version, verify every public link, and improve it after real prospect conversations.
1. Define the Buyer and Promise in Your Freelance QA Tester Portfolio Guide
Start with one buyer, not every possible QA client. A bootstrapped SaaS founder preparing a release has different concerns from an agency that needs overflow regression testing. The founder may value a two-day risk review and concise launch recommendation. The agency may care more about repeatable test cases, browser coverage, and predictable weekly capacity.
Write a positioning line with four parts: audience, product context, service, and deliverable. For example: "I help small SaaS teams find release-blocking web and API defects before launch, then deliver a prioritized report with reproduction evidence and retest status." This is credible because it names work you can demonstrate. Avoid "I guarantee bug-free software" because no tester controls every risk, environment, or future change.
Turn the promise into a small service menu. Use ranges as scope boundaries, not universal market prices:
| Service | Example scope | Deliverable | Boundary to state |
|---|---|---|---|
| Exploratory review | One critical workflow on desktop web | Charter, findings, evidence, risk summary | Browsers, accounts, and time box |
| Regression pass | Agreed checklist for one build | Pass/fail record and defect log | Build number and included areas |
| API check | One resource with positive and negative paths | Collection or tests plus results | Auth and test-data access |
| Automation starter | Three to eight stable critical-path tests | Repository, README, report | Supported environment and ownership |
| Accessibility snapshot | Selected pages against agreed checks | Issues with impact and evidence | Not a certification or full conformance audit |
The boundaries matter as much as the deliverables. They prevent a prospect from assuming that "test checkout" includes every device, payment provider, locale, tax rule, and failure recovery path.
2. Choose Three Portfolio Projects With Complementary Evidence
Choose projects that reveal different skills instead of repeating login tests in three tools. A balanced beginner portfolio can contain:
- An exploratory case study for a public demo application. Focus on a workflow such as cart editing, account recovery, or form validation.
- An API case study against a documented public test API or a local sample application. Cover status codes, schema, invalid input, authorization assumptions, and state changes.
- A browser automation repository for a stable public demo or your own local fixture. Cover setup, one happy path, one meaningful negative path, traces, and a report.
Score candidates before investing time:
| Question | Good signal | Weak signal |
|---|---|---|
| Can anyone legally access it? | Public demo, open-source app, or your own app | Production site with unclear permission |
| Can you explain a user risk? | Lost data, blocked task, misleading status | Testing only because a course used it |
| Can a reviewer reproduce evidence? | Exact setup, data, and steps | Cropped screenshot without context |
| Does it add a new skill? | API reasoning after a UI case study | Another nearly identical UI script |
| Can you finish it in a week? | One workflow with defined limits | Full marketplace test strategy |
Never imply that an unpaid practice review was commissioned by the product owner. Label it "independent portfolio exercise using a public test environment." Do not run intrusive security scans, load tests, account abuse, or destructive tests against a third-party service without explicit authorization. A portfolio should demonstrate judgment, including knowing when not to test.
For a ready structure, compare the artifacts in the QA portfolio proof kit and the repository conventions in the QA portfolio repository starter pack.
3. Write Each Case Study Like a Client Deliverable
A case study should answer the questions a client would ask during handoff. Keep it scannable, but include enough detail for another tester to understand your decisions. Use this structure:
Context and scope
Name the product type, workflow, test level, environment, time box, and exclusions. Example: "Independent two-hour exploratory review of a demo ecommerce cart in Chromium at 1440 x 900. Scope covered adding, updating, and removing products. Checkout, mobile layout, performance, and security were excluded."
Risk model and approach
Explain why you selected particular tests. For a cart, risks might include incorrect totals, stale quantities, lost state, duplicate actions, and unclear error recovery. State the techniques used, such as state transitions, boundary analysis, interruption testing, and exploratory tours. Link the technique to the risk instead of listing jargon.
Findings and evidence
Show a small prioritized set. Every bug should include a concise title, environment, preconditions, steps, actual result, expected result, evidence, severity rationale, and retest status. A credible example reads:
Title: Cart subtotal does not update after quantity changes from 1 to 2
Environment: Demo build 2026-08-01, Chromium desktop, clean session
Steps: Add the standard backpack, open the cart, change quantity from 1 to 2, move focus outside the field.
Actual: Quantity shows 2 while subtotal remains the single-item amount.
Expected: Subtotal reflects quantity multiplied by unit price, or the interface explains when recalculation occurs.
Severity rationale: High for purchase confidence because the displayed payable amount is inconsistent, but final impact requires checkout verification.
Finish with coverage limits and next actions. That final section proves that you understand residual risk. A useful test report is honest about what remains unknown.
4. Build a Manual Testing Portfolio With Concrete Artifacts
Manual testing evidence is not a spreadsheet containing 200 obvious steps. Show selection, observation, and communication. One strong case study can contain a one-page test charter, session notes, a coverage map, three to five defects, and a summary.
Use a charter such as: "Explore cart quantity and removal behavior with valid, boundary, interrupted, and repeated actions to discover risks to price accuracy and purchase continuity." Then record useful notes with timestamps or short labels:
DATA: Product A has a unit price and initial quantity of one.TEST: Change quantity using typing, paste, zero, negative, decimal, blank, and a large value.OBSERVE: The field accepts blank input until focus changes.QUESTION: Is recalculation expected on input, blur, or an explicit update action?BUG: Subtotal remains stale after a valid quantity change.NEXT: Repeat after refresh and in another browser before raising severity.
Add a traceability slice that connects risks to evidence:
| Risk | Test idea | Result | Evidence | Follow-up |
|---|---|---|---|---|
| Incorrect total | Change quantity from 1 to 2 | Failed | Defect CART-01, video | Verify server total |
| Lost cart state | Refresh after adding item | Passed | Session note 14:20 | Test expired session |
| Invalid quantity | Enter 0 and decimal | Mixed | Defect CART-02 | Clarify business rule |
| Duplicate action | Double-click remove | Passed | Network log | Repeat under latency |
Your screenshots should show the relevant region, URL or environment where safe, and visible state. Add captions so evidence remains understandable outside your machine. For stronger defect writing, use the bug report guide that gets issues fixed.
Include a short client summary: "The cart's basic add and remove paths worked in the tested environment. Quantity editing produced two inconsistencies that could reduce price confidence. I recommend confirming the quantity rules, fixing subtotal synchronization, and retesting checkout totals before release." This demonstrates decision support, not just defect collection.
5. Add a Runnable Automation Project and Verify Every Step
A small reliable suite is more persuasive than a large repository that cannot run. The following Playwright project uses current public APIs and tests a local HTML fixture, so a reviewer does not depend on an external demo site. Use Node.js 20 or newer and npm.
Step 1: Initialize the project
mkdir qa-portfolio-checkout
cd qa-portfolio-checkout
npm init -y
npm install -D @playwright/test
npx playwright install chromium
Verify installation before writing tests:
npx playwright --version
Expected output contains Version followed by the installed Playwright version. Commit package.json and package-lock.json so reviewers install the same dependency graph.
Step 2: Add a deterministic fixture
Create public/cart.html:
<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><title>Portfolio Cart</title></head>
<body>
<main>
<h1>Cart</h1>
<label>Quantity <input id="quantity" type="number" min="1" value="1"></label>
<p>Unit price: $25.00</p>
<p>Total: <output id="total">$25.00</output></p>
</main>
<script>
const quantity = document.querySelector('#quantity');
const total = document.querySelector('#total');
quantity.addEventListener('input', () => {
const count = Number(quantity.value);
total.textContent = Number.isInteger(count) && count >= 1
? `${(count * 25).toFixed(2)}`
: 'Invalid quantity';
});
</script>
</body>
</html>
Verify the fixture is served:
npx http-server public -p 4173
In a second terminal, run curl -I http://127.0.0.1:4173/cart.html. Expect HTTP/1.1 200 OK. Install http-server with npm install -D http-server if npx asks whether it may download a package, then use npx http-server again.
Step 3: Configure Playwright
Create playwright.config.ts:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
reporter: [['list'], ['html', { open: 'never' }]],
use: {
baseURL: 'http://127.0.0.1:4173',
trace: 'retain-on-failure',
screenshot: 'only-on-failure'
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }
],
webServer: {
command: 'npx http-server public -p 4173',
url: 'http://127.0.0.1:4173/cart.html',
reuseExistingServer: !process.env.CI
}
});
Verify Playwright can read the configuration:
npx playwright test --list
At this stage, Total: 0 tests in 0 files is acceptable. A configuration error is not.
Step 4: Write risk-based tests
Create tests/cart.spec.ts:
import { test, expect } from '@playwright/test';
test.beforeEach(async ({ page }) => {
await page.goto('/cart.html');
});
test('recalculates total for a valid quantity', async ({ page }) => {
await page.getByLabel('Quantity').fill('3');
await expect(page.getByText('Total:')).toContainText('$75.00');
});
test('shows a clear result for a zero quantity', async ({ page }) => {
await page.getByLabel('Quantity').fill('0');
await expect(page.getByText('Total:')).toContainText('Invalid quantity');
});
Verify execution:
npx playwright test
Expect two passing tests and an HTML report in playwright-report/. Open it locally with npx playwright show-report. In your README, explain that the first test protects price calculation and the second checks boundary handling. That reasoning matters more than the test count.
Step 5: Make the repository reviewer-friendly
Add scripts to package.json under scripts:
{
"test": "playwright test",
"test:headed": "playwright test --headed",
"report": "playwright show-report"
}
Verify the documented entry point:
npm test
Your README should state prerequisites, install command, test command, scope, test risks, project structure, expected result, and known gaps. Mention that this fixture demonstrates approach rather than production complexity. The guide to publishing test evidence as CI artifacts can help when you later add continuous integration.
6. Present Your QA Portfolio on GitHub and a Simple Landing Page
Use GitHub for inspectable project files and a landing page for the buyer's fast scan. Do not force a nontechnical client to browse folders to understand your offer. Your landing page can be a static HTML page, a hosted profile, or a portfolio section on your existing site. The QA portfolio static HTML page tutorial provides a focused publishing route.
Organize the public repository consistently:
qa-portfolio/
README.md
case-studies/
ecommerce-cart-review/
README.md
charter.md
coverage.md
defects/
api-resource-testing/
README.md
requests/
results/
automation/
playwright-cart/
assets/
sanitized-evidence/
Every folder needs an index README. A recruiter or client should never encounter unexplained files named final2.xlsx, Screenshot 19.png, or test-new.js. Use stable names such as CART-01-stale-subtotal.png and describe what each artifact proves.
Use this landing-page sequence:
- Positioning statement and service focus.
- Three case-study cards, each with one risk and one outcome.
- Tools and techniques supported by evidence.
- Work process from scope to retest.
- Availability model and contact action.
Do not display proficiency bars such as "Playwright 90%." Percentages have no shared standard. Replace them with observable claims: "Built and documented a two-test Playwright suite with local web-server startup, boundary coverage, traces on failure, and an HTML report."
Check the mobile layout, keyboard navigation, spelling, repository permissions, and every outbound link before sharing. A broken demo weakens the trust your testing portfolio is supposed to create.
7. Protect Confidentiality and Make Every Claim Verifiable
Freelance trust depends on discretion. Never publish a client's source code, credentials, internal URLs, customer information, unreleased screens, ticket text, analytics, or security findings unless written permission explicitly covers that material and publication context. A generic portfolio clause in your own proposal is not a substitute for client approval.
When permission is absent, build a synthetic reconstruction. Replace names, domains, IDs, dates, and business data. Recreate the defect in a local fixture or describe the testing technique without exposing the original system. State that the artifact is sanitized or simulated. Do not change a real result in a way that creates a false claim.
Use this publication checklist for every artifact:
- Confirm who owns the work and whether public display is allowed.
- Remove tokens, cookies, authorization headers, email addresses, account IDs, and metadata.
- Inspect screenshots, videos, trace files, network logs, terminal history, and Git history.
- Replace production data with clearly labeled synthetic values.
- Remove client and product names unless approval is specific and current.
- Describe your own contribution if multiple people produced the result.
- Keep private evidence in access-controlled storage, not an unlisted public link.
- Ask a second person to review the sanitized package when the stakes are high.
Avoid invented outcomes such as "increased conversion by 30%" unless you measured the result and can disclose the method. You can honestly state direct outputs: "identified two high-priority workflow defects, documented 18 test ideas, and confirmed one fix in the supplied build." For indirect impact, use careful language such as "reduced uncertainty around cart total behavior before release."
8. Turn Artifacts Into Freelance Proposals and Discovery Calls
A portfolio converts when you connect evidence to a prospect's risk. Do not paste all your links into every proposal. Read the project description, identify the central uncertainty, and select one relevant case study.
Use this proposal pattern:
You need a focused regression review of the signup and billing path before release. I would first confirm supported browsers, test accounts, payment sandbox access, and release criteria. Then I would cover the critical happy path, validation boundaries, interrupted payment states, and account recovery, recording reproducible defects and retest status. My cart case study shows the same risk-based format: [link]. For your stated scope, I would deliver a prioritized finding summary, detailed evidence, and a coverage note that identifies remaining risk.
That sample does not promise an unknown schedule or claim expertise you lack. It demonstrates comprehension and proposes a next step. During discovery, ask:
- Which user journey creates the greatest release concern?
- What build and environment should be treated as the test baseline?
- Which browsers, devices, roles, integrations, and locales are in scope?
- Are requirements and expected results documented or should assumptions be logged?
- What test accounts and synthetic data are available?
- How are severity, acceptance, and retesting decisions made?
- What may be captured in screenshots, videos, logs, and portfolio evidence?
- Who receives urgent findings, and through which channel?
After the call, send a scope recap with inclusions, exclusions, access dependencies, deliverables, communication cadence, and acceptance conditions. Your portfolio proves capability; this recap proves that you can control an engagement.
9. Add Resume and Profile Proof Without Copying the Portfolio
Your resume should summarize results and direct readers to evidence. Your portfolio should carry the details. Avoid repeating entire case studies in both places. Use bullets that identify action, scope, technique, and observable output.
Weak bullet: "Responsible for manual and automation testing."
Stronger beginner bullet: "Designed a risk-based cart test charter covering quantity boundaries, state persistence, and duplicate actions; documented four prioritized findings with reproducible evidence and retest notes."
Stronger automation bullet: "Built a reproducible Playwright TypeScript sample with local fixture startup, semantic locators, positive and boundary assertions, retained failure traces, and HTML reporting."
Stronger API bullet: "Tested create, read, update, and invalid-input behavior for a documented practice API; mapped response checks to status, schema, field rules, and state consistency."
Label portfolio work accurately with phrases such as "Independent QA portfolio project" or "Practice case study." Do not present it as employment. On LinkedIn, feature one portfolio landing page and one strongest repository rather than a long undifferentiated link list. The QA engineer LinkedIn profile examples can help you align the headline, About section, and featured evidence.
Before applying, compare your resume against the actual project language without stuffing terms. You can upload a draft to the QAJobFit resume workspace, then revise claims so each important skill has a truthful proof link. For live screening preparation, rehearse explaining one case study in the QA practice area: problem, risk, approach, evidence, trade-off, and next step.
10. Use This Freelance QA Tester Portfolio Guide for a 30-Day Action Plan
Treat the portfolio as a deliverable with a deadline. A practical 30-day plan gives you enough structure to finish without turning the work into an endless website redesign.
Days 1 to 5: Position and scope
Choose one buyer, write your service statement, select three complementary projects, and define what you will not test. Create the repository structure and a simple kanban list. Your exit condition is a written brief for each case study, not completed testing.
Days 6 to 12: Produce the manual case study
Run the exploratory session, capture clean notes, reproduce potential defects, and write the client summary. Review every severity rationale. Your exit condition is one sanitized case study that a stranger can follow without a call.
Days 13 to 19: Produce API and automation evidence
Complete the API project, then build the small Playwright suite from this guide or an equivalent project. Run it from a fresh clone or a clean directory. Your exit condition is repeatable setup and honest documentation of known gaps.
Days 20 to 24: Publish the landing page
Write case-study cards, add the service menu, include a direct contact action, and test the page on mobile and desktop. Ask two reviewers to describe what you offer after a 30-second scan. Rewrite any section they misunderstand.
Days 25 to 30: Start targeted outreach
Select a small set of relevant opportunities. For each one, identify the risk, link one matching artifact, and write a scoped response. Track replies and objections. If prospects repeatedly ask for mobile evidence, API authentication, or CI knowledge, use that signal to choose your next portfolio improvement.
Review the portfolio monthly. Run automation, inspect dependency alerts, test links, check contact delivery, refresh screenshots when interfaces change, and archive weak projects. A small maintained portfolio signals more care than ten abandoned repositories.
Common Mistakes
- Showing tools without decisions: A Postman screenshot or Playwright badge does not show why you selected a test. Add the risk, assertion, and result.
- Publishing generic test cases: "Verify login works" provides little evidence. Cover concrete states such as locked accounts, expired links, repeated submissions, and interrupted sessions.
- Claiming complete coverage: State environments, exclusions, time boxes, and untested risks. Honest limits increase credibility.
- Using confidential material: Sanitize or reconstruct artifacts and obtain explicit permission before naming a client.
- Building an oversized framework: A reviewer values reliable setup and readable tests more than unused abstraction layers.
- Leaving broken repositories: Run the documented clean-install path and test public links every month.
- Hiding all failures: A thoughtful defect, investigation note, or revised assumption shows more judgment than an artificial all-green report.
- Sending every sample: Match one case study to the prospect's immediate concern and keep additional proof available.
- Inventing business impact: Report measured outputs and label directional impact as a reasoned expectation, not a fact.
- Skipping the call to action: End with a specific invitation, such as "Send the workflow, target build, and supported browsers for a scoped review."
Interview Questions and Answers
The detailed model answers are included in the structured interview section below. Practice answering them aloud with your own project evidence. A credible answer names a real decision, acknowledges a constraint, and points to an artifact rather than reciting a tool list.
Conclusion
This freelance QA tester portfolio guide gives you a finishable path: choose a narrow buyer, build three complementary case studies, publish reproducible evidence, protect confidential information, and connect one relevant artifact to each proposal. You do not need to look experienced. You need to make your current ability easy to inspect and your claims easy to trust.
Start today by writing the scope and exit condition for one two-hour exploratory review. Publish the sanitized case study within a week, ask someone unfamiliar with the project to reproduce your reasoning, and use their questions to improve the next version.
Interview Questions and Answers
Walk me through one QA portfolio case study.
I completed a time-boxed review of a demo ecommerce cart, focusing on price accuracy and state continuity. I mapped risks to quantity boundaries, refresh behavior, repeated actions, and removal states, then recorded reproducible findings with severity rationale. My handoff included a coverage table, three defects, retest status, and remaining risks such as checkout integration that were outside scope.
How did you decide what not to test in your portfolio project?
I started with the workflow objective, available time, environment, and highest user-impact risks. I excluded areas such as performance, security, mobile devices, and third-party payment behavior when I lacked authorization or suitable access. I documented those exclusions so a reviewer would not confuse a narrow result with complete product coverage.
How do you assign severity when you do not know the client's business rules?
I separate observed technical impact from assumptions about business impact. I describe affected users, reproducibility, data or workflow consequences, and available workarounds, then mark uncertain rules as questions. I propose an initial severity with rationale and ask the product owner to calibrate it against business context.
Why is your automation portfolio intentionally small?
I optimized for reproducibility and reviewability rather than test count. The project starts its own deterministic fixture, covers a core calculation and a boundary condition, and produces failure evidence and an HTML report. I would add abstraction only after repeated patterns justify it, because premature framework layers can hide test intent.
How do you protect confidential client information in a portfolio?
I treat client work as private unless explicit written permission covers public use. Before publication I inspect screenshots, logs, traces, repository history, identifiers, and test data, then replace sensitive material with synthetic examples. If sanitization could still reveal the client or issue, I describe the general technique without publishing the artifact.
What would you improve next in your current QA portfolio?
I would base the next addition on buyer feedback and evidence gaps. If prospects need stronger API assurance, I would add authentication, state-transition, and contract checks with reproducible requests. I would retire or rewrite an older project rather than accumulating overlapping samples.
How do you verify that another person can run your tests?
I document runtime prerequisites, commit the lockfile, and test the clean install and standard command in a fresh directory or continuous integration environment. I state expected output and known platform limits in the README. A passing run from the documented entry point is part of my definition of done.
How would you report results from a short freelance testing engagement?
I would send an executive summary first: tested build, scope, critical findings, release concerns, and immediate recommendations. The detailed package would contain coverage, reproducible defects, evidence, retest status, assumptions, and exclusions. Urgent blockers would be communicated through the agreed channel immediately instead of waiting for the final report.
How do you respond when a client asks you to guarantee bug-free software?
I explain that testing provides evidence and reduces uncertainty but cannot prove the absence of every defect. I offer measurable commitments such as agreed risk coverage, environments, time boxes, reporting quality, and retesting. I also document residual risks so the client can make an informed release decision.
Frequently Asked Questions
What should a beginner include in a freelance QA tester portfolio?
Include a clear service statement, two or three focused case studies, sanitized test artifacts, a runnable automation sample, and a direct contact action. Each case study should explain scope, risk, approach, findings, evidence, limitations, and recommended next steps.
Can I build a QA portfolio without client experience?
Yes. Use public demo applications, open-source projects, or local fixtures and label the work as an independent portfolio exercise. Never imply that a practice project was paid client work or endorsed by the product owner.
How many projects should a freelance software tester portfolio have?
Three strong, complementary projects are enough for a useful first version. One manual exploratory study, one API or data project, and one small automation suite show more range than many repetitive login examples.
Should a manual QA tester use GitHub for a portfolio?
GitHub is useful for versioned charters, coverage maps, sanitized defects, and README files even when you write no automation. Pair it with a simple landing page so nontechnical clients can understand the value without navigating repository folders.
May I show bugs found in a client's product?
Only when your agreement and explicit written permission allow public disclosure of the specific material. Otherwise remove identifying data or recreate the testing technique with a synthetic local example, and clearly label the reconstruction.
What automation project is best for a beginner QA portfolio?
Choose one stable critical workflow and automate a happy path plus a meaningful negative or boundary path. Make setup reproducible, use readable locators and assertions, retain failure evidence, and document risks and known gaps.
How do I share my QA portfolio in a freelance proposal?
Identify the buyer's central product risk and link the single case study that best matches it. Briefly explain how your approach would transfer to their scope, then propose a discovery step rather than sending an undifferentiated list of samples.
How often should I update my QA portfolio?
Check links, contact delivery, repositories, and runnable tests at least monthly. Add or replace a case study when prospect feedback reveals an important skill gap, not simply because you learned another tool command.