arbabarshad commited on
Commit
962a1a2
·
1 Parent(s): ef4285a

small fix

Browse files
Files changed (3) hide show
  1. app.py +143 -33
  2. jobs-applied-for.txt +164 -0
  3. templates/Arbab - Resume.tex +1 -1
app.py CHANGED
@@ -15,6 +15,7 @@ dotenv.load_dotenv()
15
  # Constants
16
  DEFAULT_TEMPLATE_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates", "Arbab - Resume.tex")
17
  OUTPUT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "outputs")
 
18
 
19
  # Ensure output directory exists
20
  os.makedirs(OUTPUT_DIR, exist_ok=True)
@@ -80,6 +81,7 @@ Basically we are preparing this resume for the person who will be hiring. So the
80
  If the role is more applied and industry focused and does not mention about publications, you can skip publications and instead focus in why hire me section that i have multiple industry internships And most of my PhD projects have applied applications and give short and concise and crucial justification for that (you can remove the publications section). But if the role is more research focused you can focus on the research publication and mention that I have published in NeurIPS and WACV and keep the final publication section as well .
81
  Importantly, You can completely get rid of few things which are not directly related. For example, you can completely get rid of your research papers or a few bullet points completely but if you are writing something then write that completely. You can skip about 20% of the things in the resume. Be strategic about where to reduce text from. Do not just text a little little from all the places. Instead, be strategic and cut brutally from some places which are not contributing as much to the final resume for this job.
82
  FORMAT YOUR RESPONSE AS CLEAN LATEX CODE WITH NO EXPLANATIONS OR CODE BLOCKS.
 
83
  """
84
 
85
  try:
@@ -110,6 +112,64 @@ FORMAT YOUR RESPONSE AS CLEAN LATEX CODE WITH NO EXPLANATIONS OR CODE BLOCKS.
110
  # Return error message instead of original content
111
  raise ValueError(f"Error occurred: {str(e)}")
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  def create_customized_resume(api_key, job_description):
114
  """Create a customized resume based on the job description."""
115
  if not api_key.strip():
@@ -166,43 +226,93 @@ def convert_to_pdf(tex_path):
166
  # Define the Gradio interface
167
  def create_interface():
168
  with gr.Blocks(title="Resume Customizer") as app:
169
- gr.Markdown("# Resume Customizer")
170
- gr.Markdown("Enter a job description to generate a fully customized resume tailored to the position.")
171
-
172
- with gr.Row():
173
- with gr.Column():
174
- api_key = gr.Textbox(
175
- label="OpenAI API Key",
176
- placeholder="Enter your OpenAI API key",
177
- type="password"
178
- )
179
 
180
- job_description = gr.Textbox(
181
- label="Job Description",
182
- placeholder="Paste the job description here...",
183
- lines=10
184
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
 
186
- customize_btn = gr.Button("Customize Resume")
 
 
 
 
 
 
 
 
 
 
 
 
 
187
 
188
- with gr.Column():
189
- pdf_output = gr.File(label="Download Resume")
190
- status_text = gr.Textbox(label="Status", interactive=False)
191
-
192
- customize_btn.click(
193
- fn=create_customized_resume,
194
- inputs=[api_key, job_description],
195
- outputs=[pdf_output, status_text]
196
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
- gr.Markdown("""
199
- ## How to Use
200
- 1. Enter your OpenAI API key
201
- 2. Paste a job description in the text area
202
- 3. Click "Customize Resume"
203
- 4. Wait for the AI to tailor your entire resume to match the job requirements
204
- 5. Download the customized resume PDF
205
- """)
206
 
207
  return app
208
 
 
15
  # Constants
16
  DEFAULT_TEMPLATE_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates", "Arbab - Resume.tex")
17
  OUTPUT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "outputs")
18
+ DEFAULT_JOBS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "jobs-applied-for.txt")
19
 
20
  # Ensure output directory exists
21
  os.makedirs(OUTPUT_DIR, exist_ok=True)
 
81
  If the role is more applied and industry focused and does not mention about publications, you can skip publications and instead focus in why hire me section that i have multiple industry internships And most of my PhD projects have applied applications and give short and concise and crucial justification for that (you can remove the publications section). But if the role is more research focused you can focus on the research publication and mention that I have published in NeurIPS and WACV and keep the final publication section as well .
82
  Importantly, You can completely get rid of few things which are not directly related. For example, you can completely get rid of your research papers or a few bullet points completely but if you are writing something then write that completely. You can skip about 20% of the things in the resume. Be strategic about where to reduce text from. Do not just text a little little from all the places. Instead, be strategic and cut brutally from some places which are not contributing as much to the final resume for this job.
83
  FORMAT YOUR RESPONSE AS CLEAN LATEX CODE WITH NO EXPLANATIONS OR CODE BLOCKS.
84
+ Keep all the projects in the projects section, do not remove any of them.
85
  """
