├── .github ├── ISSUE_TEMPLATE │ ├── edit_role.yaml │ ├── feature_suggestion.yaml │ ├── misc.yaml │ └── new_role.yaml ├── scripts │ ├── __pycache__ │ │ └── util.cpython-311.pyc │ ├── contribution_approved.py │ ├── listings.json │ ├── update_readmes.py │ └── util.py └── workflows │ ├── contribution_approved.yml │ └── update_readmes.yml ├── CONTRIBUTING.md └── README.md /.github/ISSUE_TEMPLATE/edit_role.yaml: -------------------------------------------------------------------------------- 1 | name: Edit Role 2 | description: Edit a Job Posting on our list 3 | title: "Editing Role" 4 | labels: ["edit_role"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | ## Edit Job Posting Form 10 | Thanks for taking the time to contribute! 11 | Make sure you've read `CONTRIBUTING.md` before submitting your edits 12 | Please only fill in **link, reason, and whichever fields you would like to edit** 13 | You may leave the others empty 14 | - type: input 15 | id: url 16 | attributes: 17 | label: Link to Job Posting 18 | placeholder: ex. example.com/link/to/posting 19 | validations: 20 | required: true 21 | - type: input 22 | id: company_name 23 | attributes: 24 | label: Company Name 25 | placeholder: ex. Google 26 | validations: 27 | required: false 28 | - type: input 29 | id: title 30 | attributes: 31 | label: Job Title 32 | placeholder: ex. ML Software Engineer 33 | validations: 34 | required: false 35 | - type: input 36 | id: location 37 | attributes: 38 | label: Location 39 | description: | 40 | Where is the job located? 41 | Please separate locations with a pipe "|" if there are multiple options. 42 | Include Remote if remote option available. 43 | placeholder: ex. San Franciso, CA | Austin, TX | Remote 44 | validations: 45 | required: false 46 | - type: dropdown 47 | id: sponsorship 48 | attributes: 49 | label: Does this job offer sponsorship? 50 | description: | 51 | If the posting does not fall into one of these 52 | categories, select "Other" then specify in parentheses at the end of 53 | the Job Title what the sponsorship status is 54 | multiple: false 55 | options: 56 | - Offers Sponsorship 57 | - Does Not Offer Sponsorship 58 | - U.S. Citizenship is Required 59 | - Other 60 | validations: 61 | required: false 62 | - type: dropdown 63 | id: active 64 | attributes: 65 | label: Is this job posting currently accepting applications? 66 | multiple: false 67 | options: 68 | - "Yes" 69 | - "No" 70 | validations: 71 | required: false 72 | - type: checkboxes 73 | id: is_visible 74 | attributes: 75 | label: Remove this job from the list? 76 | description: Only check this box if this job is fake, does not fit the theme of the repo, or is offensive. 77 | options: 78 | - label: "Yes, remove this job" 79 | - type: input 80 | id: email 81 | attributes: 82 | label: Email associated with your GitHub account (Optional) 83 | description: | 84 | If you would like to be listed as the contributor to the repository when our github action 85 | commits your contribution to the repo, please provide your email. This is the only time your 86 | email will be used. If left blank, your contribution will still be made, but it will be made 87 | by the bot actions@github.com. 88 | placeholder: ex. firstLast@gmail.com 89 | validations: 90 | required: false 91 | - type: textarea 92 | id: reason 93 | attributes: 94 | label: Reason for edit 95 | description: If the reason for your edit is not obvious, please explain here. 96 | placeholder: This job is no longer accepting applications... 97 | validations: 98 | required: false 99 | 100 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_suggestion.yaml: -------------------------------------------------------------------------------- 1 | name: New Feature Request 2 | description: Submit your ideas for improvements to the repo! 3 | title: "New Feature Request" 4 | labels: ["enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to suggest a new feature or improvement 10 | - type: textarea 11 | id: improvement 12 | attributes: 13 | label: Improvement 14 | placeholder: ex. I think the repo should be more colorful... 15 | validations: 16 | required: true 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/misc.yaml: -------------------------------------------------------------------------------- 1 | name: Miscellaneous Issue 2 | description: Ask us a question or tell us what we could do better 3 | title: "Misc Issue" 4 | labels: ["misc"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to give us feedback 10 | - type: textarea 11 | id: misc 12 | attributes: 13 | label: Issue/Question 14 | description: Ask us a question or tell us what we could do better 15 | placeholder: ex. There are a few jobs that aren't actually technical... 16 | validations: 17 | required: true 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new_role.yaml: -------------------------------------------------------------------------------- 1 | name: New Role 2 | description: Contribute a Job Posting to our list 3 | title: "New Role" 4 | labels: ["new_role"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | ## New Job Posting Contribution Form 10 | Thanks for taking the time to contribute! 11 | > Make sure you've read `CONTRIBUTING.md` before submitting your internship 12 | - type: input 13 | id: url 14 | attributes: 15 | label: Link to Job Posting 16 | placeholder: ex. example.com/link/to/posting 17 | validations: 18 | required: true 19 | - type: input 20 | id: company_name 21 | attributes: 22 | label: Company Name 23 | placeholder: ex. Google 24 | validations: 25 | required: true 26 | - type: input 27 | id: title 28 | attributes: 29 | label: Job Title 30 | placeholder: ex. ML Software Engineer 31 | validations: 32 | required: true 33 | - type: input 34 | id: location 35 | attributes: 36 | label: Location 37 | description: | 38 | Where is the job located? 39 | Please separate locations with a pipe "|" if there are multiple options. 40 | Include Remote if remote option available. 41 | placeholder: San Franciso, CA | Austin, TX | Remote 42 | validations: 43 | required: true 44 | - type: dropdown 45 | id: sponsorship 46 | attributes: 47 | label: Does this job offer sponsorship? 48 | description: | 49 | If the posting does not fall into one of these 50 | categories, select "Other" then specify in parentheses at the end of 51 | the Internship Title what the sponsorship status is 52 | multiple: false 53 | options: 54 | - Offers Sponsorship 55 | - Does Not Offer Sponsorship 56 | - U.S. Citizenship is Required 57 | - Other 58 | validations: 59 | required: true 60 | - type: dropdown 61 | id: active 62 | attributes: 63 | label: Is this job currently accepting applications? 64 | multiple: false 65 | options: 66 | - "Yes" 67 | - "No" 68 | validations: 69 | required: true 70 | - type: input 71 | id: email 72 | attributes: 73 | label: Email associated with your GitHub account (Optional) 74 | description: | 75 | If you would like to be listed as the contributor to the repository when our github action 76 | commits your contribution to the repo, please provide your email. This is the only time your 77 | email will be used. If left blank, your contribution will still be made, but it will be made 78 | by the bot actions@github.com. 79 | placeholder: ex. firstLast@gmail.com 80 | validations: 81 | required: false 82 | - type: textarea 83 | id: reason 84 | attributes: 85 | label: Extra Notes (Optional) 86 | description: | 87 | Optionally, you may provide extra context/insights to our team about the job. 88 | This will not be shown anywhere on the repo, but might ensure your contribution is accepted. 89 | placeholder: This is an exciting new company in the vr space... 90 | validations: 91 | required: false 92 | -------------------------------------------------------------------------------- /.github/scripts/__pycache__/util.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/haydenthai/New-Grad-2025/d30f244688ccc0197761fd642b499c9f145a45e0/.github/scripts/__pycache__/util.cpython-311.pyc -------------------------------------------------------------------------------- /.github/scripts/contribution_approved.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import json 3 | import subprocess 4 | import sys 5 | import uuid 6 | from datetime import datetime 7 | import os 8 | import util 9 | import re 10 | 11 | 12 | def add_https_to_url(url): 13 | if not url.startswith(("http://", "https://")): 14 | url = "https://" + url 15 | return url 16 | 17 | 18 | def getData(body, is_edit, username): 19 | data = {} 20 | lines = [text.strip("# ") for text in re.split('[\n\r]+', body)] 21 | #["Company Name", "_No response_", "Internship Title", "_No response_", "Link to Internship Posting", "example.com/link/to/posting", "Locatio", "San Franciso, CA | Austin, TX | Remote" ,"What term(s) is this internship offered for?", "_No response_"] 22 | 23 | data["date_updated"] = int(datetime.now().timestamp()) 24 | 25 | if "no response" not in lines[1].lower(): 26 | data["url"] = add_https_to_url(lines[1].strip()) 27 | if "no response" not in lines[3].lower(): 28 | data["company_name"] = lines[3] 29 | if "no response" not in lines[5].lower(): 30 | data["title"] = lines[5] 31 | if "no response" not in lines[7].lower(): 32 | data["locations"] = [line.strip() for line in lines[7].split("|")] 33 | if "no response" not in lines[9].lower(): 34 | data["sponsorship"] = "Other" 35 | for option in ["Offers Sponsorship", "Does Not Offer Sponsorship", "U.S. Citizenship is Required"]: 36 | if option in lines[9]: 37 | data["sponsorship"] = option 38 | if "none" not in lines[11].lower(): 39 | data["active"] = "yes" in lines[11].lower() 40 | if is_edit: 41 | data["is_visible"] = "[x]" not in lines[13].lower() 42 | 43 | email = lines[15 if is_edit else 13].lower() 44 | if "no response" not in email: 45 | util.setOutput("commit_email", email) 46 | util.setOutput("commit_username", username) 47 | else: 48 | util.setOutput("commit_email", "action@github.com") 49 | util.setOutput("commit_username", "GitHub Action") 50 | 51 | return data 52 | 53 | 54 | def main(): 55 | event_file_path = sys.argv[1] 56 | 57 | with open(event_file_path) as f: 58 | event_data = json.load(f) 59 | 60 | 61 | # CHECK IF NEW OR OLD JOB 62 | 63 | new_role = "new_role" in [label["name"] for label in event_data["issue"]["labels"]] 64 | edit_role = "edit_role" in [label["name"] for label in event_data["issue"]["labels"]] 65 | 66 | if not new_role and not edit_role: 67 | util.fail("Only new_role and edit_role issues can be approved") 68 | 69 | 70 | # GET DATA FROM ISSUE FORM 71 | 72 | issue_body = event_data['issue']['body'] 73 | issue_user = event_data['issue']['user']['login'] 74 | 75 | data = getData(issue_body, is_edit=edit_role, username=issue_user) 76 | 77 | if new_role: 78 | data["source"] = issue_user 79 | data["id"] = str(uuid.uuid4()) 80 | data["date_posted"] = int(datetime.now().timestamp()) 81 | data["company_url"] = "" 82 | data["is_visible"] = True 83 | 84 | # remove utm-source 85 | utm = data["url"].find("?utm_source") 86 | if utm == -1: 87 | utm = data["url"].find("&utm_source") 88 | if utm != -1: 89 | data["url"] = data["url"][:utm] 90 | 91 | 92 | # UPDATE LISTINGS 93 | 94 | listings = [] 95 | with open(".github/scripts/listings.json", "r") as f: 96 | listings = json.load(f) 97 | 98 | listing_to_update = next( 99 | (item for item in listings if item["url"] == data["url"]), None) 100 | if listing_to_update: 101 | if new_role: 102 | util.fail("This role is already in our list. See CONTRIBUTING.md for how to edit a listing") 103 | for key, value in data.items(): 104 | listing_to_update[key] = value 105 | 106 | util.setOutput("commit_message", "updated listing: " + listing_to_update["title"] + " at " + listing_to_update["company_name"]) 107 | else: 108 | if edit_role: 109 | util.fail("We could not find this role in our list. Please double check you inserted the right url") 110 | listings.append(data) 111 | util.setOutput("commit_message", "added listing: " + data["title"] + " at " + data["company_name"]) 112 | 113 | with open(".github/scripts/listings.json", "w") as f: 114 | f.write(json.dumps(listings, indent=4)) 115 | 116 | 117 | if __name__ == "__main__": 118 | main() 119 | -------------------------------------------------------------------------------- /.github/scripts/update_readmes.py: -------------------------------------------------------------------------------- 1 | import json 2 | from datetime import datetime 3 | import os 4 | import util 5 | import re 6 | 7 | 8 | def main(): 9 | 10 | listings = util.getListingsFromJSON() 11 | 12 | util.checkSchema(listings) 13 | filtered = util.filterListings(listings, earliest_date=1714528377) 14 | 15 | util.sortListings(filtered) 16 | util.embedTable(filtered) 17 | 18 | util.setOutput("commit_message", "Updating README at " + datetime.now().strftime("%B %d, %Y %H:%M:%S")) 19 | 20 | 21 | if __name__ == "__main__": 22 | main() 23 | -------------------------------------------------------------------------------- /.github/scripts/util.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | from datetime import date, datetime, timezone, timedelta 4 | import random 5 | import os 6 | 7 | 8 | SHORT_APPLY_BUTTON = "https://i.imgur.com/w6lyvuC.png" 9 | LONG_APPLY_BUTTON = "https://i.imgur.com/u1KNU8z.png" 10 | 11 | 12 | def setOutput(key, value): 13 | with open(os.environ['GITHUB_OUTPUT'], 'a') as fh: 14 | print(f'{key}={value}', file=fh) 15 | 16 | def fail(why): 17 | setOutput("error_message", why) 18 | exit(1) 19 | 20 | def getLocations(listing): 21 | locations = "
".join(listing["locations"]) 22 | if len(listing["locations"]) <= 3: 23 | return locations 24 | num = str(len(listing["locations"])) + " locations" 25 | return f'
**{num}**{locations}
' 26 | 27 | def getSponsorship(listing): 28 | if listing["sponsorship"] == "Does Not Offer Sponsorship": 29 | return " 🛂" 30 | elif listing["sponsorship"] == "U.S. Citizenship is Required": 31 | return " 🇺🇸" 32 | return "" 33 | 34 | def getLink(listing): 35 | if not listing["active"]: 36 | return "🔒" 37 | link = listing["url"] 38 | return f'Apply' 39 | 40 | 41 | def create_md_table(listings): 42 | table = "" 43 | table += "| Company | Role | Location | Application/Link | Date Posted |\n" 44 | table += "| --- | --- | --- | :---: | :---: |\n" 45 | for listing in listings: 46 | company_url = listing["company_url"] 47 | company = listing["company_name"] 48 | company = f"[{company}]({company_url})" if len( 49 | company_url) > 0 and listing["active"] else company 50 | location = getLocations(listing) 51 | position = listing["title"] + getSponsorship(listing) 52 | link = getLink(listing) 53 | month = datetime.fromtimestamp(listing["date_posted"]).strftime('%b') 54 | dayMonth = datetime.fromtimestamp(listing["date_posted"]).strftime('%b %d') 55 | isBeforeJuly18 = datetime.fromtimestamp(listing["date_posted"]) < datetime(2023, 7, 18, 0, 0, 0) 56 | datePosted = month if isBeforeJuly18 else dayMonth 57 | table += f"| **{company}** | {position} | {location} | {link} | {datePosted} |\n" 58 | return table 59 | 60 | def filterListings(listings, earliest_date): 61 | final_listings = [] 62 | inclusion_terms = ["software eng", "software dev", "data scientist", "data engineer", "product manage", "apm", "frontend", "front end", "front-end", "backend", "back end", "full-stack", "full stack", "full-stack", "devops", "android", "ios", "mobile dev", "sre", "site reliability eng", "quantitative trad", "quantitative research", "quantitative trad", "quantitative dev", "security eng", "compiler eng", "machine learning eng", "infrastructure eng"] 63 | new_grad_terms = ["new grad", "early career", "college grad", "entry level", "early in career", "university grad", "fresh grad", "2024 grad", "2025 grad", "engineer 0", "engineer 1", "engineer i ", "junior"] 64 | for listing in listings: 65 | if listing["is_visible"] and listing["active"] and listing["date_posted"] > earliest_date: 66 | if listing['source'] != "Simplify" or (any(term in listing["title"].lower() for term in inclusion_terms) and (any(term in listing["title"].lower() for term in new_grad_terms) or (listing["title"].lower().endswith("engineer i")))): 67 | final_listings.append(listing) 68 | 69 | return final_listings 70 | 71 | def getListingsFromJSON(filename=".github/scripts/listings.json"): 72 | with open(filename) as f: 73 | listings = json.load(f) 74 | print("Recieved " + str(len(listings)) + 75 | " listings from listings.json") 76 | return listings 77 | 78 | 79 | def embedTable(listings): 80 | filepath = "README.md" 81 | newText = "" 82 | readingTable = False 83 | with open(filepath, "r") as f: 84 | for line in f.readlines(): 85 | if readingTable: 86 | if "|" not in line and "TABLE_END" in line: 87 | newText += line 88 | readingTable = False 89 | continue 90 | else: 91 | newText += line 92 | if "TABLE_START" in line: 93 | readingTable = True 94 | newText += "\n" + \ 95 | create_md_table(listings) + "\n" 96 | with open(filepath, "w") as f: 97 | f.write(newText) 98 | 99 | def sortListings(listings): 100 | 101 | linkForCompany = {} 102 | for listing in listings: 103 | if listing["company_name"] not in linkForCompany or len(listing["company_url"]) > 0: 104 | linkForCompany[listing["company_name"]] = listing["company_url"] 105 | 106 | def getKey(listing): 107 | date_posted = listing["date_posted"] 108 | date_updated = listing["date_updated"] 109 | return str(date_posted) + listing["company_name"].lower() + str(date_updated) 110 | 111 | listings.sort(key=getKey, reverse=True) 112 | 113 | for listing in listings: 114 | listing["company_url"] = linkForCompany[listing["company_name"]] 115 | 116 | return listings 117 | 118 | 119 | def checkSchema(listings): 120 | props = ["source", "company_name", 121 | "id", "title", "active", "date_updated", "is_visible", 122 | "date_posted", "url", "locations", "company_url", 123 | "sponsorship"] 124 | for listing in listings: 125 | for prop in props: 126 | if prop not in listing: 127 | fail("ERROR: Schema check FAILED - object with id " + 128 | listing["id"] + " does not contain prop '" + prop + "'") 129 | -------------------------------------------------------------------------------- /.github/workflows/contribution_approved.yml: -------------------------------------------------------------------------------- 1 | name: Contribution Approved 2 | 3 | on: 4 | issues: 5 | types: ["labeled"] 6 | 7 | concurrency: add_internships 8 | 9 | jobs: 10 | run-python-script: 11 | runs-on: ubuntu-latest 12 | if: github.event.label.name == 'approved' 13 | 14 | steps: 15 | - name: Checkout Repository 16 | uses: actions/checkout@v3 17 | 18 | - name: Set up Python 19 | uses: actions/setup-python@v3 20 | with: 21 | python-version: "3.9" 22 | 23 | - name: execute contribution_approved.py 24 | id: python_script 25 | env: 26 | GITHUB_EVENT_PATH: ${{ github.event_path }} 27 | run: python .github/scripts/contribution_approved.py $GITHUB_EVENT_PATH 28 | 29 | - name: execute update_readmes.py 30 | id: python_script_readme 31 | run: python .github/scripts/update_readmes.py 32 | 33 | - name: commit files 34 | if: success() 35 | run: | 36 | git config --local user.email ${{ steps.python_script.outputs.commit_email }} 37 | git config --local user.name ${{ steps.python_script.outputs.commit_username }} 38 | git add .github/scripts/listings.json 39 | git add README.md 40 | git diff-index --quiet HEAD || (git commit -a -m "${{ steps.python_script.outputs.commit_message }}" --allow-empty) 41 | 42 | - name: push changes 43 | if: success() 44 | uses: ad-m/github-push-action@v0.6.0 45 | with: 46 | github_token: ${{ secrets.GITHUB_TOKEN }} 47 | branch: dev 48 | 49 | - name: Auto Close Issue 50 | run: gh issue close --comment "Your contribution was accepted. Auto-closing issue" ${{ github.event.issue.number }} 51 | if: success() 52 | env: 53 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 54 | 55 | - name: Problem With Action 56 | run: gh issue comment ${{ github.event.issue.number }} --body "There was an error with our github action. Error - ${{ steps.python_script.outputs.error_message }} ${{ steps.python_script_readme.outputs.error_message }}" 57 | if: failure() 58 | env: 59 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 60 | -------------------------------------------------------------------------------- /.github/workflows/update_readmes.yml: -------------------------------------------------------------------------------- 1 | name: Update READMEs 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/scripts/listings.json' 7 | workflow_dispatch: 8 | 9 | concurrency: 10 | group: listings_update 11 | cancel-in-progress: true 12 | 13 | 14 | jobs: 15 | run-python-script: 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout Repository 20 | uses: actions/checkout@v3 21 | 22 | - name: Set up Python 23 | uses: actions/setup-python@v3 24 | with: 25 | python-version: "3.9" 26 | 27 | - name: execute update_readmes.py 28 | id: python_script 29 | run: python .github/scripts/update_readmes.py 30 | 31 | - name: commit files 32 | if: success() 33 | run: | 34 | git config --local user.email action@github.com 35 | git config --local user.name 'Github Action' 36 | git add README.md 37 | git diff-index --quiet HEAD || (git commit -a -m "${{ steps.python_script.outputs.commit_message }}" --allow-empty) 38 | 39 | - name: Push changes to new branch 40 | if: success() 41 | uses: ad-m/github-push-action@v0.6.0 42 | with: 43 | github_token: ${{ secrets.GITHUB_TOKEN }} 44 | branch: ${{ github.ref_name }} 45 | 46 | - name: Problem With Action 47 | run: echo "There was an error with the github action. ${{ steps.python_script.outputs.error_message }}" 48 | if: failure() 49 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the Job List 2 | Thank you for your interest in contributing to the Coder Quad and Simplify new-grad job list! 3 | 4 | Below, you'll find the guidelines for our repository. If you have any questions, please create a [miscellaneous issue](https://github.com/haydenthai/New-Grad-2025/issues/new/choose). 5 | 6 | ## Finding a Job to Add 7 | We ask that the jobs openings that you add meet some requirements. Specifically, your posting must 8 | - be in one of the following categories: 9 | - software/computer engineering 10 | - computer/data science 11 | - product management 12 | - quant 13 | - any other tech-related field 14 | - be for recently graduated students 15 | - be located in the United States, Canada, or remote. 16 | - not already exist in the list. 17 | 18 | ## Adding a Job 19 | Cool! You're ready to add a job to the list. Follow these steps: 20 | 21 | 1) First create a new issue [here](https://github.com/haydenthai/New-Grad-2025/issues/new/choose). 22 | 2) Select the **New Role** issue template. 23 | 3) Fill in the information about your job opening into the form, then hit submit. 24 | > Please make a new submission for each unique position, **even if they are for the same company**. 25 | 4) That's it! Once a member of our team has reviewed your submission, it will be automatically added to the `README` 26 | 27 | ## Editing a Job 28 | To edit a job posting (changing name, setting as inactive, removing, etc.), follow these steps: 29 | 1) First copy the url of the job you would like to edit. 30 | > This can be found by right-clicking on the `APPLY` button and selecting **copy link address** 31 | 2) Create a new issue [here](https://github.com/haydenthai/New-Grad-2025/issues/new/choose). 32 | 3) Select the **Edit Role** issue template. 33 | 4) Fill in the url to the **link** input. 34 | > This is how we ensure your edit affects the correct job posting 35 | 5) Leave every other input blank except for whichever fields you would like to update or change about the role. 36 | 6) If it is not obvious why you are making these edits, please specify why in the reason box at the bottom of the form. 37 | 7) Hit submit. A member of our team will review your revision and approve it shortly. 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 2025 New Grad Positions 🎓 2 | 3 | Use this repo to share and keep track of entry-level software, tech, CS, PM, quant jobs for 2025 new graduates. 4 | 5 | 6 | Connect with other job seekers, share resources, and get support by joining our community [![Discord](https://img.shields.io/badge/Discord-7289DA?logo=discord&logoColor=white)](https://discord.gg/eEHrDcdZp7) server! 7 | 8 | --- 9 | ## The List 🚴🏔 10 | 11 | - 🛂 - Does NOT offer Sponsorship 12 | - 🇺🇸 - Requires U.S. Citizenship 13 | 14 | [⬇️ Jump to bottom ⬇️](https://github.com/haydenthai/New-Grad-2025#we-love-our-contributors-%EF%B8%8F%EF%B8%8F) 15 | 16 | 17 | | Company | Role | Location | Application/Link | Date Posted | 18 | | --- | --- | --- | :---: | :---: | 19 | | **Deutsche Bank** | Deutsche Bank Graduate Program - Technology, Data and Innovation (TDI) - New York 2025 | New York, NY | Apply | Aug 22 | 20 | | **Microsoft** | Software Engineer - Fullstack, Redmond | Redmond, WA | Apply | Aug 22 | 21 | | **Verkada** | Backend Software Engineer - University Graduate 2025 | San Mateo, CA | Apply | Aug 20 | 22 | | **Figma** | Software Engineer - Early Career (2025) | San Francisco, CA
New York, NY | Apply | Aug 20 | 23 | | **Chicago Trading Company** | 2025 Associate Engineer | Chicago, Illinois | Apply | Aug 19 | 24 | | **The Trade Desk** | Recent Graduate Software Engineer (2025 Start) | Bellevue, WA | Apply | Aug 15 | 25 | | **The Trade Desk** | Graduate Software Engineer (2025 Start) | San Francisco, CA | Apply | Aug 15 | 26 | | **IBM** | Entry Level Back End Developer: 2025 |
**5 locations**Tucson, AZ
San Jose, CA
Rochester, NY
Poughkeepsie, NY
Research Triangle Park, NC
| Apply | Aug 14 | 27 | | **IBM** | Entry Level Product Manager: 2025 |
**5 locations**Austin, TX
Lowell, NC
Durham, NC
Research Triangle Park, NC
Dallas, TX
| Apply | Aug 14 | 28 | | **NVIDIA** | Physical Design Engineer - New College Grad 2025 | Westford, MA
Westborough, MA | Apply | Aug 14 | 29 | | **Aquatic** | Quantitative Researcher, Early Career (2025) | Chicago, IL
New York, NY | Apply | Aug 14 | 30 | | **Point72** | Point72 Academy Investment Analyst Program for Upcoming Graduates (2025 – US) | Chicago, Florida, New York, San Francisco | Apply | Aug 14 | 31 | | **Belvedere** | Quantitative Trader - Entry Level 2025 | Chicago, IL | Apply | Aug 14 | 32 | | **Databricks** | Data Scientist - New Grad (2025 Start) (Masters/PhD only) | Mountain View, CA | Apply | Aug 14 | 33 | | **abbvie** | 2025 BTS Early Talent Program - Technical | North Chicago, IL | Apply | Aug 12 | 34 | | **US Bank** | 2025 Engineering Rotational Program | Hopkins, MN | Apply | Aug 12 | 35 | | **American Express** | Campus Undergraduate- 2025 Enterprise Strategy Full Time Analyst | New York, NY | Apply | Aug 12 | 36 | | **Geico** | Technology Development Program - Software Engineering 🛂 |
**5 locations**Chevy Chase, MD
Virginia Beach, VA
Poway, CA
North Liberty, IA
Katy, TX
| Apply | Aug 11 | 37 | | **Cargill** | Associate Software Engineer - Technology Development Program, Summer 2025 🛂 | Atlanta, GA | Apply | Aug 10 | 38 | | **Blackrock** | 2025 Full-Time Analyst Program - AMERS | Americas | Apply | Aug 10 | 39 | | **Belvedere** | Software Engineer - Entry Level 2025 | Chicago, IL | Apply | Aug 09 | 40 | | **BCG** | AI Software Engineer (Masters/PhD only) |
**12 locations**Boston, MA
Los Angeles, CA
Seattle, WA
San Francisco, CA
Manhattan Beach, CA
Dallas, TX
Miami, FL
Brooklyn, NY
New York, NY
Pittsburgh, PA
Washington, DC
Chicago, IL
| Apply | Aug 08 | 41 | | **Wells Fargo** | 2025 Analytics and Data Development Program – Early Careers 🛂 |
**5 locations**Charlotte, NC
Chandler, AZ
Dallas, TX
Minneapolis, MN
West Des Moines, IA
| Apply | Aug 08 | 42 | | **RVO Health** | 2025 Early Career Program: Software Engineering 🛂 | Charlotte, NC | Apply | Aug 08 | 43 | | **ByteDance** | Algorithm Engineer Graduate(IT-US)- 2025 Start (BS/MS) | San Jose, CA | Apply | Aug 07 | 44 | | **ByteDance** | Machine Learning Engineer Graduate (AML Algorithm) - 2025 Start (BS/MS) | San Jose, CA | Apply | Aug 07 | 45 | | **Seacorp** | New Engineering Graduates 2025 🇺🇸 | Middletown, RI | Apply | Aug 07 | 46 | | **Roblox** | [2025] Software Engineer - New Graduate 🛂 | San Matteo, CA | Apply | Aug 06 | 47 | | **Databricks** | Software Engineer - New Grad (2025 Start) | Mountain View, California | Apply | Aug 05 | 48 | | **Databricks** | Software Engineer - New Grad (2025 Start) | Bellevue, Washington | Apply | Aug 05 | 49 | | **Databricks** | Software Engineer - New Grad, Distributed Data Systems (2025 Start) | Mountain View, California | Apply | Aug 05 | 50 | | **Databricks** | Software Engineer - New Grad, Distributed Data Systems (2025 Start) | Bellevue, Washington | Apply | Aug 05 | 51 | | **Capital One** | Capital One Developer Academy Associate - 2025 (Non-CS Majors) 🛂 |
**4 locations**McLean, VA
Richmond, VA
New York, NY
Plano, TX
| Apply | Aug 05 | 52 | | **Northrop Grumman** | 2025 Entry Level Opportunities 🇺🇸 | Falls Church, Virginia | Apply | Aug 05 | 53 | | **Marshall Wace** | Technology Graduate Scheme 2025 - New York | New York, NY | Apply | Aug 02 | 54 | | **Goldman Sachs** | 2025 New Analyst Program | United States | Apply | Aug 02 | 55 | | **Five Rings** | Campus Full Time 2025 - Quantitative Trader | New York, NY | Apply | Aug 02 | 56 | | **Five Rings** | Campus Full Time 2025 - Quantitative Trader - Boca Raton | Boca Raton, FL | Apply | Aug 02 | 57 | | **Five Rings** | Campus Full Time 2025 - Software Developer - New York | New York, NY | Apply | Aug 02 | 58 | | **Johnson & Johnson** | Class of 2025 Technology Leadership Development Program (TLDP) – Full Time 🛂 |
**8 locations**New Brunswick, NJ
Jacksonville, FL
Raritan, NJ
Spring House, PA
Horsham, PA
Titusville, NJ
Providence, RI
Fort Washington, PA
| Apply | Aug 02 | 59 | | **Sentry** | Software Engineer, New Grad (2025) 🛂 | San Francisco, CA | Apply | Aug 01 | 60 | | **TikTok** | Data Engineer Graduate (Data Platform) - 2025 Start (BS/MS) | San Jose, CA | Apply | Aug 01 | 61 | | **TikTok** | Backend Software Engineer Graduate (TikTok Eng - Backend Online Infra Team) - 2025 Start (BS/MS) | San Jose, CA | Apply | Aug 01 | 62 | | **Vanguard** | Entry Level Application Engineer - 2025 Start Date 🛂 | Malvern, PA | Apply | Aug 01 | 63 | | **Vanguard** | Entry Level Application Engineer - 2025 Start Date 🛂 | Charlotte, NC | Apply | Aug 01 | 64 | | **Confluent** | 2025 Software Engineer | Austin, TX | Apply | Aug 01 | 65 | | **Ramp** | New Grad 2025: Software Engineer - Backend | New York, NY | Apply | Jul 31 | 66 | | **Ramp** | New Grad 2025: Software Engineer - Frontend | New York, NY | Apply | Jul 31 | 67 | | **TikTok** | Software Engineer Graduate - (Experimentation and Evaluation Graduate)- 2025 Start (BS/MS) | San Jose, CA | Apply | Jul 30 | 68 | | **ByteDance** | Mobile Software Engineer Graduate (Global E-commerce-US) - 2025 Start (BS/MS) | San Jose, CA | Apply | Jul 30 | 69 | | **TikTok** | Machine Learning Engineer - CV/NLP/Multimodal LLM (Trust and Safety) - 2025 Start (Master/Bachelor) | San Jose, CA | Apply | Jul 29 | 70 | | **Honeywell** | Project Engineer I (Recent Grad/Full Time) 🇺🇸 | Fort Washington, Pennsylvania | Apply | Jul 28 | 71 | | **ByteDance** | Software Engineer Graduate (Applied Machine Learning - Engine) - 2025 Start (PhD) | San Jose, CA | Apply | Jul 28 | 72 | | **Navan** | University 2024 Graduate - Software Engineer (Back-End) | Palo Alto, CA | Apply | Jul 27 | 73 | | **Twilio** | Software Engineer - New Graduate (2024 Recent Grads) | Remote, US | Apply | Jul 27 | 74 | | **The Walt Disney Company** | Software Engineer I | New York, NY
Santa Monica, CA
Seattle, WA | Apply | Jul 27 | 75 | | **Apple** | IS&T Early Career Software Engineer Opportunities | Cupertino, CA | Apply | Jul 26 | 76 | | **Medallion** | Software Engineer, New Grad | Remote, US | Apply | Jul 26 | 77 | | **TikTok** | Software Engineer Graduate (TikTok LIVE Foundation) - 2025 Start | San Jose, CA | Apply | Jul 25 | 78 | | **Adobe** | 2025 University Graduate - Software Development Engineer | San Jose, CA | Apply | Jul 25 | 79 | | **Tiktok** | Software Engineer Graduate (Intelligent Creation Mobile) - 2025 Start (BS/MS) | San Jose, CA | Apply | Jul 25 | 80 | | **Tiktok** | Machine Learning Engineer 2025 Start (TikTok Recommendation) | San Jose, CA | Apply | Jul 24 | 81 | | **Blue Origin** | Software Engineer Early Career - Verification 🇺🇸 | Seattle, WA | Apply | Jul 23 | 82 | | **Optiver** | Graduate Software Engineer (2025 Start – Chicago) | Chicago, IL | Apply | Jul 23 | 83 | | **[Jerry](https://simplify.jobs/c/Jerry)** | New Graduate Software Engineer | Palo Alto, CA | Apply | Jul 23 | 84 | | **ByteDance** | Software Engineer Graduate (AML- Engine) - 2025 Start (BS/MS) | San Jose, CA | Apply | Jul 23 | 85 | | **TikTok** | Software Engineer Graduate (TikTok Short Video) - 2025 Start (Bachelors/Master) | Seattle, WA | Apply | Jul 23 | 86 | | **TikTok** | Software Engineer Graduate (TikTok Short Video) - 2025 Start (Bachelors/Master) | San Jose, CA | Apply | Jul 23 | 87 | | **Axle Health** | Software Engineer (New Grad) | Los Angeles, CA | Apply | Jul 22 | 88 | | **NVIDIA** | Developer Technology Engineer, AI - New College Graduate 2024 (MS/PhD Only) |
**6 locations**Santa Clara, CA
Austin, TX
Durham, NC
Redmond, WA
Salt Lake City, UT
Boulder, CO
| Apply | Jul 21 | 89 | | **Verkada** | Embedded Software Engineer - University Graduate 2024 | San Mateo, CA | Apply | Jul 21 | 90 | | **IMC** | Graduate Software Engineer | Chicago, IL | Apply | Jul 20 | 91 | | **Akuna Capital** | Software Engineer (Entry-Level) - C++ | Chicago, IL | Apply | Jul 17 | 92 | | **Tesla** | Software Engineer, Correctness & Reliability | Palo Alto, CA | Apply | Jul 14 | 93 | | **AMD** | ML Compiler Software Development Engineer | San Jose, CA | Apply | Jul 14 | 94 | | **General Dynamics** | Software Engineer 🇺🇸 | Manassas, VA | Apply | Jul 14 | 95 | | **Google** | Software Engineer, AI/Machine Learning |
**13 locations**Mountain View, CA
Austin, TX
Boulder, CO
Cambridge, MA
Kirkland, WA
Los Angeles, CA
New York, NY
Raleigh, NC
Durham, NC
San Bruno, CA
Seattle, WA
San Francisco, CA
Sunnyvale, CA
| Apply | Jul 12 | 96 | | **Comcast** | Jr. DevOps Engineer | Englewood, CO
Philadelphia, PA | Apply | Jul 11 | 97 | | **Jane Street** | Software Engineer | New York, NY | Apply | Jul 11 | 98 | | **Jane Street** | Front End Software Engineer | New York, NY | Apply | Jul 11 | 99 | | **Pure Storage** | Software Engineer Grad, Hyperscale | Santa Clara, CA | Apply | Jul 11 | 100 | | **ElectronX** | New Grad: Software Engineer | New York, NY
Chicago, IL | Apply | Jul 11 | 101 | | **SIG** | Network Engineer | Bala Cynwyd, PA | Apply | Jul 11 | 102 | | **TikTok** | iOS Software Engineer | San Jose, CA | Apply | Jul 10 | 103 | | **SpaceX** | Software Engineer, Flight Software | Hawthorne, CA | Apply | Jul 10 | 104 | | **Radley James** | Junior C++ Engineer | San Francisco, CA | Apply | Jul 10 | 105 | | **OpenAI** | Software Engineer, Backend | San Francisco, CA | Apply | Jul 10 | 106 | | **Warp** | Software Engineer | Remote US & Canada | Apply | Jul 10 | 107 | | **Citadel** | Software Engineer | Chicago,IL
Miami, FL
New York, NY | Apply | Jul 09 | 108 | | **Adobe** | Machine Learning Engineer - Masters/PhD | San Jose, CA | Apply | Jul 09 | 109 | | **Old Mission Capital** | Junior Quant Trader | Chicago, IL | Apply | Jul 09 | 110 | | **Old Mission Capital** | Junior Software Engineer | Chicago, IL | Apply | Jul 09 | 111 | | **DRW** | Software Developer | Chicago, IL | Apply | Jul 09 | 112 | | **Google** | User Experience Designer, Early Career | Mountain View, CA
San Francisco, CA | Apply | Jul 09 | 113 | | **Optiver** | Graduate Software Engineer (2025 Start – Austin) | Austin, TX | Apply | Jul 09 | 114 | | **Capital One** | Business Analyst Associate |
**5 locations**McLean, Virginia
Richmond, Virginia
Plano, Texas
New York, New York
Chicago, Illinois
| Apply | Jul 08 | 115 | | **Ramp** | Software Engineer - Frontend | New York, NY | Apply | Jul 07 | 116 | | **Citadel Securities** | Software Engineer – 2025 University Graduate (US) | Miami, FL
New York, NY | Apply | Jul 05 | 117 | | **JPMorgan Chase** | 2025 Software Engineer Program 🛂 |
**12 locations**Atlanta, GA
Austin, TX
Chicago, IL
Columbus, OH
Houston, TX
Jersey City, NJ
New York, NY
Palo Alto, CA
Plano, TX
Seattle, WA
Tampa, FL
Wilmington, DE
| Apply | Jul 05 | 118 | | **[Jerry](https://simplify.jobs/c/Jerry)** | Software Engineer I - Toronto | Toronto, ON, Canada | Apply | Jul 05 | 119 | | **[CesiumAstro](https://simplify.jobs/c/CesiumAstro)** | Embedded Software Engineer I | Austin, TX | Apply | Jul 02 | 120 | | **[Salesforce](https://simplify.jobs/c/Salesforce)** | Software Engineering AMTS/MTS – New Grad |
**11 locations**Cambridge, MA
Seattle, WA
Indianapolis, IN
SF
Remote in USA
McLean, VA
Chicago, IL
NYC
Bellevue, WA
Atlanta, GA
Burlington, MA
| Apply | Jul 01 | 121 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | Palo Alto, CA | Apply | Jul 01 | 122 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | Washington, DC | Apply | Jul 01 | 123 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | NYC | Apply | Jul 01 | 124 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Forward Deployed Software Engineer – New Grad - US Government | Washington, DC | Apply | Jul 01 | 125 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Forward Deployed Software Engineer – New Grad - US Government | NYC | Apply | Jul 01 | 126 | | **[Sunshine](https://simplify.jobs/c/Sunshine)** | Software Engineer – New College Grad | Palo Alto, CA | Apply | Jun 27 | 127 | | **[IXL Learning](https://simplify.jobs/c/IXL-Learning)** | Software Engineer – New Grad | San Mateo, CA | Apply | Jun 27 | 128 | | **[Axios](https://simplify.jobs/c/Axios)** | Data Engineer I | Remote in USA | Apply | Jun 27 | 129 | | **[Aquatic Capital Management](https://simplify.jobs/c/Aquatic-Capital-Management)** | Quantitative Researcher – Early Career - 2025 | Chicago, IL
NYC | Apply | Jun 25 | 130 | | **Amazon** | Software Development Enginner - New Grad (2024) | Seattle, WA | Apply | Jun 24 | 131 | | **[Aquatic Capital Management](https://simplify.jobs/c/Aquatic-Capital-Management)** | Software Engineer – Data: Early Career - 2024 | Chicago, IL
NYC | Apply | Jun 18 | 132 | | **[Iterative Health](https://simplify.jobs/c/Iterative-Health)** | Software Engineer I - Backend - Future Openings | Remote in USA | Apply | Jun 18 | 133 | | **[Replo](https://simplify.jobs/c/Replo)** | Software Engineer – New Grad | SF | Apply | Jun 13 | 134 | | **[Search Discovery](https://simplify.jobs/c/SearchDiscovery)** | Data Engineer I | Cleveland, OH | Apply | Jun 12 | 135 | | **[Autotrader.ca](https://simplify.jobs/c/AutoTrader-CA)** | Junior Android Engineer | Toronto, ON, Canada | Apply | Jun 10 | 136 | | **[Konrad Group](https://simplify.jobs/c/Konrad-Group)** | Mobile Developer – Entry Level | Toronto, ON, Canada | Apply | Jun 06 | 137 | | **[OpenEye](https://simplify.jobs/c/OpenEye)** | Software Engineer I | Liberty Lake, WA | Apply | May 31 | 138 | | **[Splunk](https://simplify.jobs/c/Splunk)** | Software Engineer - Early in Career - Frontend | Vancouver, BC, Canada | Apply | May 28 | 139 | | **Magna** | Software Engineer – New Grad | NYC | Apply | May 21 | 140 | | **[Veeva Systems](https://simplify.jobs/c/Veeva-Systems)** | Associate Software Engineer – Seeking 2024 Grads | Toronto, ON, Canada | Apply | May 15 | 141 | | **Arsiem Corporation** | Software Engineer 0 | Annapolis Junction, MD | Apply | May 10 | 142 | | **[Splunk](https://simplify.jobs/c/Splunk)** | Software Engineer - Early in Career - Frontend | Colorado
North Carolina | Apply | May 06 | 143 | | **Arsiem Corporation** | Software Engineer 0 | Annapolis Junction, MD | Apply | May 03 | 144 | 145 | 146 | [⬆️ Back to Top ⬆️](https://github.com/haydenthai/New-Grad-2025#the-list-) 147 | 148 | 149 | ## We love our contributors ❤️❤️ 150 | 151 | Contribute by submitting an [issue](https://github.com/haydenthai/New-Grad-2025/issues/new/choose)! 152 | 153 | 154 | 155 | --------------------------------------------------------------------------------