01 · Roasts
Burst-and-Ghost Developer
All 3 scored repos were created and last pushed within a single day each. That's not iteration — that's a hackathon habit dressed up as a portfolio. 78% of your repos are stale.
Pytest? Never Heard of Her
Zero test files across tren-test-split, amea, and rebuttal. You've integrated 7+ ML frameworks into amea (torch, xgboost, optuna, transformers…) but couldn't spare 10 lines for a sanity check.
79% Jupyter, 0% Reproducible
Nearly 4 in 5 bytes you've ever committed is a Jupyter Notebook. No CI, no containerization, no LICENSE on rebuttal. Your 'code' is really a very elaborate scratch pad.
27 Public Commits This Year
27 public commits in the last year from someone doing a Data Science MSc at ETH Zürich. Either you're writing your thesis in Word, or GitHub has never seen your best work.
Solo 100%, Community 0%
soloPct = 100. Zero PRs, zero issues opened this year. 59 followers but you've never touched another person's repo. GitHub is apparently a private diary with a public URL.
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% weight36F
- Consistency20% weight55D
- Quality20% weight47D
- Depth15% weight45D
- Breadth10% weight55D
- Community10% weight40D
03 · Stats
365-day commit heatmap
74 active days
Language distribution
- Jupyter Notebook79%
- Python16%
- C++3%
- C2%
- TeX1%
- Jinja0%
04 · Numbers
Owned repos
non-fork
18
Commits
last 12 months
27
Followers
59
Joined GitHub
Apr 2019
05 · Top repos
AndrewSpano /
amea
Jupyter-heavy experimental datathon submission repo with multiple strategy variants (vol-normalized reversion, DNN/GRU/ensemble models, LightGBM). ~56 MB, 0 stars, typed Python + PyTorch + sklearn stack; well-documented via CLAUDE.md design notes. Short lifecycle (1 day).
AndrewSpano /
rebuttal
Research codebase for neural network model fusion via retrofitting. Implements multiple fusion algorithms (HF, KF, OT) with disk-based k-means and gradient-based training. One recent commit, experimental quality, minimal documentation beyond README setup instructions.
AndrewSpano /
tren-test-split
Experimental datathon submission combining FinBERT sentiment analysis with a ResidualMLP for financial prediction. Single large script, sparse documentation, no tests or CI. Created and last pushed same day (2026-04-19).
06 · Timeline
- Apr 19, 2019Joined GitHub
- Apr 3, 2026Created rebuttal
- Apr 18, 2026Created amea
- Apr 19, 2026Created tren-test-split
- Apr 19, 2026Most recent push to tren-test-split
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.