01 · Roasts
97% Jupyter, 3% Regret
Your language breakdown is 97% Jupyter Notebook. That's not a portfolio — that's a semester's worth of homework cells with a git init in front of it.
Zero PRs, Zero Issues, Zero Forks
totalPRsYear: 0. totalIssuesYear: 0. totalForks: 0. You have been on GitHub since 2021 and have left no fingerprints on anyone else's code. A ghost contributes more.
Burst-and-Disappear Architect
Your heatmap is 30+ consecutive weeks of silence bookended by 4-day sprints. The cuesports bot, the AoC run, the CS3264 deadline — all bursts. GitHub as a submission portal, not a craft.
The Solo 100%
soloPct = 100. Every single commit in every single repo is just you, alone, talking to yourself. Collaboration is a skill too, Zheng Jie.
CI in One Repo, Courage in Zero
Only nus-cuesports-bot has CI — and even that has no tests. You found the .yml file once and never touched it again. That's not DevOps, that's a participation trophy.
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% weight55D
- Quality20% weight42D
- Depth15% weight50D
- Breadth10% weight25F
- Community10% weight25F
03 · Stats
365-day commit heatmap
50 active days
Language distribution
- Jupyter Notebook97%
- Python3%
- HTML0%
- Ruby0%
- Java0%
- TypeScript0%
04 · Numbers
Owned repos
non-fork
21
Commits
last 12 months
235
Followers
5
Joined GitHub
Sep 2021
05 · Top repos
KrashKart /
nus-cuesports-bot
Python Telegram bot for NUS Cuesports managing training polls, session scheduling, and payment confirmations. Typed language + documented architecture + GCS integration, but minimal external adoption and no test suite.
KrashKart /
aoc-2025
Advent of Code 2025 submission with solutions for 12 days. Untyped Python with utility helpers, structured input handling, and some algorithmic work (graph traversal, geometry), but minimal documentation and no tests/CI.
KrashKart /
cs3264-project
CS3264 course project on diabetes prediction using ensemble ML models; 3-day burst (2 commits/day), thin documentation, no tests/CI, working code but inconsistent structure and limited generalization.
06 · Timeline
- Sep 21, 2021Joined GitHub
- Jul 6, 2025Created nus-cuesports-bot — Repo for the operational NUS Cuesports Telegram Bot.
- Dec 8, 2025Created aoc-2025 — Repo for AOC 2025
- Apr 17, 2026Created cs3264-project — Project Repo for CS3264: Foundations of Machine Learning
- Apr 19, 2026Most recent push to cs3264-project
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.