01 · Roasts
90% Jupyter, 0% Stars
Your language breakdown is 90% Jupyter Notebook. That's not a portfolio, that's a very organized homework folder. Zero stars across 25 repos confirms the world has not yet been informed of your existence.
The Vibe-Coder Confesses
Your own README for budget-tracker-ios says it was 'vibe-coded.' Bold of you to document your own crime scene. Four commits and 350 KB later, the vibe has apparently left the building.
65% Graveyard
staleRepoRatio = 0.65. Nearly two-thirds of your repos haven't been touched in over two years. That's less a portfolio and more a digital cemetery. At least the dotfiles are still breathing.
18 Weeks of Radio Silence
Your heatmap is a flatline for the first 18 weeks of the year, then a burst of activity, then flatline again. GitHub thinks you're seasonal. Are you a bear? Are you hibernating?
36 PRs, 0 Issues, Maximum Mystery
You opened 36 pull requests this year but exactly 0 issues. You're shipping fixes to problems you refuse to acknowledge exist. Chaos engineering as a personality trait.
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% weight30F
- Consistency20% weight35F
- Quality20% weight57D
- Depth15% weight50D
- Breadth10% weight55D
- Community10% weight40D
03 · Stats
365-day commit heatmap
90 active days
Language distribution
- Jupyter Notebook90%
- Swift3%
- Java2%
- Python2%
- C++1%
- Shell1%
- Other1%
04 · Numbers
Owned repos
non-fork
20
Commits
last 12 months
121
Followers
10
Joined GitHub
Jul 2019
05 · Top repos
lovesahaj /
budget-cli
Personal budget MCP server for Claude Desktop with transaction tracking, category management, and multi-source import (PDF/images/email via LLM). Typed Python, structured src/, tests, but unshipped (0 stars, created Sep 2025, last push Jan 2026).
lovesahaj /
dotfiles
Personal dotfiles repo with Neovim, tmux, and shell configs; no stars, untyped Shell scripts, minimal README, designed for stow-based home directory management.
lovesahaj /
budget-tracker-ios
Swift iOS budget-tracking app shipped in an afternoon with SwiftUI, SwiftData, and AI receipt scanning. Typed, structured, documented—but nascent (4 commits, 350 KB, no CI/tests; HAS_README=yes but README itself states "vibe-coded").
06 · Timeline
- Jul 23, 2019Joined GitHub
- Sep 10, 2023Created dotfiles
- Sep 13, 2025Created budget-cli — A simple budgeting MCP server
- Jan 31, 2026Created budget-tracker-ios
- Apr 21, 2026Most recent push to dotfiles
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.