86
 
87
  try:
 
112
  # Return error message instead of original content
113
  raise ValueError(f"Error occurred: {str(e)}")
114
 
115
+ def find_relevant_jobs(api_key, job_description, jobs_list=None):
116
+ """Find the most relevant jobs from a list based on the job description."""
117
+ if not api_key.strip():
118
+ return "Please provide an OpenAI API key"
119
+
120
+ try:
121
+ client = get_openai_client(api_key)
122
+
123
+ # Use default jobs list if none provided
124
+ if not jobs_list or jobs_list.strip() == "":
125
+ try:
126
+ with open(DEFAULT_JOBS_PATH, "r") as f:
127
+ jobs_list = f.read()
128
+ except Exception as e:
129
+ return f"Error reading default jobs list: {str(e)}"
130
+
131
+ # LinkedIn jobs link to include in the search
132
+ linkedin_jobs_link = "https://www.linkedin.com/jobs/search/?currentJobId=4212868961&f_E=2%2C3%2C4&f_TPR=r86400&geoId=102095887&keywords=(machine%20learning)%20OR%20(software%20engineer)&origin=JOB_SEARCH_PAGE_JOB_FILTER&refresh=true&sortBy=R&spellCorrectionEnabled=true"
133
+
134
+ # Create the prompt for OpenAI
135
+ prompt = f"""
136
+ Given the following job description and a list of job positions, identify the top 5 most relevant jobs from the list.
137
+
138
+ Job Description:
139
+ {job_description}
140
+
141
+ Available Jobs List:
142
+ {jobs_list}
143
+
144
+ Additionally, consider checking recent job postings from LinkedIn:
145
+ {linkedin_jobs_link}
146
+
147
+ Return only the top 5 most relevant jobs in this format:
148
+ 1. [Company Name] - [Position Title] (Relevance Score: X/10)
149
+ 2. [Company Name] - [Position Title] (Relevance Score: X/10)
150
+ 3. [Company Name] - [Position Title] (Relevance Score: X/10)
151
+ 4. [Company Name] - [Position Title] (Relevance Score: X/10)
152
+ 5. [Company Name] - [Position Title] (Relevance Score: X/10)
153
+
154
+ For each job, briefly explain in 1-2 sentences why it's relevant to the job description.
155
+ """
156
+
157
+ response = client.chat.completions.create(
158
+ model="gpt-4.1",
159
+ messages=[
160
+ {"role": "system", "content": "You are a job matching assistant that identifies the most relevant jobs based on a job description."},
161
+ {"role": "user", "content": prompt}
162
+ ],
163
+ temperature=0.3,
164
+ max_tokens=1000
165
+ )
166
+
167
+ # Return the response
168
+ return response.choices[0].message.content.strip()
169
+
170
+ except Exception as e:
171
+ return f"Error finding relevant jobs: {str(e)}"
172
+
173
  def create_customized_resume(api_key, job_description):
174
  """Create a customized resume based on the job description."""
175
  if not api_key.strip():
 
226
  # Define the Gradio interface
227
  def create_interface():
228
  with gr.Blocks(title="Resume Customizer") as app:
229
+ with gr.Tabs():
230
+ with gr.Tab("Resume Customizer"):
231
+ gr.Markdown("# Resume Customizer")
232
+ gr.Markdown("Enter a job description to generate a fully customized resume tailored to the position.")
 
 
 
 
 
 
233
 
234
+ with gr.Row():
235
+ with gr.Column():
236
+ api_key_resume = gr.Textbox(
237
+ label="OpenAI API Key",
238
+ placeholder="Enter your OpenAI API key",
239
+ type="password"
240
+ )
241
+
242
+ job_description_resume = gr.Textbox(
243
+ label="Job Description",
244
+ placeholder="Paste the job description here...",
245
+ lines=10
246
+ )
247
+
248
+ customize_btn = gr.Button("Customize Resume")
249
+
250
+ with gr.Column():
251
+ pdf_output = gr.File(label="Download Resume")
252
+ status_text = gr.Textbox(label="Status", interactive=False)
253
 
