Analyzes your GitHub Profile and presents you with a report on how likely you are to become the next MLH Fellow!

Overview

Fellowship Prediction

GitHub Profile Comparative Analysis Tool Built with BentoML

Fellowship Prediction Header Logo

Table of Contents:

Winner

This project won the MLH Fellowship Orientation Hackathon - Batch 4 along with other great projects by MLH Fellows. We highly suggest you check them out.

Features

Analyzes your GitHub Profile and presents you with a report on how likely you are to become the next MLH Fellow!

Try it now!

Demo Git

Provides you with an extensive analysis on the following features of your profile:

Feature Description
Commits Number of total commits the user made
Contributions Number of repositories where the user made contributions
Followers Number of followers the user has
Forks Number of forks the user has in their repositories
Issues Number of issues the user has raised
Organizations Number of organizations the user is a part of
Repos Number of repositories the user has
Stars Number of stars the user has on their repositories

And gives you a comprehensive score of how similar your GitHub Profile is to an average MLH Fellow's GitHub.

It also shows your statistics in a user-friendly data visualization format for you to gauge the range of your skills and become the next MLH Fellow!

Disclaimer

Dear user, building this application, we were trying our best to provide with data insights into things you can improve through your GitHub Profile. This is a hackakthon project that is built by Open Source Fellows and is not directly affiliated with MLH in any capacity. The positive score in your application does not guarantee your chances of becoming a fellow because there are external things apart from GitHub that affect the decision process.

We also hope that you understand that your GitHub Stats do not affect your value to the community as a developer. We all have different paths to success in our lives, and they do not necessarily involve high scores. Regardless of your numbers, you are going to succeed in your journey.

Technologies Used

Tech Stack Used

We used the following technologies:

  • BentoML along with Heroku to build an API endpoint that calculates the comprehensive score for the user based on a simple query.
  • Flask deployed to Heroku to setup a bridge between the frameworks and collect the input data.
  • React.js served on Firebase to provide user-friendly UI for future MLH fellows to use.

Contributing

To contribute to this open-source project, follow these steps:

  1. Fork the repository.
  2. Create a branch: git checkout -b <branch_name>.
  3. Make your changes and commit them: git commit -m '<commit_message>'.
  4. Push to your branch: git push origin <project_name>/<location>.
  5. Create a pull request.

To work on BentoML:

  1. Go to model/bento_deploy to find necessary files.
  2. Read BentoML Start Guide to learn more about the files.
  3. Improve the BentoML Interface to provide our users with a more accurate score.
  4. Create the BentoML prediction service with python bento_packer.py and commit the saved class from bentoml get IrisClassifier:latest --print-location --quiet.

To work on the Back-End:

  1. Consult scr/server and its README.
  2. Make contributions.

Alternatively: Reach out to one of the Project Contributors for questions.

Demo

YouTube Logo that Leads to our demo

Motivation

We built this project because we wanted to help prospective MLH Fellows with their progress toward a better GitHub profile with solid projects and a record of active work. We also wanted to give them some insights into what an average fellow at MLH looks like.

When we were just aspiring to become MLH Fellows, we would look for different sources of information to know what MLH is looking for in their fellows and better ways to prepare. So we tried to address this issue and hopefully support future fellows on their way to success.

However, we make an important notion that your GitHub Profile does not define you as a developer. Our tool is simply to let you see into the data for areas of potential improvement and keep working toward your goals. We do not consider things like:

  • Personal communication levels
  • Spot availability
  • Match in project interests

The mentioned points affect your chances on becoming a fellow. Unfortunately, there is no way to take them into consideration.

Team

Damir Temir


Damir Temir

Working on the project, I learned the basics of BentoML and deploying the server model to the cloud like Heroku. I also gained some experience in Data Mining and Processing, which is an invaluable skill toward my journey to Machine Learning Engineering.

The contributions I made are:

  • Wrote Jupyter Notebooks where we showcase our work with the GitHub API.
  • Set up a Git repository with active GitHub Projects and proper infrastructure.
  • Mined data on more than 650 fellows in the MLH Fellowship organization.
  • Created a BentoML API node deployed to Heroku for querying.

Aymen Bennabi


Aymen Bennabi

During the hackathon I majorly worked on the Front-End part of the project. I created a friendly UI/UX to collect data and visualize the results. Also, I helped a little bit with the Back-End by creating a facade API to make working with GitHub easier. The new interface adds a level of abstraction that mainly focuses on quantitative data that we needed to do the statistical analysis.

