Y Combinator Application Status

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

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

  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. })();