254
+ customize_btn.click(
255
+ fn=create_customized_resume,
256
+ inputs=[api_key_resume, job_description_resume],
257
+ outputs=[pdf_output, status_text]
258
+ )
259
+
260
+ gr.Markdown("""
261
+ ## How to Use
262
+ 1. Enter your OpenAI API key
263
+ 2. Paste a job description in the text area
264
+ 3. Click "Customize Resume"
265
+ 4. Wait for the AI to tailor your entire resume to match the job requirements
266
+ 5. Download the customized resume PDF
267
+ """)
268
 
269
+ with gr.Tab("Job Finder"):
270
+ gr.Markdown("# Job Finder")
271
+ gr.Markdown("Enter a job description to find the top 5 most relevant jobs from your list and LinkedIn recommendations.")
272
+
273
+ with gr.Row():
274
+ with gr.Column():
275
+ api_key_job = gr.Textbox(
276
+ label="OpenAI API Key",
277
+ placeholder="Enter your OpenAI API key",
278
+ type="password"
279
+ )
280
+
281
+ job_description_job = gr.Textbox(
282
+ label="Job Description",
283
+ placeholder="Paste the job description here...",
284
+ lines=10
285
+ )
286
+
287
+ jobs_list = gr.Textbox(
288
+ label="Jobs List (Optional)",
289
+ placeholder="Paste your list of jobs here or leave empty to use the default list...",
290
+ lines=10
291
+ )
292
+
293
+ find_jobs_btn = gr.Button("Find Relevant Jobs")
294
+
295
+ with gr.Column():
296
+ relevant_jobs_output = gr.Textbox(
297
+ label="Top 5 Most Relevant Jobs",
298
+ interactive=False,
299
+ lines=15
300
+ )
301
+
302
+ find_jobs_btn.click(
303
+ fn=find_relevant_jobs,
304
+ inputs=[api_key_job, job_description_job, jobs_list],
305
+ outputs=relevant_jobs_output
306
+ )
307
 
308
+ gr.Markdown("""
309
+ ## How to Use
310
+ 1. Enter your OpenAI API key
311
+ 2. Paste a job description in the text area
312
+ 3. Optionally, paste your own list of jobs (or leave empty to use the default list)
313
+ 4. Click "Find Relevant Jobs"
314
+ 5. View the top 5 most relevant jobs based on the job description (includes LinkedIn recommendations)
315
+ """)
316
 
317
  return app
318
 
