├── .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'
'
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 [](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 |
| Aug 22 |
20 | | **Microsoft** | Software Engineer - Fullstack, Redmond | Redmond, WA |
| Aug 22 |
21 | | **Verkada** | Backend Software Engineer - University Graduate 2025 | San Mateo, CA |
| Aug 20 |
22 | | **Figma** | Software Engineer - Early Career (2025) | San Francisco, CANew York, NY |
| Aug 20 |
23 | | **Chicago Trading Company** | 2025 Associate Engineer | Chicago, Illinois |
| Aug 19 |
24 | | **The Trade Desk** | Recent Graduate Software Engineer (2025 Start) | Bellevue, WA |
| Aug 15 |
25 | | **The Trade Desk** | Graduate Software Engineer (2025 Start) | San Francisco, CA |
| Aug 15 |
26 | | **IBM** | Entry Level Back End Developer: 2025 | **5 locations**
Tucson, AZSan Jose, CARochester, NYPoughkeepsie, NYResearch Triangle Park, NC |
| Aug 14 |
27 | | **IBM** | Entry Level Product Manager: 2025 | **5 locations**
Austin, TXLowell, NCDurham, NCResearch Triangle Park, NCDallas, TX |
| Aug 14 |
28 | | **NVIDIA** | Physical Design Engineer - New College Grad 2025 | Westford, MAWestborough, MA |
| Aug 14 |
29 | | **Aquatic** | Quantitative Researcher, Early Career (2025) | Chicago, ILNew York, NY |
| Aug 14 |
30 | | **Point72** | Point72 Academy Investment Analyst Program for Upcoming Graduates (2025 – US) | Chicago, Florida, New York, San Francisco |
| Aug 14 |
31 | | **Belvedere** | Quantitative Trader - Entry Level 2025 | Chicago, IL |
| Aug 14 |
32 | | **Databricks** | Data Scientist - New Grad (2025 Start) (Masters/PhD only) | Mountain View, CA |
| Aug 14 |
33 | | **abbvie** | 2025 BTS Early Talent Program - Technical | North Chicago, IL |
| Aug 12 |
34 | | **US Bank** | 2025 Engineering Rotational Program | Hopkins, MN |
| Aug 12 |
35 | | **American Express** | Campus Undergraduate- 2025 Enterprise Strategy Full Time Analyst | New York, NY |
| Aug 12 |
36 | | **Geico** | Technology Development Program - Software Engineering 🛂 | **5 locations**
Chevy Chase, MDVirginia Beach, VAPoway, CANorth Liberty, IAKaty, TX |
| Aug 11 |
37 | | **Cargill** | Associate Software Engineer - Technology Development Program, Summer 2025 🛂 | Atlanta, GA |
| Aug 10 |
38 | | **Blackrock** | 2025 Full-Time Analyst Program - AMERS | Americas |
| Aug 10 |
39 | | **Belvedere** | Software Engineer - Entry Level 2025 | Chicago, IL |
| Aug 09 |
40 | | **BCG** | AI Software Engineer (Masters/PhD only) | **12 locations**
Boston, MALos Angeles, CASeattle, WASan Francisco, CAManhattan Beach, CADallas, TXMiami, FLBrooklyn, NYNew York, NYPittsburgh, PAWashington, DCChicago, IL |
| Aug 08 |
41 | | **Wells Fargo** | 2025 Analytics and Data Development Program – Early Careers 🛂 | **5 locations**
Charlotte, NCChandler, AZDallas, TXMinneapolis, MNWest Des Moines, IA |
| Aug 08 |
42 | | **RVO Health** | 2025 Early Career Program: Software Engineering 🛂 | Charlotte, NC |
| Aug 08 |
43 | | **ByteDance** | Algorithm Engineer Graduate(IT-US)- 2025 Start (BS/MS) | San Jose, CA |
| Aug 07 |
44 | | **ByteDance** | Machine Learning Engineer Graduate (AML Algorithm) - 2025 Start (BS/MS) | San Jose, CA |
| Aug 07 |
45 | | **Seacorp** | New Engineering Graduates 2025 🇺🇸 | Middletown, RI |
| Aug 07 |
46 | | **Roblox** | [2025] Software Engineer - New Graduate 🛂 | San Matteo, CA |
| Aug 06 |
47 | | **Databricks** | Software Engineer - New Grad (2025 Start) | Mountain View, California |
| Aug 05 |
48 | | **Databricks** | Software Engineer - New Grad (2025 Start) | Bellevue, Washington |
| Aug 05 |
49 | | **Databricks** | Software Engineer - New Grad, Distributed Data Systems (2025 Start) | Mountain View, California |
| Aug 05 |
50 | | **Databricks** | Software Engineer - New Grad, Distributed Data Systems (2025 Start) | Bellevue, Washington |
| Aug 05 |
51 | | **Capital One** | Capital One Developer Academy Associate - 2025 (Non-CS Majors) 🛂 | **4 locations**
McLean, VARichmond, VANew York, NYPlano, TX |
| Aug 05 |
52 | | **Northrop Grumman** | 2025 Entry Level Opportunities 🇺🇸 | Falls Church, Virginia |
| Aug 05 |
53 | | **Marshall Wace** | Technology Graduate Scheme 2025 - New York | New York, NY |
| Aug 02 |
54 | | **Goldman Sachs** | 2025 New Analyst Program | United States |
| Aug 02 |
55 | | **Five Rings** | Campus Full Time 2025 - Quantitative Trader | New York, NY |
| Aug 02 |
56 | | **Five Rings** | Campus Full Time 2025 - Quantitative Trader - Boca Raton | Boca Raton, FL |
| Aug 02 |
57 | | **Five Rings** | Campus Full Time 2025 - Software Developer - New York | New York, NY |
| Aug 02 |
58 | | **Johnson & Johnson** | Class of 2025 Technology Leadership Development Program (TLDP) – Full Time 🛂 | **8 locations**
New Brunswick, NJJacksonville, FLRaritan, NJSpring House, PAHorsham, PATitusville, NJProvidence, RIFort Washington, PA |
| Aug 02 |
59 | | **Sentry** | Software Engineer, New Grad (2025) 🛂 | San Francisco, CA |
| Aug 01 |
60 | | **TikTok** | Data Engineer Graduate (Data Platform) - 2025 Start (BS/MS) | San Jose, CA |
| Aug 01 |
61 | | **TikTok** | Backend Software Engineer Graduate (TikTok Eng - Backend Online Infra Team) - 2025 Start (BS/MS) | San Jose, CA |
| Aug 01 |
62 | | **Vanguard** | Entry Level Application Engineer - 2025 Start Date 🛂 | Malvern, PA |
| Aug 01 |
63 | | **Vanguard** | Entry Level Application Engineer - 2025 Start Date 🛂 | Charlotte, NC |
| Aug 01 |
64 | | **Confluent** | 2025 Software Engineer | Austin, TX |
| Aug 01 |
65 | | **Ramp** | New Grad 2025: Software Engineer - Backend | New York, NY |
| Jul 31 |
66 | | **Ramp** | New Grad 2025: Software Engineer - Frontend | New York, NY |
| Jul 31 |
67 | | **TikTok** | Software Engineer Graduate - (Experimentation and Evaluation Graduate)- 2025 Start (BS/MS) | San Jose, CA |
| Jul 30 |
68 | | **ByteDance** | Mobile Software Engineer Graduate (Global E-commerce-US) - 2025 Start (BS/MS) | San Jose, CA |
| Jul 30 |
69 | | **TikTok** | Machine Learning Engineer - CV/NLP/Multimodal LLM (Trust and Safety) - 2025 Start (Master/Bachelor) | San Jose, CA |
| Jul 29 |
70 | | **Honeywell** | Project Engineer I (Recent Grad/Full Time) 🇺🇸 | Fort Washington, Pennsylvania |
| Jul 28 |
71 | | **ByteDance** | Software Engineer Graduate (Applied Machine Learning - Engine) - 2025 Start (PhD) | San Jose, CA |
| Jul 28 |
72 | | **Navan** | University 2024 Graduate - Software Engineer (Back-End) | Palo Alto, CA |
| Jul 27 |
73 | | **Twilio** | Software Engineer - New Graduate (2024 Recent Grads) | Remote, US |
| Jul 27 |
74 | | **The Walt Disney Company** | Software Engineer I | New York, NYSanta Monica, CASeattle, WA |
| Jul 27 |
75 | | **Apple** | IS&T Early Career Software Engineer Opportunities | Cupertino, CA |
| Jul 26 |
76 | | **Medallion** | Software Engineer, New Grad | Remote, US |
| Jul 26 |
77 | | **TikTok** | Software Engineer Graduate (TikTok LIVE Foundation) - 2025 Start | San Jose, CA |
| Jul 25 |
78 | | **Adobe** | 2025 University Graduate - Software Development Engineer | San Jose, CA |
| Jul 25 |
79 | | **Tiktok** | Software Engineer Graduate (Intelligent Creation Mobile) - 2025 Start (BS/MS) | San Jose, CA |
| Jul 25 |
80 | | **Tiktok** | Machine Learning Engineer 2025 Start (TikTok Recommendation) | San Jose, CA |
| Jul 24 |
81 | | **Blue Origin** | Software Engineer Early Career - Verification 🇺🇸 | Seattle, WA |
| Jul 23 |
82 | | **Optiver** | Graduate Software Engineer (2025 Start – Chicago) | Chicago, IL |
| Jul 23 |
83 | | **[Jerry](https://simplify.jobs/c/Jerry)** | New Graduate Software Engineer | Palo Alto, CA |
| Jul 23 |
84 | | **ByteDance** | Software Engineer Graduate (AML- Engine) - 2025 Start (BS/MS) | San Jose, CA |
| Jul 23 |
85 | | **TikTok** | Software Engineer Graduate (TikTok Short Video) - 2025 Start (Bachelors/Master) | Seattle, WA |
| Jul 23 |
86 | | **TikTok** | Software Engineer Graduate (TikTok Short Video) - 2025 Start (Bachelors/Master) | San Jose, CA |
| Jul 23 |
87 | | **Axle Health** | Software Engineer (New Grad) | Los Angeles, CA |
| Jul 22 |
88 | | **NVIDIA** | Developer Technology Engineer, AI - New College Graduate 2024 (MS/PhD Only) | **6 locations**
Santa Clara, CAAustin, TXDurham, NCRedmond, WASalt Lake City, UTBoulder, CO |
| Jul 21 |
89 | | **Verkada** | Embedded Software Engineer - University Graduate 2024 | San Mateo, CA |
| Jul 21 |
90 | | **IMC** | Graduate Software Engineer | Chicago, IL |
| Jul 20 |
91 | | **Akuna Capital** | Software Engineer (Entry-Level) - C++ | Chicago, IL |
| Jul 17 |
92 | | **Tesla** | Software Engineer, Correctness & Reliability | Palo Alto, CA |
| Jul 14 |
93 | | **AMD** | ML Compiler Software Development Engineer | San Jose, CA |
| Jul 14 |
94 | | **General Dynamics** | Software Engineer 🇺🇸 | Manassas, VA |
| Jul 14 |
95 | | **Google** | Software Engineer, AI/Machine Learning | **13 locations**
Mountain View, CAAustin, TXBoulder, COCambridge, MAKirkland, WALos Angeles, CANew York, NYRaleigh, NCDurham, NCSan Bruno, CASeattle, WASan Francisco, CASunnyvale, CA |
| Jul 12 |
96 | | **Comcast** | Jr. DevOps Engineer | Englewood, COPhiladelphia, PA |
| Jul 11 |
97 | | **Jane Street** | Software Engineer | New York, NY |
| Jul 11 |
98 | | **Jane Street** | Front End Software Engineer | New York, NY |
| Jul 11 |
99 | | **Pure Storage** | Software Engineer Grad, Hyperscale | Santa Clara, CA |
| Jul 11 |
100 | | **ElectronX** | New Grad: Software Engineer | New York, NYChicago, IL |
| Jul 11 |
101 | | **SIG** | Network Engineer | Bala Cynwyd, PA |
| Jul 11 |
102 | | **TikTok** | iOS Software Engineer | San Jose, CA |
| Jul 10 |
103 | | **SpaceX** | Software Engineer, Flight Software | Hawthorne, CA |
| Jul 10 |
104 | | **Radley James** | Junior C++ Engineer | San Francisco, CA |
| Jul 10 |
105 | | **OpenAI** | Software Engineer, Backend | San Francisco, CA |
| Jul 10 |
106 | | **Warp** | Software Engineer | Remote US & Canada |
| Jul 10 |
107 | | **Citadel** | Software Engineer | Chicago,ILMiami, FLNew York, NY |
| Jul 09 |
108 | | **Adobe** | Machine Learning Engineer - Masters/PhD | San Jose, CA |
| Jul 09 |
109 | | **Old Mission Capital** | Junior Quant Trader | Chicago, IL |
| Jul 09 |
110 | | **Old Mission Capital** | Junior Software Engineer | Chicago, IL |
| Jul 09 |
111 | | **DRW** | Software Developer | Chicago, IL |
| Jul 09 |
112 | | **Google** | User Experience Designer, Early Career | Mountain View, CASan Francisco, CA |
| Jul 09 |
113 | | **Optiver** | Graduate Software Engineer (2025 Start – Austin) | Austin, TX |
| Jul 09 |
114 | | **Capital One** | Business Analyst Associate | **5 locations**
McLean, VirginiaRichmond, VirginiaPlano, TexasNew York, New YorkChicago, Illinois |
| Jul 08 |
115 | | **Ramp** | Software Engineer - Frontend | New York, NY |
| Jul 07 |
116 | | **Citadel Securities** | Software Engineer – 2025 University Graduate (US) | Miami, FLNew York, NY |
| Jul 05 |
117 | | **JPMorgan Chase** | 2025 Software Engineer Program 🛂 | **12 locations**
Atlanta, GAAustin, TXChicago, ILColumbus, OHHouston, TXJersey City, NJNew York, NYPalo Alto, CAPlano, TXSeattle, WATampa, FLWilmington, DE |
| Jul 05 |
118 | | **[Jerry](https://simplify.jobs/c/Jerry)** | Software Engineer I - Toronto | Toronto, ON, Canada |
| Jul 05 |
119 | | **[CesiumAstro](https://simplify.jobs/c/CesiumAstro)** | Embedded Software Engineer I | Austin, TX |
| Jul 02 |
120 | | **[Salesforce](https://simplify.jobs/c/Salesforce)** | Software Engineering AMTS/MTS – New Grad | **11 locations**
Cambridge, MASeattle, WAIndianapolis, INSFRemote in USAMcLean, VAChicago, ILNYCBellevue, WAAtlanta, GABurlington, MA |
| Jul 01 |
121 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | Palo Alto, CA |
| Jul 01 |
122 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | Washington, DC |
| Jul 01 |
123 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Software Engineer – New Grad - US Government | NYC |
| Jul 01 |
124 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Forward Deployed Software Engineer – New Grad - US Government | Washington, DC |
| Jul 01 |
125 | | **[Palantir](https://simplify.jobs/c/Palantir)** | Forward Deployed Software Engineer – New Grad - US Government | NYC |
| Jul 01 |
126 | | **[Sunshine](https://simplify.jobs/c/Sunshine)** | Software Engineer – New College Grad | Palo Alto, CA |
| Jun 27 |
127 | | **[IXL Learning](https://simplify.jobs/c/IXL-Learning)** | Software Engineer – New Grad | San Mateo, CA |
| Jun 27 |
128 | | **[Axios](https://simplify.jobs/c/Axios)** | Data Engineer I | Remote in USA |
| Jun 27 |
129 | | **[Aquatic Capital Management](https://simplify.jobs/c/Aquatic-Capital-Management)** | Quantitative Researcher – Early Career - 2025 | Chicago, ILNYC |
| Jun 25 |
130 | | **Amazon** | Software Development Enginner - New Grad (2024) | Seattle, WA |
| Jun 24 |
131 | | **[Aquatic Capital Management](https://simplify.jobs/c/Aquatic-Capital-Management)** | Software Engineer – Data: Early Career - 2024 | Chicago, ILNYC |
| Jun 18 |
132 | | **[Iterative Health](https://simplify.jobs/c/Iterative-Health)** | Software Engineer I - Backend - Future Openings | Remote in USA |
| Jun 18 |
133 | | **[Replo](https://simplify.jobs/c/Replo)** | Software Engineer – New Grad | SF |
| Jun 13 |
134 | | **[Search Discovery](https://simplify.jobs/c/SearchDiscovery)** | Data Engineer I | Cleveland, OH |
| Jun 12 |
135 | | **[Autotrader.ca](https://simplify.jobs/c/AutoTrader-CA)** | Junior Android Engineer | Toronto, ON, Canada |
| Jun 10 |
136 | | **[Konrad Group](https://simplify.jobs/c/Konrad-Group)** | Mobile Developer – Entry Level | Toronto, ON, Canada |
| Jun 06 |
137 | | **[OpenEye](https://simplify.jobs/c/OpenEye)** | Software Engineer I | Liberty Lake, WA |
| May 31 |
138 | | **[Splunk](https://simplify.jobs/c/Splunk)** | Software Engineer - Early in Career - Frontend | Vancouver, BC, Canada |
| May 28 |
139 | | **Magna** | Software Engineer – New Grad | NYC |
| May 21 |
140 | | **[Veeva Systems](https://simplify.jobs/c/Veeva-Systems)** | Associate Software Engineer – Seeking 2024 Grads | Toronto, ON, Canada |
| May 15 |
141 | | **Arsiem Corporation** | Software Engineer 0 | Annapolis Junction, MD |
| May 10 |
142 | | **[Splunk](https://simplify.jobs/c/Splunk)** | Software Engineer - Early in Career - Frontend | ColoradoNorth Carolina |
| May 06 |
143 | | **Arsiem Corporation** | Software Engineer 0 | Annapolis Junction, MD |
| 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 |
--------------------------------------------------------------------------------