Skip to content

a15n/angelinsights

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Angel Insights

Angel Insights sheds light on the hiring needs of the different companies on Angel List. Want to make yourself more marketable? Find out what skills are currently in demand.

This app was built using Javascript, MongoDB, Express, Angular, Node, and High Charts.

Primary Features

  • High Charts: High Charts is a charting library written in pure JavaScript, offering an easy way of adding interactive charts to your web site or web application.
  • API calls: With a single click every job on Angel List (over 23,000) are gathered, scrubbed, and stored in a MongoDB.
var populateJobs = function (element, index, array) {
  request('https://api.angel.co/1/jobs?page=' + element, function (error, response, body) {
    var data = JSON.parse(body);
    var jobs = data.jobs;
    var jobsLength = jobs.length;
    for (var i = 0; i < jobsLength; i++) {
      var job = jobs[i];
      var jobObject = {};
      jobObject.title = job.title;
      jobObject.company = job.startup.name;
      jobObject.equityCliff = job.equity_cliff;
      jobObject.equityVest = job.equity_vest;
      jobObject.equityMin = job.equity_min;
      jobObject.equityMax = job.equity_max;
      jobObject.salaryMin = job.salary_min;
      jobObject.salaryMax = job.salary_max;
      jobObject.angelUrl = job.angellist_url;
      jobObject.companyUrl = job.startup.company_url;
      jobObject.logoUrl = job.startup.logo_url;
      jobObject.roleTags = [];
      jobObject.skillTags = [];
      jobObject.locationTags = [];
      var j = 0;
      var tagsLength = job.tags.length;
      for (j; j < tagsLength; j++) {
        switch(job.tags[j].tag_type) {
          case 'RoleTag':
            jobObject.roleTags.push(job.tags[j].display_name);
            break;
          case 'LocationTag':
            jobObject.locationTags.push(job.tags[j].display_name);
            break;
          case 'SkillTag':
            jobObject.skillTags.push(job.tags[j].display_name);
            break;
          default:
            console.log(job.tags[j].tag_type + " missing case statement");
        }
      }
      Job.create(jobObject, function(err, job) {
        if(err) { return handleError(res, err); }
        console.log((job.title + " added from page " + element).green);
      })
    }
  })
}

request('https://api.angel.co/1/jobs?page=1', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    var lastPage = JSON.parse(body).last_page;
    var pageArray = [];
    for (var i = 1; i <= lastPage; i++) {
      pageArray.push(i);
    }
    pageArray.forEach(populateJobs);
  }
})
  • Similar Word Combinations: I built a function that adds the values and combines misspelled skills. For example, "Angular.js" is the most popular spelling so all of the "AngularJS", "Angular", and "Angular JS" properties are combined when the original object is passed through this function.
var combineSimilarWords = function (originalObject) {
  var targetObject = targetWords;
  for (var originalWord in originalObject) {
    for (var targetWord in targetObject) {
      if (targetObject[targetWord].indexOf(originalWord) > -1) {
        originalObject[targetWord] = originalObject[targetWord] + originalObject[originalWord];
        delete originalObject[originalWord];
      }
    }
  }
  return originalObject;
};

About

most in-demand skills on Angel List

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published