01 · Roasts
Ghost Town Heatmap
7 commits in the last year, with activity in exactly 2 weeks out of 52. Your contribution graph looks like a starfield — mostly void, two lonely photons.
The 3-Day Sprint Merchant
edunow: 3 days. mrt-bot: 3 days. A pattern is emerging, and it's not 'consistent engineer' — it's 'hackathon tourist who forgets to come back'.
Zero Forks, Zero PRs, Zero CI
Across every single repo: 0 forks, 0 external PRs this year, no CI pipeline in sight. The only person running your code is you, and even that's debatable given 7 yearly commits.
list_all_stations Returns Empty String
mrt-bot has a function called list_all_stations() that literally returns an empty string. That one unfinished placeholder is a perfect metaphor for this GitHub profile.
51% Jupyter, 0% Ship
Half your codebase is Jupyter Notebooks — which is great for coursework, less great for demonstrating you can build and maintain production software. The notebooks have more markdown than code.
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% weight25F
- Consistency20% weight55D
- Quality20% weight40D
- Depth15% weight50D
- Breadth10% weight55D
- Community10% weight25F
03 · Stats
365-day commit heatmap
2 active days
Language distribution
- Jupyter Notebook51%
- JavaScript43%
- HTML3%
- CSS2%
- TeX1%
- Python1%
04 · Numbers
Owned repos
non-fork
18
Commits
last 12 months
7
Followers
10
Joined GitHub
Aug 2022
05 · Top repos
ruishanteo /
edunow
Early-stage React quiz app with Firebase backend. Functional authentication, quiz mechanics, and leaderboard, but minimal commits, no tests/CI, untyped JS, and experimental scope typical of a learning project.
ruishanteo /
cheatsheets
Personal study notes compilation with MkDocs-based static site generator. Covers CS coursework (CS2103T, CS2106, CS3213, CS2040S, DSA) and psychology with minimal production value or external adoption signals.
ruishanteo /
mrt-bot
Single-week experimental Telegram bot for Singapore MRT train arrivals using Selenium scraping. No tests, CI, documentation, license, or type hints. Core functionality implemented but thin, unfinished feel with placeholder logic and minimal commit activity.
06 · Timeline
- Aug 17, 2022Joined GitHub
- Mar 30, 2023Created cheatsheets — Compilation of cheatsheets I made
- May 28, 2023Created edunow — Repository for lifehack23
- Mar 17, 2024Created mrt-bot
- Dec 6, 2024Most recent push to cheatsheets
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.