jobs-applied-for.txt ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ COMPANY NAME POSITION TITLE
2
+ Chalk Machine Learning Engineer
3
+ Adobe Software Development Engineer
4
+ Qualtrics Machine Learning Engineer
5
+ Salesforce Software Engineer
6
+ Laserfiche Software Engineer I/II
7
+ Quanterix Software Engineer I
8
+ ServiceNow Machine Learning Engineer
9
+ Red Hat Machine Learning Engineer
10
+ Solventum Software Developer
11
+ Realtor.com Machine Learning Engineer, Search
12
+ RoviSys Software Engineers
13
+
14
+ Anthropic Research Engineer / Scientist, Alignment Science
15
+ Applied Intuition Research Scientist
16
+ Intuit Machine Learning Engineer 2
17
+ Together AI AI Researcher, Core ML
18
+ Spotify Research Scientist - Content Platform
19
+ Gradient Applied AI Engineer
20
+ Biostate AI AI Research Scientist
21
+ Instacart Machine Learning Engineer II - Ads Response Prediction
22
+ Upstart Machine Learning Engineer
23
+ xAI Machine Learning Engineer - Frontier Data
24
+ Epic Software Engineer
25
+ C1 AI Developer - C1 Gov
26
+ PwC AI & GenAI Data Scientist-Senior Associate
27
+ Otter.ai Research Scientist
28
+ Snowflake AI System Research and Development Engineer - Frameworks
29
+ Amazon Web Services (AWS) Applied Scientist, ML_AI
30
+ Amazon Applied Scientist (GenAI/LLM), Sandstone
31
+ NVIDIA Research Scientist, Generalist Embodied Agent Research - New College Grad 2025
32
+ NVIDIA System Software Engineer - GPU
33
+ Snap Inc. Machine Learning Engineer, Generative AI
34
+ Chan Zuckerberg Biohub Network Research Scientist, Machine Learning/A.I. (Biohub NY)
35
+ Waymo Machine Learning Engineer, Training
36
+ LatentView Analytict MLOps Engineer
37
+ Google Software Engineer, PhD, Early Career, Campus, 2025 Start
38
+ Caltrans Research Data Specialist II (JC-474758)
39
+ Capital One Senior Data Scientist - NLP
40
+ Amazon Machine Learning Engineering (New Graduate), AGI Autonomy
41
+ X, The Moonshot Factory Applied AI Research Engineer, Early Stage Project
42
+ Hasura Applied AI Engineer
43
+ - -
44
+ - -
45
+
46
+ Anthropic Research Engineer, Agents
47
+ Oracle Research Scientist, AI & Machine Learning (PhD)
48
+ Together AI LLM Inference Frameworks and Optimization Engineer
49
+ Radiant Security AI Applied Engineer
50
+ Adobe Machine Learning Engineer
51
+ Tesla Machine Learning Engineer, Intelligent Scheduling Systems
52
+ Artisan AI/ML Engineer
53
+ XPENG Senior Machine Learning Performance Engineer
54
+ Accenture Advanced AI Research Engineer
55
+ Perplexity AI Software Engineer - Data Platform - SF
56
+ Ramp Software Engineer | Applied AI
57
+ Latent Machine Learning Engineer
58
+ Anthropic Software Engineer, Human Feedback Interface
59
+ DoorDash Software Engineer, Backend (All Teams)
60
+ EA SPORTS Machine Learning Scientist
61
+ Anthropic Research Engineer / Scientist, AI Scientist
62
+ Atlas Applied AI Engineer
63
+ Allstate Machine Learning Engineer
64
+ Clio - Cloud-Based Legal Technology Machine Learning Engineer
65
+ Athena CA - Machine Learning/AI Engineer Intern
66
+ NVIDIA Deep Learning Algorithm Engineer - New College Grad 2025
67
+ Arc Applied AI Engineer
68
+ Anthropic Research Engineer, Tokens ML Infra
69
+ Together AI Machine Learning Engineer
70
+ OpenAI Software Engineer, Discovery Engineering
71
+ Abridge Machine Learning Scientist, NLP (All Levels)
72
+ CentML Software Engineer - LLM Training
73
+ Snap Inc. Machine Learning Engineer, Level 5
74
+ Blue River Technology CVML Engineer - Modeling, See & Spray
75
+ National Debt Relief, LLC Applied AI Engineer
76
+ Amazon SDE II (Machine Learning), AGI Foundations
77
+ Nuro Machine Learning Research Scientist: Generative Models for Behavior Modeling
78
+ DoorDash Machine Learning Engineer - Conversation AI
79
+ Amazon "Software Development Engineer, Millibyte, Millibyte
80
+ "
81
+ Uniphore AI Scientist
82
+ StubHub Data Scientist II
83
+ Calm Software Engineer, Web
84
+ SpaceX "Full Stack Software Engineer (Components)
85
+ "
86
+ DoorDash Machine Learning Engineer - New Verticals - Search & Recommendations
87
+ Amazon software Development Engineer, Kuiper
88
+ Fionics $300k-$1mm Low Latency Software Engineer (C++/Java)
89
+ NVIDIA Research Scientist, Design Automation - New College Grad 2025
90
+ Google DeepMind "Analytics Engineer
91
+ "
92
+ Teledyne Technologies Incorporated Research Scientist
93
+ Five9 Analytics and Reporting Engineer
94
+ Amazon Software Development Engineer , ART19
95
+ Capital Group Senior Software Engineer
96
+ Norstella NLP LLM Operations Architect & AWS Engineer
97
+ Exponent Research Assistant
98
+ LegalZoom Senior DevOps Engineer
99
+ Motion (Creative Analytics) Senior Product Engineer (Full Stack)
100
+ Snap Inc. Software Engineer, C++, 2+ Years Of Experience
101
+ Artisan AI/ML Engineer
102
+ Snap Inc. Software Engineer, Level 3
103
+ Bluebeam Software Engineer (Go/AWS)
104
+ Yahoo Senior Software Engineer - Core Mail
105
+ Eluvio Artificial Intelligence Research Scientist (Gen AI - Multimodal Learning)
106
+ xAI Research Engineer - World Model
107
+ Amazon Software Development Engineer , ABServ
108
+ Amazon Music Software Development Engineer, Amazon Music
109
+ Attis Machine Learning Engineer (Weather / Climate / AI)
110
+ Amazon Software Development Engineer - Amazon Publisher Services, Amazon Publisher Services, 3P Demand
111
+ Acubed Machine Learning Engineer
112
+ UnitedMasters Software Engineer, Backend
113
+ Roblow Software Engineer, Productivity Platforms and Ecosystems
114
+ Amazon Software Development Engineer, Backbone SDN Controllers
115
+ Amazon Sr Applied Scientist, Brand Intelligence
116
+ Corteva Agriscience Machine Learning Scientist
117
+ X, The Moonshot Factory Connect with Tapestry
118
+ NVIDIA Deep Learning Algorithm Engineer - New College Grad 2025
119
+
120
+ TikTok Backend Software Engineer, TikTok Live Strategy Platform
121
+ Google Software Engineer, PhD, Early Career, Campus, 2025 Start
122
+ AMD Platform Engineer - AI Software Solutions
123
+ AMD Software Engineering Intern/Co-Op (Graduate | Fall 2025 | Hybrid)
124
+ Apple AIML - ML Engineer
125
+ Apple Software Engineer, Calls Security
126
+ ByteDance "High-Performance Computing Research Scientist (Inference Optimization) - Doubao (Seed) Vision AI Platform - San Jose
127
+ "
128
+ Waymo "ML Engineer, Foundation Model Evaluation
129
+ "
130
+ Waymo Software Engineer, ML Infrastructure, Limited Duration
131
+ IBM Software Developer
132
+ Oracle Software Developer 4
133
+
134
+ Amazon -
135
+ - -
136
+ Amazon Applied Scientist, SPX AI Lab
137
+ Amazon Applied Scientist,
138
+ Amazon Applied Scientist II, Selling Partner Growth
139
+ Amazon Applied Scientist, Account Integrity
140
+ Amazon Applied Scientist, Seller Fees Science & Tech
141
+ Snorkel AI Research Engineer
142
+ PwC GenAI Python Systems Engineer – Senior Associate
143
+ Google DeepMind Forward Deployment Engineer
144
+ OpenAI Software Engineer, GPU Infrastructure
145
+ NVIDIA Performance Engineer - Deep Learning
146
+ Perplexity AI Inference Engineer - SF or Palo Alto
147
+ Scale AI AI Infrastructure Engineer, ML Data Platform
148
+ Bright Machines "Research Perception Scientist, Computer Vision and Machine Learning
149
+ "
150
+ Amazon Web Services (AWS) Applied Scientist II
151
+ DoorDash Machine Learning Engineer, Computer Vision
152
+ Amazon SDE II - Perception & Planning, Last Mile Delivery
153
+ Tempus AI Machine Learning Scientist, Digital Pathology
154
+ Circle AI Applied Scientist
155
+ Amazon Web Services (AWS) Applied Scientist II, NGDE Science
156
+ Jerry Data Scientist
157
+ Tesla Machine Learning Kernel Performance Engineer, Dojo
158
+ Together AI LLM Training Frameworks and Optimization Engineer
159
+ Circle AI Applied Scientist
160
+ NVIDIA Research Scientist, Generalist Embodied Agent Research - New College Grad 2025
161
+ Shopify Machine Learning Infrastructure Engineers (Global)
162
+ OPPO 2025 Computer Vision Engineer
163
+ StubHub Software Engineer II – Operations
164
+ DoorDash Machine Learning Engineer - New Verticals - Search & Recommendations
templates/Arbab - Resume.tex CHANGED
@@ -122,7 +122,7 @@
122
  Fine-tuned Llama 3.2 11B vision model using PyTorch TorchTune, improving computer navigation performance from 40\% to 90\% across diverse rendering applications.
123
  Implemented real-time adaptive vision-to-code generation achieving 95\% validation accuracy for complex UI interactions.}
124
 
125
- \resumeItem{Visual Anomaly Detection for Graphics Validation (Project VAAML)}
126
  {Contributing to initiative addressing Intel's \$6.5M annual manual testing costs for hardware-game compatibility validation.
127
  Developing real-time anomaly detection system using Vision-Language Models that has reached 87\% detection accuracy in preliminary testing across diverse rendering scenarios.}
128
 
 
122
  Fine-tuned Llama 3.2 11B vision model using PyTorch TorchTune, improving computer navigation performance from 40\% to 90\% across diverse rendering applications.
123
  Implemented real-time adaptive vision-to-code generation achieving 95\% validation accuracy for complex UI interactions.}
124
 
125
+ \resumeItem{Visual Anomaly Detection for Graphics Validation}
126
  {Contributing to initiative addressing Intel's \$6.5M annual manual testing costs for hardware-game compatibility validation.
127
  Developing real-time anomaly detection system using Vision-Language Models that has reached 87\% detection accuracy in preliminary testing across diverse rendering scenarios.}
128