cerebro-cli
v0.3.2
Published
> A novel recruiting tool using GitHub events.
Downloads
8
Readme
Cerebro (cerebro-cli)
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. Credit to @sequoia for this heuristic.
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
- Node.js. The nvm tool works well for this.
- Optional, but highly recommended: A GH personal token with default permissions
- Optional: Docker and Docker Compose.
Usage
Cerebro can be run in a number of different ways, always configured by environment variables.
Configuration
The following environment variables are available:
LANGUAGES
: Required. Comma separated list of the target languages you're looking forGH_TOKEN
: Not required but highly recommended. Your GitHub personal authentication token.COMMENT_THRESHOLD
: optional, default 3. Show PRs with review comments greater than or equal to this numberSHOW_NON_HIREABLE
: optional, default false. Show applicants that are not explicitly marked as hireable.CHANGESET_THRESHOLD
: optional, default 5432. Only match PRs that have a total changeset (additions + subtractions) under this number.
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.3.0
Or in your docker-compose
file:
services:
cerebro:
image: aphelionz/cerebro-cli:v0.3.0
environment:
GH_TOKEN: XXXXX
LANGUAGES: rust,solidity
Prometheus
By default, the app will expose Prometheus-compatible metrics on port 9100. These include all of the normal default nodejs metrics, as well as some custom metrics for Cerebro:
# HELP unique_events_processed Number of unique events processed by Cerebro
# TYPE unique_events_processed counter
unique_events_processed{app="cerebro"} 8811
# HELP suitable_pull_requests_found Number of suitable pull requests by Cerebro
# TYPE suitable_pull_requests_found counter
suitable_pull_requests_found{app="cerebro"} 6
# HELP candidates_found Count of candidates found by Cerebro so far
# TYPE candidates_found counter
candidates_found{app="cerebro"} 0
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
- Bot detection really happens in two places, here and in the use of
- English proficiency
- Really needs a manual overview until we find / create a good enough tool for this
- Ideally would be any proficiency in language
- "Looking for a job" false negatives, and false positives too
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.
- IPFS + OrbitDB integration? Or at least some database
- Readline and raw stdin integration to make a proper UI (or just make an API + website)
- Environment variable validation
- Is it possible to get the full list of supported GH languages?
Maintainers
License
AGPL © 2020 Mark Henderson