I really enjoyed the Orientation Hackathon. I now feel more confident working with Git/GitHub. I also started learning about functional programming base API (OCamal/dream).

Tasha Kim


Aymen Bennabi

Utilizing BentoML gave us a flexible, high-performance framework to serve, manage, and deploy our model to predict MLH fellowship status using user's GitHub profiles. In particular, I enjoyed working with ML frameworks like Matplotlib, Seaborn, and Pandas, as well as Cloud native deployment services, and API serving that were all packaged into a single service.

Some of my contributions were:

  • Implemented the ANNOVA model as an alternative improved statiscal comparison to the one we are using now. Our current one works fine, but we can use this in the case we want a more rigorous and detailed comparison (multiple pairwise comparison (post hoc comparison) analysis for all unplanned comparison using Tukey’s honestly significantly differenced (HSD) test).
  • Built a CI (continuous integration) pipeline for build, run, and testing of our node app as well as python app using github actions.
  • Implemented method to compute average statistics for aggregated mlh fellow data.

Shout out to everyone in our team!

Eyimofe Ogunbiyi


Eyimofe Bennabi

I worked on the Back-End Server for the project and the deployment pipeline on Heroku. I was able to use the Flask Rest Framework for the Back-End which was a new experience for me.

License

This project is served under the MIT License.

MIT License

