Page 5: Validating AI feasibility (in OpenAI API)
We want OpenAI to do this in our app:
- Generate a high-performing resume draft based on a role and general information about the user’s experience/skills
- Rewrite a resume based on a job description
- Rewrite a resume based on other resumes
- Highlight strengths and weaknesses of a resume against that job description, with prompts to improve
- Translate resumes in different languages
- Share insight around critical keywords/outlines that high-performing resumes use for a certain role
Let’s map each of these out based on API documentation. The codebase below uses OpenAI’s NextJS example project.
Generate a high-performing resume draft based on a role and general information about the user’s experience/skills
This is a single back-and-forth prompt with text completion, so we can use the Davinci base model for it and use the https://api.openai.com/v1/completions API.
Request:
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: `Generate a draft resume for a software engineer whose name is John Smith.
He has 7 years of experience at Google as Backend Engineer, where he led YouTube Music team.
Before that he worked at Apple for 4 years working on Garage Band.
He graduated from MIT where he studied computer science`,
max_tokens: 3000
});
console.log(completion.data.choices[0].text);
Response:
John Smith
Software Engineer
SUMMARY
Software Engineer with 7 years of experience in developing software for several prominent companies. Adept at creating software solutions that encourage incoming business and maintain existing customer relationships. Demonstrated ability to develop complex software designs with robust coding practices. Possesses a Bachelor of Science in Computer Science from the Massachusetts Institute of Technology (MIT).
EXPERIENCE
Backend Engineer, Google | Jan 2013 – present
Led YouTube Music team to assist in creating and managing streaming audio.
Designed several software applications for Android devices that enhanced the video-streaming process.
Developed software that administered software upgrades in the Developer Console.
Monitored software performance and ensured accurate catalogs of collected data.
Software Engineer, Apple | Jan 2009 – Dec 2012
Developed applications for the GarageBand platform on Mac and iOS devices.
Tested written code to ensure accuracy in functionality.
Built software that monitored user interaction to determine effectiveness.
Used debugging process to identify, correct, and report software errors.
EDUCATION
Bachelor of Science in Computer Science, Massachusetts Institute of Technology (MIT) | Graduated May 2008
GPA 3.8
Received Software Engineering Award
This is a great start already!
Rewrite this resume based on a job description/other resumes
Rewrite is a text edit, so let’s try using the text edit API: https://api.openai.com/v1/edits
Request
const replacement = await openai.createEdit({
model: "text-davinci-edit-001",
input: `${resume}`, // from earlier
instruction: `
Rewrite to match more of following job description:
OpenAI: Software Engineer, Billing and Monetization
We are looking for an engineer who can lead us to sustained economic and user growth.
In this role, you will:
Build tooling to help us analyze and optimize major cost centers in our infrastructure, and then use that data to make our fleet more economically efficient.
Build core infrastructure required to sustain and expand revenue operations across a growing portfolio of products, pricing plans, and customers.
Work closely with finance and product management to help with infrastructure capacity planning, pricing, and profitability forecasts.
You might thrive in this role if you:
Have at least 5 years of professional software engineering experience.
Have developed or integrated with a billing platform for usage based business models.
Have an understanding of the basic business dynamics of SaaS businesses and how engineering plays a role in this.
Have a humble attitude, an eagerness to help your colleagues, and a desire to do whatever it takes to make the team succeed.
Have needed to rebuild or substantially refactor production systems several times over due to rapidly increasing scale or scope.
Are self-directed and enjoy figuring out the most important problem to work on.
Own problems end-to-end, and are willing to pick up whatever knowledge you're missing to get the job done.
Build tools to accelerate your own workflows, but only when off-the-shelf solutions would not do.
`,
})
console.log(replacement.data.choices[0].text);
Response:
Mohamad Ali
Software Engineer Diagnostic Technician Biologic Technician
Network Laboratory Operations engineer
Model Engineer scientist
SUMMARY
Diagnostic or diagnostic technician with 16 years of experience Diagnosis and diagnostics Protocol Security guidelines in several prominent companies. Adept at creating software solutions that encourage incoming business and maintain existing company relationships. Demonstrated ability to develop projects and troubleshoot systems for multiple business lines. Possesses a Bachelor of Science in Computer Science.
EXPERIENCE
Game Test , Nintendo | 2013 - April 2016
Led team to assist in bugding of game cinematics, game start, game graphics, and game loading times.
Resolved several different product quality issues within 72 hours
Tracked several problems, failures, and document all bug fixes in console devices.
Certified VW Diagnostic Technician, Sonic Motors | April 2016-Present
Perform all maintenance requirements set forth in VW's "Dealer Only" monthly diagnostic programs.
Uses intricate diagnostic tools proving problem ratings, graphs, and calibrations of issues for VW/Audi connect.
Use multiple WDS/ETKA resources to complete parts repairs and replacement of parts for vehicles.
Document concise troubleshooting steps taken to retrive informaiton and test failures or find problems in vehicles.
Follow up with VW Technical teams to ensure the repair or diagnosis of vehicle has been completed.
School Coordinator, I Power3 Company | June 2006-2009
Tag students for their physical education and monitor performance of each student.
Track students progress, academic stand, peer relationships.
Resolve any school complaints and issue punishment to students if needed.
Notify parents before or after person gives any problem whether academic or to peer.
Read over everyday's agenda and prepare teachers with daily lesson plan.
EDUCATION
<Cal. State University in San Bernardino, Computer Science.| March 2006-September 2008 ‹ Art Academie in Kharkiv region, Kharkiv Institute for higher education, Kharkiv Ukraine.| January
1987 to March 1991>
GPA 3.7
Received Academic Status Award
…this doesn’t look right. The Replace API just replaced the entire resume, including the name and entire experience. This means we need a better prompt or a different API.
Let’s first try changing the instruction in the request from
// from
instructions: `Rewrite to match more of following job description: ...`
// to
instructions: `Rewrite each job experience description to match more of following job description:
John Smith
Software Engineer
SUMMARY
Software Engineer with 7 years of experience in developing software for several prominent companies. Adept at creating software solutions that encourage incoming business and maintain existing customer relationships. Demonstrated ability to develop complex software designs with robust coding practices. Possesses a Bachelor of Science in Computer Science from the Massachusetts Institute of Technology (MIT).
EXPERIENCE
Backend Engineer, Google | Jan 2013 – present
Managed YouTube Video Streaming Team to assist in creating and delivering live and prerecorded video streaming.
Developed Java Video Content Management(VCM) web application used by broadast partners to upload,stich, transform,collage,insert ad and publish video data on Youtube.
Built and managed AWS EC2 compute instances used by VCM app backend process to generate analytic and compliance reports using custom python scripts on video metadata.
Automated /self service maintenance utilities/tasks for VCM app servers and services servers to reduce or eliminate break/fix Total Cost of Ownership(TCO) and stabilize operability in Google Cloud Environment .
Implemented a single sign (IDAM) application based on Youtube server side technology stack model to enforce role based access control(RBAC) security model for individual users of web VCM application.
Provided systems designs and product life cycle management for both Youtube VCM backend and its frontend web app UI.
Software Engineer, Apple | Jan 2009 – Dec 2012
Developed Apple Mobile UI(IOS) and Desktop IOS apps using swift programming language
Tested written code to ensure correctness in functionality, Availability and robustness.
Designed , developed and managed Infrastructure monitoring application to monitor system performance and traffic usage and response time determined effectiveness in several independent node cluster instance..
Used debugging and profiling tools to identify ,correct, and report software errors in several independent but managed node cluster instance.
Designed, Developed and managed several node cluster instances to provide scalable robust solution to support video content delivery for internal cloud app store.
Responsible for network availability, security and permissions for video content delivery node cluster instances secured by Stunnel technology.
Wrote automated system testing script for a node cluster server instances.
Researched and developed offline content sync capability for apple community users to allow and preview content without downloading the content.
Suggested and designed Infrasrcture architecture for user generated content collaboration platform.
EDUCATION
Bachelor of Science in Computer Science, Massachusetts Institute of Technology (MIT) | Graduated May 2008
GPA 3.8
Received Software Engineering Award
That is better. It kept everything else the same and adjusted the experience to match the job description better, or at least in more detail. Think we are good to stop here and figure out more in the code later.
Highlight strengths and weaknesses of a resume against that job description, with prompts to improve
First, we should retrieve the list of technical and soft skills from the job description.
// https://api.openai.com/v1/completions
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: `For the following Job description, list out the top technical and soft skills required for the role.
OpenAI: Software Engineer, Billing and Monetization ...`
Technical Skills:
- 5+ years software engineering experience
- Billing platform development or integration
- System scalability and refactoring
- Relevant infrastructure capacity planning
- Proficiency in needed development languages
- Version control systems
- Knowledge of SaaS business dynamics
Soft Skills:
- Humble attitude
- Self-directed
- Problem solver
- Efficiency minded
- Effective communicator
- Ability to work with remote teams
- Ability to work with product management
- Ability to work with finance team
- Collaborative approach
- Organizational skills
Then we can ask it to analyze our resume to see how we match against each of these. We will use chat completion to continue the conversation:
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{
role: "user", content: skillPrompt // from above request
},
{
role: "assistant", content: skillsData // from above response
},
{
role: 'user', content: `
Which of these skills are included in my resume? This is my resume:
${resume}
` },
],
});
{
role: 'assistant',
content: 'It is not possible to determine which skills are included in your resume without more information. The resume listed does not include a detailed breakdown of your skills or a comprehensive list of technical and soft skills.'
}
Looks like our resume needs more information. Instead of our current resume, I will replace with another more detailed resume of mine.
Professional Summary:
Experienced frontend software engineer with 7 years of proven success in building scalable SaaS products from scratch and leading cross-functional engineering teams. Skilled in TypeScript, Angular/React, SOA, API best practices, and event-based solutions. Strong understanding of server-side CSS pre-processing platforms, such as SASS. Excellent presentation and communication skills, with the ability to articulate technical concepts to both technical and non-technical audiences.
Experience:
Senior Frontend Software Engineer, Streamlabs (2018-2022)
Led the frontend development of Streamlabs' livestreaming suite of tools, building complex web applications with high traffic and performance requirements.
Successfully built Streamlabs' frontend engineering team from scratch, recruiting and directly managing a team of 7 engineers across the organization.
Collaborated closely with the product team, graphical designers, backend engineers, and quality assurance team to deliver a world-class software platform.
Demonstrated leadership and accountability by taking ownership of critical projects, evaluating complex business requirements, and translating them into actionable software items.
Lead Frontend Engineer, Subscriptions, Bolt (2022-Present)
Solely responsible for leading the frontend engineering of Bolt's Subscriptions product, building interfaces for both shoppers and merchants.
Work closely with the product team to define and execute the product vision, ensuring high quality and optimal performance of the frontend application.
Utilize expertise in TypeScript, Angular/React, and other modern development patterns to contribute clean code that follows strict typing rules and modern patterns.
Participate in the frontend and backend architecture councils, creating and reviewing proposals, and working with teams to implement architectural changes.
Skills:
TypeScript, Angular/React, SOA, API best practices, and event-based solutions
REST, gRPC, GraphQL, and WebSocket
Relational, NoSQL, and in-memory cache persistence technologies
Server-side CSS pre-processing platforms, such as SASS
Various build and release management tools for the frontend stack
Performance optimization for complex frontend applications
Micro Frontend Architecture
AWS technologies
Education:
Bachelor of Science in Computer Science, XYZ University, 2018
Certifications:
AWS Certified Developer – Associate, 2020
Re-run the request. This is the response:
{
role: 'assistant',
content: 'The skills included in your resume are:\n' +
'- TypeScript, Angular/React, JavaScript, CSS, SASS, SOA, APIs, event-driven solutions, REST, gRPC, GraphQL, WebSocket, SQL, NoSQL, Redis, AWS, Docker, Kubernetes, Git, JIRA, Agile methodologies, project management, leadership, communication, collaboration, mentoring.'
}
It’s ok. Maybe we need a better prompt. Let’s try:
{
role: 'user',
content: `
This is my resume:
${resume}. Can you share to what extend are these skills included in my resume, and which are missing?
`
},
{
role: 'assistant',
content: 'Your resume includes the following technical skills:\n' +
'- TypeScript\n' +
'- Angular/React\n' +
'- Service-oriented architecture (SOA)\n' +
'- API best practices\n' +
'- Event-based solutions\n' +
'- REST, gRPC, GraphQL, and WebSocket\n' +
'- Relational, NoSQL, and in-memory cache persistence technologies\n' +
'- Server-side CSS pre-processing platforms, such as SASS\n' +
'- Various build and release management tools for the frontend stack\n' +
'- Performance optimization for complex frontend applications\n' +
'- Micro Frontend Architecture\n' +
'- AWS technologies\n' +
'\n' +
"Based on your resume, there do not appear to be any significant technical skills missing. However, it would be helpful to include more specifics about your experience with AWS technologies, as this is a broad category encompassing many specific services and tools. Additionally, it may be useful to include more examples of specific projects you've worked on and the role you played in them in order to give potential employers a better understanding of your skills."
}
Not bad at all!
Translate resumes in different languages
This should be a breeze.
const translate = await openai.createCompletion({
model: "text-davinci-003",
prompt: `Translate my resume from english to spanish. My resume is ${resume}`,
max_tokens: 3000
});
console.log('translate', translate.data.choices[0].text);
Resumen profesional:
Experto en ingeniería de software de frontend con 7 años de éxito comprobado en la creación desde cero de productos SaaS escalables y en la dirección de equipos de ingeniería multidisciplinaria. Experto en TypeScript, Angular / React, SOA, mejores prácticas de API y soluciones basadas en eventos. Fuerte comprensión de plataformas de preprocesamiento de CSS en el servidor, como SASS. Excelentes habilidades de presentación y comunicación, con la capacidad de articular conceptos técnicos a audiencias técnicas y no técnicas.
Experiencia:
Ingeniero de Software de Frontend Senior, Streamlabs (2018-2022)
Dirigió el desarrollo de frontend de la suite de herramientas de transmisión en vivo de Streamlabs, construyendo aplicaciones web complejas con requisitos de alto tráfico y rendimiento.
Con éxito construyó el equipo de ingeniería de frontend de Streamlabs desde cero, reclutando y dirigiendo directamente a un equipo de 7 ingenieros en toda la organización.
Colaboró estrechamente con el equipo de producto, diseñadores gráficos, ingenieros de backend y el equipo de aseguramiento de calidad para ofrecer una plataforma de software de clase mundial.
Demostró liderazgo y responsabilidad tomando propiedad de proyectos críticos, evaluando requisitos comerciales complejos y traduciéndolos en elementos de software accionables.
Ingeniero de Frontend Líder, Suscripciones, Bolt (2022-Presente)
Responsable único de liderar la ingeniería de frontend de Bolt Subscriptions, construyendo interfaces para compradores y comerciantes.
Trabaje estrechamente con el equipo de producto para definir y ejecutar la visión del producto, garantizando alta calidad y rendimiento óptimo de la aplicación de frontend.
Utilizar su experiencia en TypeScript, Angular / React y otros patrones de desarrollo modernos para contribuir con código limpio que siga reglas estrictas de tipificación y patrones modernos.
Participar en los consejos de arquitectura de frontend y backend, creando y revisando propuestas, y trabajando con equipos para implementar cambios arquitectónicos.
Habilidades:
TypeScript, Angular / React, SOA, mejores prácticas de API y soluciones basadas en eventos
REST, gRPC, GraphQL y WebSocket
Tecnologías de persistencia de caché relacional, NoSQL e in-memory
Plataformas de preprocesamiento de CSS en el servidor, como SASS
Varias herramientas de gestión de construcción y lanzamiento para la pila de frontend
Optimización de rendimiento para aplicaciones de frontend complejas
Arquitectura de Frontend Micro
Tecnologías de AWS
Educación:
Licenciatura en Ciencias de la Computación, Universidad XYZ, 2018
Certificaciones:
AWS Certified Developer – Associate, 2020
Boom. EZ.
Share insight around critical keywords/outlines that high-performing resumes use for a certain role
This should be easy as well.
const insight = await openai.createCompletion({
model: "text-davinci-003",
prompt: `Share insight on top performing keywords in great frontend software engineering resumes, including technologies, stacks, metrics and technical skills`,
max_tokens: 3000
});
console.log('insight', insight.data.choices[0].text);
Top performing keywords in great frontend software engineering resumes depend on the type of job role and organization an individual is applying for. A few examples of some of the top performing keywords may include:
-Practical experience with modern frontend technologies such as HTML5, CSS3, JavaScript, React, Angular and/or Vue
-Familiarity with development frameworks such as Node.js, Express, and/or JQuery
-Deep understanding of RESTful APIs and web services
-Proficiency in building user interfaces, server-side logic, and databases
-Industry best practices such as CI/CD, TDD, Agile methodology and version control systems
-Metrics tracking and performance optimization techniques
-Knowledge of Cross-browser compatibility and accessibility requirements
-Excellent problem-solving and debugging skills.
While these are pretty generic, it gives a good insight and reference to get started and compare.
We have now somewhat validated all of our AI-assisted functionalities within the app. Now, let’s code for real :)
Thanks for reading!