A cybersecurity portfolio employers can verify

A certification shows you passed an exam. A HashFolio portfolio shows the work: the hands-on drills you completed, the commands you ran and the reasoning behind your decisions, in a form a hiring manager can check for themselves.

What gets recorded

When you finish a drill, HashFolio creates a record of it: the drill and the certification it maps to, when you completed it, your score, the challenges you finished, the commands you ran and the reasoning you wrote down. AI-security drills also record the NIST NICE work roles and skills they practice.

Signed when it's created

HashFolio signs each record with a server-side key at the moment you finish. Your score comes from the server, not your browser. If anything in the record changes after signing, the signature no longer matches and the verify page shows it.

How an employer checks it

Every record has its own link, hashfolio.ai/verify/…, that you can put on a resume, in a LinkedIn post or in an email. Anyone with the link can open it without an account. The page re-checks the signature and shows the drill, the completion date, the score, the commands and the reasoning.

Take it with you

Export your completed drills as a PDF portfolio, or publish them to a GitHub repository in one of three styles: professional, technical or minimal. Each entry links back to its verify page.

See an example

What Employers Actually See

Each drill exports a verified completion record. One-click export.

>_
PORTFOLIO.md
# Security+ Log Analysis: Detecting Brute Force Attacks
✓ VerifiedSecurity+ • SY0-701 4.1 - Security Operations95%
## Drill Completion
Security+ Log Analysis: Detecting Brute Force Attacks
Security+ • SY0-701 4.1 - Security Operations✓ Verified
95%
💡 Why This Matters
Identified authentication anomalies by correlating failed login timestamps, recognizing the 3-second interval pattern typical of automated attacks vs. human typos.
Pattern recognition in logsAttack timeline reconstructionDistinguishing automated vs manual attempts
## Terminal Evidence
analyst@hashfolio ~
$ grep -i "failed" /var/log/auth.log | head -20
Dec 15 02:14:01 sshd[2847]: Failed password for admin
Dec 15 02:14:04 sshd[2847]: Failed password for admin
Dec 15 02:14:07 sshd[2847]: Failed password for root
$ awk '{print $11}' /var/log/auth.log | sort | uniq -c | sort -rn | head -10
412 192.168.1.105
203 10.0.0.88
156 172.16.5.22
76 192.168.1.42
$ grep "Invalid user" /var/log/auth.log | wc -l
847
$ cat /var/log/auth.log | grep "192.168.1.105" | tail -50
Dec 15 02:14:01 ... Failed password
Dec 15 03:47:58 ... Failed password
$ fail2ban-client status sshd
Status for the jail: sshd
|- Currently banned: 3
`- Total banned: 23
## Analysis Findings
✓Step 1: Found 847 failed login attempts in auth.log
✓Step 2: Identified 23 unique attacking IPs
✓Step 3: Calculated attack rate of 12 attempts/minute
✓Step 4: Mapped attack window: 2:14 AM - 3:47 AM
✓Step 5: Confirmed fail2ban blocking repeat offenders
## Credits Earned
📚
0.5 CEU
CompTIA
🏆
0.5 CPE
(ISC)²
31-minute hands-on drill mapped to Security+ Domain 4.1 (Security Operations)
---
**Cryptographically Signed**
Manifest ID: `demo-alex-chen`
Verify: hashfolio.ai/verify/demo-alex-chen
Scan to verify
>_
Portfolio.pdf

Security+ Log Analysis: Detecting Brute Force Attacks

VerifiedSecurity+ • SY0-701 4.1 - Security Operations95%

Why This Matters

Identified authentication anomalies by correlating failed login timestamps, recognizing the 3-second interval pattern typical of automated attacks vs. human typos.
Pattern recognition in logsAttack timeline reconstructionDistinguishing automated vs manual attempts

Terminal Evidence

analyst@hashfolio ~
$ grep -i "failed" /var/log/auth.log | head -20
Dec 15 02:14:01 sshd[2847]: Failed password for admin
Dec 15 02:14:04 sshd[2847]: Failed password for admin
Dec 15 02:14:07 sshd[2847]: Failed password for root
$ awk '{print $11}' /var/log/auth.log | sort | uniq -c | sort -rn | head -10
412 192.168.1.105
203 10.0.0.88
156 172.16.5.22
76 192.168.1.42
$ grep "Invalid user" /var/log/auth.log | wc -l
847
$ cat /var/log/auth.log | grep "192.168.1.105" | tail -50
Dec 15 02:14:01 ... Failed password
Dec 15 03:47:58 ... Failed password
$ fail2ban-client status sshd
Status for the jail: sshd
|- Currently banned: 3
`- Total banned: 23

Analysis Findings

✓Step 1: Found 847 failed login attempts in auth.log
✓Step 2: Identified 23 unique attacking IPs
✓Step 3: Calculated attack rate of 12 attempts/minute
✓Step 4: Mapped attack window: 2:14 AM - 3:47 AM
✓Step 5: Confirmed fail2ban blocking repeat offenders

Credits Earned

📚
0.5 CEU
CompTIA
🏆
0.5 CPE
(ISC)²
31-minute hands-on drill mapped to Security+ Domain 4.1 (Security Operations)
Cryptographically Signed
ID: demo-alex-chen
Verify at hashfolio.ai
Scan to verify

Your portfolio could look like this. First drill takes ~15 min.

Try a Drill
Start with 5 free drills