Copyright (c) 2021 Damir Temir

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Comments
  • Issue Related To Directory Structure Conventions

    Issue Related To Directory Structure Conventions

    • I'm submitting a ...

      • [ ] bug report
      • [ ] feature request
      • [x] support request
    • What is the current behavior?

      • Some code files (.py, Procfile) are placed in the repo root folder.
      • Some debugging files (.src/server/api/pycache) were committed
    • What is the expected behavior?

      • All code related files should take place inside the src/ folder
      • Debugging-related files should be added inside a .gitignore file
    opened by bennaaym 3
  • Client data

    Client data

    Why This PR Adds Value

    • The PR fetch data from the API and render it to the user as quantitative data & charts

    What This PR Adds

    • Fetch real data from the API
    • Add Charts to visualize data
    • Add Error Handling
    • Add Route Protection
    • Create a smooth UX
    opened by bennaaym 1
  • Issue : problem with the structure of data coming from backend

    Issue : problem with the structure of data coming from backend

    • I'm submitting a ...

      • [x] bug report
      • [ ] feature request
      • [ ] support request
    • What is the current behavior?

    • The data coming from the API have the following structure

    • { "user": { "score": 0, "features": { "Followers": 3, "Repos": 11, "Stars": 3, "Forks": 0, "Commits": 289, "Issues": 0, "Contributions": 0, "Organizations": 1 } }, "averageFellow": { "user": { "score": 0, "features": { "Commits": 892, "Followers": 54, "Repos": 43, "Stars": 26, "Forks": 9, "Organizations": 1, "Issues": 104, "Contributions": 86 } } } }

    • If the current behavior is a bug, please provide the steps to reproduce it

    • the JSON format should be changed on the API
    • What is the expected behavior?
    • the data coming from the API should have the following structure { "user": { "score": 0, "features": { "Followers": 3, "Repos": 11, "Stars": 3, "Forks": 0, "Commits": 289, "Issues": 0, "Contributions": 0, "Organizations": 1 } }, "averageFellow": { "score": 0, "features": { "Commits": 892, "Followers": 54, "Repos": 43, "Stars": 26, "Forks": 9, "Organizations": 1, "Issues": 104, "Contributions": 86 } } }
    opened by bennaaym 1
  • Client UI

    Client UI

    Why This PR Adds Value

    • This PR implements the core UI of the project
    • minimalistic & medium size screen-friendly design

    What This PR Adds

    • All the changes can be file under./src/client
    • The PR enhances the UI with the following:
      • Landing Page
      • About Page
      • Form Page
      • Result Page
      • 404 Page
      • Charts & Animations

    Screenshot

    Landing Page Form Page Result Page 404 Page

    How This PR Could Be Improved

    • The About section is still not implemented, the cause of this issue is that the final idea of the project still isn't fixed
    • The UI is using dummy data to showcase, the cause of the issue, The date still not ready to be fetched from the backend
    opened by bennaaym 1
  • Update manual.yml

    Update manual.yml

    Needs to be checked if triggered successfully upon push/PR

    Why This PR Adds Value

    -Creates CI pipeline to run frontend nodejs application. Manual action, can add testing & backend api check here too

    What This PR Adds

    -Manual CI pipeline using github actions

    opened by tashakim 0
  • Added a new BentoML server

    Added a new BentoML server

    Why This PR Adds Value

    It adds a new BentoML Server API that is currently deployed to Heroku

    What This PR Adds

    • I needed to get a new object to dockerize it and put on Heroku
    opened by dtemir 0
  • get user scores and get user avatar

    get user scores and get user avatar

    Why This PR Adds Value

    This PR implements the functionality to send user data to BentoML endpoint to fetch user's score and also implements getting the user's avatar URL

    What This PR Adds

    • Get and display user's score
    • Get and display user's avatar URL
    opened by mofe64 0
  • Backend server

    Backend server

    Why This PR Adds Value

    This PR refactors the returned response to match what the frontend expects to receive

    What This PR Adds

    • Changed the response format

    How This PR Could Be Improved

    • Get profile score from BentoML
    opened by mofe64 0
  • Added a Setup for BentoML

    Added a Setup for BentoML

    Why This PR Adds Value

    This BentoML Setup creates an API interface for us to make calls to receive score back. BentoML creates an object for us, 20210923201102_DB1F1F that can be served locally for the API to work.

    What This PR Adds

    • Adds bento_service.py to define the API
    • Adds bento_packer.py to create the object for the API calls
    • Created 20210923201102_DB1F1F for us to run the server to which the API calls will be made

    Screenshot

    Successful API call

    This screenshot shows that when we call the API with some scores like {"Commits": 892, "Followers": 54, "Repos": 43, "Stars": 26, "Forks": 9, "Organizations": 1, "Issues": 104, "Contributions": 86}, it returns a score of 87.5

    How This PR Could Be Improved

    • This PR can be improved by putting the BentoML API on the cloud
    • It could also be improved by using Median Statistics instead of Average Statistics to give out better results
    enhancement 
    opened by dtemir 0
  • Backend server

    Backend server

    Why This PR Adds Value

    This PR fetches the user's GitHub stats from the GitHub api

    What This PR Adds

    • functionality to call the GitHub api and retrieve the users data

    How This PR Could Be Improved

    • forward collected data to bentoML for prediction and score
    opened by mofe64 0
  • Getting Data

    Getting Data

    Why This PR Adds Value

    This PR, collects all data we need about MLH Fellows, computes averages and medians, and stores all of them as JSON files.

    What This PR Adds

    • Updated fetching-data.ipynb with new functions to mine the data with GitHub API
    • Updated computer-average.ipynb with new functions to computer averages and medians
    • Adds:
      • full-info.json with all the data
      • averages.json for the average statistics
      • medians.json for the median statistics

    How This PR Could Be Improved

    Needs visualization

    opened by dtemir 0
  • Bug: CORS policy blocks client's requests to the prediction backend

    Bug: CORS policy blocks client's requests to the prediction backend

    I'm submitting a ...

    • [x] bug report
    • [ ] feature request
    • [ ] support request

    What is the current behavior?

    The https://fellowship-prediction.web.app website can not fetch the /profile backend endpoint. Seemingly blocked by the CORS policy according to the CORS error message in Figure 2.

    image

    Figure 1: current behavior

    image

    Figure 2: CORS error message

    image

    Figure 3: /profile request payload

    If the current behavior is a bug, please provide the steps to reproduce it

    Go to https://fellowship-prediction.web.app/form and enter a Github username. You will see an "Invalid Username Please Try Again" modal like Figure 1.

    opened by hxu296 0
Owner
Damir Temir
I just write code
Damir Temir
Cross-platform CLI tool to generate your Github profile's stats and summary.

ghs Cross-platform CLI tool to generate your Github profile's stats and summary. Preview Hop on to examples for other usecases. Jump to: Installation

HackerRank 134 Dec 20, 2022
We envision models that are pre-trained on a vast range of domain-relevant tasks to become key for molecule property prediction

We envision models that are pre-trained on a vast range of domain-relevant tasks to become key for molecule property prediction. This repository aims to give easy access to state-of-the-art pre-trained models.

GMUM 90 Jan 8, 2023
How to Become More Salient? Surfacing Representation Biases of the Saliency Prediction Model

