Y Combinator Application Status

Just making it a little easier to track your Y Combinator application status.

  1. // ==UserScript==
  2. // @name Y Combinator Application Status
  3. // @namespace https://www.linkedin.com/in/jarrettcoggin
  4. // @version 2024-05-07
  5. // @description Just making it a little easier to track your Y Combinator application status.
  6. // @author Jarrett Coggin
  7. // @match https://apply.ycombinator.com/
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=ycombinator.com
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14. function createAndAppendContent(parent, tag, text) {
  15. var element = document.createElement(tag);
  16. element.innerText = text;
  17. parent.appendChild(element);
  18. }
  19.  
  20. window.addEventListener('load', function() {
  21. var div = document.querySelector('div[data-react-props]');
  22. if (div) {
  23. var rawProps = div.getAttribute("data-react-props");
  24. try {
  25. var reactProps = JSON.parse(rawProps);
  26. console.log(reactProps);
  27. reactProps.all_apps.forEach(app => {
  28. if (app.current_batch) {
  29. var appId = app.id;
  30. var selector = `a[href='apps/${appId}']`;
  31. var linkElement = document.querySelector(selector);
  32. if (linkElement) {
  33. var parentDiv = linkElement.closest('div.mb-8.overflow-hidden.rounded-xl.bg-white.p-12.shadow-md.hover\\:shadow-xl');
  34. var newContent = document.createElement('div');
  35. newContent.innerHTML = '<h2>Application Status:</h2>';
  36. createAndAppendContent(newContent, 'p', 'Status: ' + app.status);
  37. createAndAppendContent(newContent, 'p', 'Rejected: ' + app.rejected);
  38. createAndAppendContent(newContent, 'p', 'Stage: ' + app.stage);
  39. createAndAppendContent(newContent, 'p', 'Invited: ' + app.invited);
  40. createAndAppendContent(newContent, 'p', 'Result: ' + app.result);
  41. createAndAppendContent(newContent, 'p', 'Updated At: ' + app.updated_at);
  42. createAndAppendContent(newContent, 'p', 'Updated By User At: ' + app.updated_by_user_at);
  43. createAndAppendContent(newContent, 'p', 'Interview: ' + app.interview);
  44. createAndAppendContent(newContent, 'p', 'Interview in Person: ' + app.interview_in_person);
  45. createAndAppendContent(newContent, 'p', 'Interview Questions Filled In: ' + app.interview_questions_filled_in);
  46. createAndAppendContent(newContent, 'p', 'Interview Time: ' + app.interview_time);
  47. createAndAppendContent(newContent, 'p', 'Interview Within 30 Mins: ' + app.interview_within_30_min);
  48. createAndAppendContent(newContent, 'p', 'Last Message Replied To: ' + app.last_message_replied_to);
  49. createAndAppendContent(newContent, 'p', 'Messages: ' + app.messages);
  50. parentDiv.appendChild(newContent);
  51. }
  52. }
  53. });
  54. } catch (e) {
  55. console.error('Error parsing JSON or updating the page:', e);
  56. }
  57. } else {
  58. console.log('No div with data-react-props found');
  59. }
  60. });
  61. })();