01 · Roasts
One-hit Wonder
190 of your 232 total stars live in a single repo (haf). The other 44 repos are basically a support group for files that haven't been touched in 2+ years — staleRepoRatio of 0.92 doesn't lie.
Sunday Programmer (Literally)
Your heatmap is a perfect artifact of weekday-only work — every Sunday column is a flat zero. Even robots take Saturdays off occasionally; you've somehow also vanished from Friday evenings entirely.
101 Commits Club
totalCommitsYear = 101. That's roughly one commit every 3.6 days — the bare minimum to keep a GitHub profile from looking abandoned. haf deserves better commit energy than this.
TypeScript Monoculture
69% TypeScript, 14% JavaScript — you've basically written the same language twice and called it diversity. Ruby at 15% is the only evidence you've ever left the Node.js ecosystem.
PR Phantom
29 PRs/year but only 1 issue opened — you're contributing code to other repos but apparently never have feedback, bug reports, or opinions. Either the code is perfect everywhere or you're just silently merging and ghosting.
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% weight61C
- Consistency20% weight55D
- Quality20% weight77B
- Depth15% weight65C
- Breadth10% weight55D
- Community10% weight40D
03 · Stats
365-day commit heatmap
181 active days
Language distribution
- TypeScript69%
- Ruby15%
- JavaScript14%
- HTML1%
- CSS0%
- Shell0%
- Other1%
04 · Numbers
Owned repos
non-fork
12
Commits
last 12 months
101
Followers
243
Joined GitHub
Dec 2015
05 · Top repos
BatuhanW /
haf
Fully typed, tested TypeScript config/storage library with 190 stars, published npm package, multi-year active maintenance, comprehensive test suite and CI across multiple OS/Node versions.
BatuhanW /
use-turkey-cities
A well-structured React hook for Turkish city/district data with TypeScript types, full test coverage, and CI/CD. Niche utility with modest reach (17 stars, 2 forks) but solid craftsmanship.
BatuhanW /
nestjs-transformer
TypeScript NestJS Kafka transformer library with structured monorepo design, comprehensive tests, and documented abstractions for event-driven pipelines. Limited adoption but focused architecture.
06 · Timeline
- Dec 26, 2015Joined GitHub
- Nov 12, 2019Created use-turkey-cities — React Hook to list Turkey city and districts
- Jan 21, 2021Created haf — A fully typed 🔒, cross-platform, persistent 💾 config ⚙️ solution for your NodeJS projects with a great developer experience!
- Feb 24, 2021Created nestjs-transformer
- Jun 16, 2024Most recent push to haf
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.