How to Become More Salient? Surfacing Representation Biases of the Saliency Prediction Model

Bogdan Kulynych 49 Nov 5, 2022
This program presents convolutional kernel density estimation, a method used to detect intercritical epilpetic spikes (IEDs)

Description This program presents convolutional kernel density estimation, a method used to detect intercritical epilpetic spikes (IEDs) in [Gardy et

Ludovic Gardy 0 Feb 9, 2022
Convolutional neural network that analyzes self-generated images in a variety of languages to find etymological similarities

This project is a convolutional neural network (CNN) that analyzes self-generated images in a variety of languages to find etymological similarities. Specifically, the goal is to prove that computer vision can be used to identify cognates known to exist, and perhaps lead linguists to evidence of unknown cognates.

null 1 Feb 3, 2022
QuakeLabeler is a Python package to create and manage your seismic training data, processes, and visualization in a single place — so you can focus on building the next big thing.

QuakeLabeler Quake Labeler was born from the need for seismologists and developers who are not AI specialists to easily, quickly, and independently bu

Hao Mai 15 Nov 4, 2022
Spam your friends and famly and when you do your famly will disown you and you will have no friends.

SpamBot9000 Spam your friends and family and when you do your family will disown you and you will have no friends. Terms of Use Disclaimer: Please onl

DJ15 0 Jun 9, 2022
Combining Automatic Labelers and Expert Annotations for Accurate Radiology Report Labeling Using BERT

CheXbert: Combining Automatic Labelers and Expert Annotations for Accurate Radiology Report Labeling Using BERT CheXbert is an accurate, automated dee

Stanford Machine Learning Group 51 Dec 8, 2022
git git《Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking》(CVPR 2021) GitHub:git2] 《Masksembles for Uncertainty Estimation》(CVPR 2021) GitHub:git3]

Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking Ning Wang, Wengang Zhou, Jie Wang, and Houqiang Li Accepted by CVPR

NingWang 236 Dec 22, 2022
Code for technical report "An Improved Baseline for Sentence-level Relation Extraction".

RE_improved_baseline Code for technical report "An Improved Baseline for Sentence-level Relation Extraction". Requirements torch >= 1.8.1 transformers

Wenxuan Zhou 74 Nov 29, 2022
🔥 TensorFlow Code for technical report: "YOLOv3: An Incremental Improvement"

?? Are you looking for a new YOLOv3 implemented by TF2.0 ? If you hate the fucking tensorflow1.x very much, no worries! I have implemented a new YOLOv

null 3.6k Dec 26, 2022
Resco: A simple python package that report the effect of deep residual learning

resco Description resco is a simple python package that report the effect of dee

Pierre-Arthur Claudé 1 Jun 28, 2022
Calculates carbon footprint based on fuel mix and discharge profile at the utility selected. Can create graphs and tabular output for fuel mix based on input file of series of power drawn over a period of time.

carbon-footprint-calculator Conda distribution ~/anaconda3/bin/conda install anaconda-client conda-build ~/anaconda3/bin/conda config --set anaconda_u

Seattle university Renewable energy research 7 Sep 26, 2022
Detectron2 is FAIR's next-generation platform for object detection and segmentation.

Detectron2 is Facebook AI Research's next generation software system that implements state-of-the-art object detection algorithms. It is a ground-up r

Facebook Research 23.3k Jan 8, 2023
OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark

Introduction English | 简体中文 MMAction2 is an open-source toolbox for video understanding based on PyTorch. It is a part of the OpenMMLab project. The m

OpenMMLab 2.7k Jan 7, 2023
Official code for Next Check-ins Prediction via History and Friendship on Location-Based Social Networks (MDM 2018)

MUC Next Check-ins Prediction via History and Friendship on Location-Based Social Networks (MDM 2018) Performance Details for Accuracy: | Dataset

Yijun Su 3 Oct 9, 2022
A Next Generation ConvNet by FaceBookResearch Implementation in PyTorch(Original) and TensorFlow.

ConvNeXt A Next Generation ConvNet by FaceBookResearch Implementation in PyTorch(Original) and TensorFlow. A FacebookResearch Implementation on A Conv

Raghvender 2 Feb 14, 2022
A script written in Python that returns a consensus string and profile matrix of a given DNA string(s) in FASTA format.

A script written in Python that returns a consensus string and profile matrix of a given DNA string(s) in FASTA format.

Zain 1 Feb 1, 2022