cerebro
A novel recruiting tool using GitHub events.
Finding capable developers is challenging. This tool starts with
a simple heuristic - the ability to get a pull request (PR)
merged given a sufficient amount of feedback, and filters from
there.
The flow is currently as follows:
- Listen to the public GitHub events firehose for pull request
merge events on PRs that have a specified number of comments.
- Discard PRs made by bot users
- For each PR:
- Check if the language is your target language
- Check if the author of the PR is looking for a job
Table of Contents
Prerequisites
You need, or may need:
Usage
Cerebro can be run in a number of different ways, always
configured by environment variables.
Using npx
You can skip the whole installation process altogether and just
run cerebro using npx
GH_TOKEN=[insert GH token here] \
LANGUAGES=Solidity,Rust \
npx cerebro-cli
Using Docker and Docker Compose
With docker
:
docker run -ti \
-e GH_TOKEN=XXXXX \
-e LANGUAGES=c++,javascript \
aphelionz/cerebro-cli:v0.1.0
Or in your docker-compose
file:
services:
cerebro:
image: aphelionz/cerebro-cli:v0.1.0
environment:
GH_TOKEN: XXXXX
LANGUAGES: rust,solidity
Configuration
The following environment variables are available:
GH_TOKEN
: Your GitHub personal authentication token.LANGUAGES
: Comma separated list of the target languages you're looking for
Contributing
Issues and PRs accepted. More info coming soon.
Installing from Source
git clone https://github.com/aphelionz/cerebro
cd cerebro
npm install
Then run npm start with the aforementioned environment variables
to run, test, and develop!
Why doesn't this use GraphQL?
GitHub API v4 does not support listening to the public event timeline.
Future Work
- Better bot detection
- Bot detection really happens in two places, here and in the use of
review_comments
- English proficiency
- really needs a manual overview until we find / create a good enough tool for this
- ideally would be any language
- Looking for a job false negatives
- hireable is either null (false) or true. However null is the default because GH jobs is
opt-in. So we only make a note of this for now.
- API rate limiting handling
- So far the script just runs every 2 seconds, which is "fine." It could be smarter
- IPFS + OrbitDB integration?
- Readline and raw stdin integration to make a proper UI (or just make an API + website)
Maintainers
@aphelionz
License
AGPL © 2020 Mark Henderson