01 · Roasts
9 commits in a year
Your entire yearly output — 9 commits — could fit in a single afternoon. The GitHub heatmap looks less like a contribution graph and more like a connect-the-dots puzzle missing most of the dots.
74% abandoned repos
Three out of four repos you've ever created are gathering digital dust. That's not a portfolio, that's an archaeological dig site.
close-page.js: the magnum opus
You pushed a 6-line file that calls window.close() and called it a repo. At least it's honest — much like the project, this GitHub profile is trying to close itself.
100% solo, 0% community
1 PR opened all year, 0 issues, and every single repo is solo work. The 'community' tab on your profile is basically a loading spinner that never resolves.
Polyglot potential, monolith output
Java, Elixir, Swift, TypeScript, Rust — you've touched more languages than most devs but have 72 total stars to show across 56 repos. That's 1.3 stars per repo. Collect them all!
Built using
Zoral
Shadows one worker for a week, then takes over their job with zero extra setup. Behaves exactly like the original.
zoral.ai
02 · Category breakdown
- Impact25% weight28F
- Consistency20% weight20F
- Quality20% weight57D
- Depth15% weight50D
- Breadth10% weight65C
- Community10% weight25F
03 · Stats
365-day commit heatmap
9 active days
Language distribution
- Java29%
- HTML24%
- Elixir11%
- Swift8%
- TypeScript8%
- JavaScript4%
- Other16%
04 · Numbers
Owned repos
non-fork
50
Commits
last 12 months
9
Followers
11
Joined GitHub
Sep 2019
05 · Top repos
tarikjaber /
Code-to-PDF
Simple client-side code-to-PDF converter with syntax highlighting. 22 stars, working site, decent CSS/HTML/JS structure, but untyped, no tests/CI, minimal documentation beyond README, and limited architectural scope.
tarikjaber /
counter
Minimal Rust TUI counter app based on Ratatui template; zero adoption but typed, documented, with CI. Simple experiment with core functionality (increment/decrement/reset) and proper tooling.
tarikjaber /
close-page
Single-file HTML scaffold that attempts to close the browser tab. Zero stars, no documentation, no tests, no real architectural value or sustained work.
06 · Timeline
- Sep 25, 2019Joined GitHub
- Feb 13, 2023Created Code-to-PDF — Converts source code into a PDF
- Jan 10, 2025Created counter
- Apr 24, 2026Created close-page
- Apr 24, 2026Most recent push to close-page
07 · Compare
08 · Rubric
How this score was produced
Overall = Σ (category × weight) + gentle top-end curve
Tier thresholds
▸ How the pipeline works
- 01Scrape.Pull every non-fork repo pushed in the last 90 days, plus your contribution calendar, followers, and language byte counts — straight from GitHub's REST & GraphQL APIs.
- 02Triage.A small model reads every repo's file tree + README and picks the 20 files per repo that actually reveal how you code.
- 03Grade each repo. All repos run in parallel through a fast scoring model that reads the picked files and rates each one independently on Impact, Quality, and Depth — with evidence citations.
- 04Aggregate. A larger reasoning model combines the per-repo scores with server-computed stats (heatmap, commit cadence, language entropy, follower count) to produce the 6-dimension profile score + roasts.
- 05Correct.Deterministic server-side checks enforce anchor-scale floors (e.g. a profile with 2,000+ public commits can't score 30 Consistency) and recompute the final verdict.
~90 seconds per profile, ~$0.25 in compute. Total of ~240 files read across your top-12 repos. One rating per GitHub account per day.
▸ Data sources & caveats
- Heatmap & commit totals: GitHub GraphQL
contributionsCollection— covers the last 365 days, includes private repos when the user has opted in (default). - Language %: byte totals across the top 30 owned non-fork repos.
- Curve: a small upward nudge centered on raw score ≈ 70, capping at 100. Prevents specialists from being unfairly penalised for narrow breadth.
- Anchor corrections: when server-measured signals (e.g. privateWorkLikely, multiRepoVolume, follower count) mandate a minimum category score, the aggregation step enforces it. These are signal-conditional, not identity-based floors.