Menu

UX Research, Product Design & Frontend Development

ASML Staffing Model GUI

ASML Staffing Model GUI

ASML Staffing Model GUI

3 People. 60 global facilities. Navigating thousands of lines of code.

ASML — the world’s leading DUV/EUV lithography chipmaker — runs on a global network of Field Service Managers and Engineers maintaining 60 global facilities. The challenge? Consistent staffing is key, yet running crucial simulations has become a complex, time-consuming ordeal dependent on 3 analysts based in San Diego.

To solve this problem, I developed a modern, innovative Graphical User Interface (GUI) that replaces the manual maze to showcase the limitless potential of combining next-level design with seamless functionality.

Because of company policy and NDA, I am not able to show direct visual examples or specific information about this project! Please keep in mind as I share about my designs and experience!

Because of company policy and NDA, I am not able to show direct visual examples or specific information about this project! Please keep in mind as I share about my designs and experience!

Because of company policy and NDA, I am not able to show direct visual examples or specific information about this project! Please keep in mind as I share about my designs and experience!

Because of company policy and NDA, I am not able to show direct visual examples or specific information about this project! Please keep in mind as I share about my designs and experience!

My Role

My Role

My Role

End-to-end Product Design

User Research

Design System

Frontend Development

Team

Team

Cross-functional partnership between 2 Software Engineers and 2 Data Analysts in the Operational Efficiency Team at San Diego.

Tools

Tools

Microsoft Visio

Qt Designer

PyQt

Teamforge

Jira

Microsoft Visio

Qt Designer

PyQt

Teamforge

Jira

User Research

User Research

Understanding comes First!

Understanding comes First!

The only prior knowledge I had in the semiconductor industry was the “Welcome to ASML” video that I first received in my inbox

The only prior knowledge I had in the semiconductor industry was the “Welcome to ASML” video that I first received in my inbox

So on my first day, when my manager told me I had 12 weeks to design, develop, and present (at a major company conference!!!) a transformative interface that would affect the company greatly, can you imagine what my face looked like?

(hint: 😧 😰 🥲)

So on my first day, when my manager told me I had 12 weeks to design, develop, and present (at a major company conference!!!) a transformative interface that would affect the company greatly, can you imagine what my face looked like?

(hint: 😧 😰 🥲)

12 weeks. The only information I had was:

  • the project brief

  • the new software to download

  • the long, messy code for the staffing simulation that I had optimize.

But I couldn’t even START to look at that until I had learnt how the company functioned and who my target user base was. As my project deals with staffing, I first researched the company’s infrastructure and business models to understand why a staffing simulation was even needed.

Map of average number of employees at ASML in 2024

ASML's company-wide business model (2024)

Based on the business model, part of the company’s services is having Field Service Engineers (FSE) install new innovations to the machines, as well as routine maintenance checkups.

Based on the business model, part of the company’s services is having Field Service Engineers (FSE) install new innovations to the machines, as well as routine maintenance checkups.

Consistent staffing needs to be coordinated meticulously to provide the high quality service that ASML strives for.

Consistent staffing needs to be coordinated meticulously to provide the high quality service that ASML strives for.

Consistent staffing needs to be coordinated meticulously to provide the high quality service that ASML strives for.

ASML has 40,000+ Employees; Who am I Designing for?

ASML has 40,000+ Employees; Who am I Designing for?

Once I had a good understanding of the needs of the company’s clients, I delved further into the users that I would directly be designing for — Field Service Managers.

Once I had a good understanding of the needs of the company’s clients, I delved further into the users that I would directly be designing for — Field Service Managers.

To better understand the problem space, I conducted user interviews with 10 FSMs, four located in the U.S., two located in South Korea, three in Taiwan, one from the Netherlands. The goal was to uncover pain points, workflow habits, and expectations around the staffing simulation tool.

Key insights:

  • FSMs had to wait several months to a year for staffing simulation results.

  • Results were difficult to access because of their .html formats that could not simply be downloaded.

  • There was confusion around how staffing decisions aligned with business goals.

Key insights:

  • FSMs had to wait several months to a year for staffing simulation results.

  • Results were difficult to access because of their .html formats that could not simply be downloaded.

  • There was confusion around how staffing decisions aligned with business goals.

Key insights:

  • FSMs had to wait several months to a year for staffing simulation results.

  • Results were difficult to access because of their .html formats that could not simply be downloaded.

  • There was confusion around how staffing decisions aligned with business goals.

Name

Name

John Doe

John Doe

Age

Age

42

42

Austin, Texas, USA

Field Service Manager at ASML

Role description

John Doe has spent the past decade managing service teams that maintain ASML's high-precision photolithography machines at client sites in Texas. John ensures to provide enough on-site support to semiconductor fabs in both engineers and materials, ensuring that equipment downtime is minimized and production efficiency is maximized.

Name

John Doe

Age

42

Austin, Texas, USA

Field Service Manager at ASML

Role description

John Doe has spent the past decade managing service teams that maintain ASML's high-precision photolithography machines at client sites in Texas. John ensures to provide enough on-site support to semiconductor fabs in both engineers and materials, ensuring that equipment downtime is minimized and production efficiency is maximized.

Needs

Needs

  • Balancing time between urgent equipment repairs and preventative maintenance.

  • Coordinating with international colleagues across time zones for specialized support.

  • Optimal performance and minimal downtime of ASML equipment in the field.

  • Access to data from multiple sites internationally to compare and assess performance.

Pain points

Pain points

  • Streamline service workflows by leveraging new technology and the necessary number of staff needed.

  • Manage client relationships, ensuring they are satisfied with the service provided.

  • Lead and train engineers to stay up-to-date with the latest tools and techniques.

  • Ensure optimal performance and minimal downtime of ASML equipment in the field.

Who is running the simulations?

Who is running the simulations?

FSMs are only half of my user base. The other half are the THREE data analysts who run the staffing simulations...for ALL the FSMs...globally.

FSMs are only half of my user base. The other half are the THREE data analysts who run the staffing simulations...for ALL the FSMs...globally.

I interviewed all three analysts about their job and the process of running a single request. I also read through the instruction documentation to how to run the simulation, and I finally understood why their laptops were much bigger than most.

I interviewed all three analysts about their job and the process of running a single request. I also read through the instruction documentation to how to run the simulation, and I finally understood why their laptops were much bigger than most.

Key insights:

Key insights:

Hundreds of historical data files need to be stored LOCALLY, often in complex file nests that make it hard to navigate.

Hundreds of historical data files need to be stored LOCALLY, often in complex file nests that make it hard to navigate.

Hundreds of historical data files need to be stored LOCALLY, often in complex file nests that make it hard to navigate.

To run the simulation, they need to manually code commands into a Python terminal.

To run the simulation, they need to manually code commands into a Python terminal.

To run the simulation, they need to manually code commands into a Python terminal.

It can take hours to complete a full request because of the amount of data, and no way to cancel a run if there was a mistake.

It can take hours to complete a full request because of the amount of data, and no way to cancel a run if there was a mistake.

It can take hours to complete a full request because of the amount of data, and no way to cancel a run if there was a mistake.

The results only appear as a .html file, even though many times it is needed in other forms.

The results only appear as a .html file, even though many times it is needed in other forms.

The results only appear as a .html file, even though many times it is needed in other forms.

Information architecture

Information architecture

Decoding Chaos: Taming the Code Beast

Decoding Chaos: Taming the Code Beast

I know ASML’s business model. I understand the user’s needs. I’ve talked to the analysts. Now I need to learn how the actual simulation was modeled so that I could integrate it into my GUI.

I know ASML’s business model. I understand the user’s needs. I’ve talked to the analysts. Now I need to learn how the actual simulation was modeled so that I could integrate it into my GUI.

I know ASML’s business model. I understand the user’s needs. I’ve talked to the analysts. Now I need to learn how the actual simulation was modeled so that I could integrate it into my GUI.

I appreciated the rare notes within the code. Because the code it self was MESSY.

I appreciated the rare notes within the code. Because the code it self was MESSY.

I appreciated the rare notes within the code. Because the code it self was MESSY.

I needed to determine what the necessary input parameters were, and other optional, secondary parameters that were available for users to alter. With those I had to know how the simulation used those parameters to run the simulation.

I needed to determine what the necessary input parameters were, and other optional, secondary parameters that were available for users to alter. With those I had to know how the simulation used those parameters to run the simulation.

I needed to determine what the necessary input parameters were, and other optional, secondary parameters that were available for users to alter. With those I had to know how the simulation used those parameters to run the simulation.

The User Sequence Dance

The User Sequence Dance

Once I knew how to navigate the backend code and the desired uses, I used sequence diagrams to create the desired user flow.

Once I knew how to navigate the backend code and the desired uses, I used sequence diagrams to create the desired user flow.

For context, a user can plug in inputs for a number of different locations, with each location being a different use case. The simulation would then simulate staffing based on the historical data from each location, and then show results of each location and compare it with the other locations.

For context, a user can plug in inputs for a number of different locations, with each location being a different use case. The simulation would then simulate staffing based on the historical data from each location, and then show results of each location and compare it with the other locations.

For context, a user can plug in inputs for a number of different locations, with each location being a different use case. The simulation would then simulate staffing based on the historical data from each location, and then show results of each location and compare it with the other locations.

I limited the users to 4 use cases for the preliminary version so that the runtime wouldn’t take forever, but would still be able to show adequate simulation results.

Open and start the app

Download results

Download results

Press run

View Displayed Results

Plug in user inputs (for all cases)

Plug in advanced inputs

If the user dances, the code is the dance shoes

If the user dances, the code is the dance shoes

I also had to make sure I understood the flow of the code, and how it interacts with the user.

I also had to make sure I understood the flow of the code, and how it interacts with the user.

The backend task flow illustrates how the user's interactions (Controller) in the front end is received by the simulation code (Model) to display the results back to the user (View). Classic Model-View-Controller framework.

The backend task flow illustrates how the user's interactions (Controller) in the front end is received by the simulation code (Model) to display the results back to the user (View). Classic Model-View-Controller framework.

User chooses inputs

Retrieve user inputs

Run the simulation

Create output

Display output on front end

Plug in inputs as parameters

If there are other cases with other inputs

The backend task flow illustrates how the user's interactions (Controller) in the front end is received by the simulation code (Model) to display the results back to the user (View). Classic Model-View-Controller framework.

Product design

Product design

Sketching in my little orange notebook

Sketching in my little orange notebook

At the start of my internship, I was given a small, bright orange notebook. I used it to take notes during meetings, concentration scribbling, and mostly, drawing sketch after sketch of designs.

At the start of my internship, I was given a small, bright orange notebook. I used it to take notes during meetings, concentration scribbling, and mostly, drawing sketch after sketch of designs.

My design strategy was based off of a singular goal:

My design strategy was based off of a singular goal:

How can I allow FSMs to run their own simulations by just pressing buttons?

How can I allow FSMs to run their own simulations by just pressing buttons?

How can I allow FSMs to run their own simulations by just pressing buttons?

My initial sketches were attempts to consolidate space to allow for inputs and results to coexist in a 1440x1024 interface. I wanted to emphasize labels and clear layouts to optimize learning and optionality.

Wireframing...on Microsoft Visio??

Wireframing...on Microsoft Visio??

Due to NDA, I am not able to show any of my wireframes here, so I will try my best to show smaller components!

Due to NDA, I am not able to show any of my wireframes here, so I will try my best to show smaller components!

Due to NDA, I am not able to show any of my wireframes here, so I will try my best to show smaller components!

Because of the company’s privacy policy, I wasn’t able to use Figma (my BFF). Instead, I had to adjust and learn how to use Microsoft Visio to wireframe.

Because of the company’s privacy policy, I wasn’t able to use Figma (my BFF). Instead, I had to adjust and learn how to use Microsoft Visio to wireframe.

My Biggest Challenge:

How can I optimize screen space to display both inputs and outputs simultaneously while still prioritizing my primary goal to give the users their autonomy in running their own simulations?

My Biggest Challenge:

How can I optimize screen space to display both inputs and outputs simultaneously while still prioritizing my primary goal to give the users their autonomy in running their own simulations?

My Biggest Challenge:

How can I optimize screen space to display both inputs and outputs simultaneously while still prioritizing my primary goal to give the users their autonomy in running their own simulations?

1/3

1/3

2/3

2/3

2/3

RULE OF THIRDS! To create a more balanced design with clear focal points, I placed a great emphasis on the visual principle of thirds.

RULE OF THIRDS! To create a more balanced design with clear focal points, I placed a great emphasis on the visual principle of thirds.

RULE OF THIRDS! To create a more balanced design with clear focal points, I placed a great emphasis on the visual principle of thirds.

Location 1

Input 1:

Input 2:

Input 3:

Input 4:

Location 2

Location 3

Location 3

For the input section, I created a toolbox button that could hold multiple input areas for space optimization.


(This is just an example!!)

(This is just an example!!)


For the input section, I created a toolbox button that could hold multiple input areas for space optimization.

(This is just an example!!)

For the input section, I created a toolbox button that could hold multiple input areas for space optimization.

For the input section, I created a toolbox button that could hold multiple input areas for space optimization.


(This is just an example!!)

Advanced Inputs

Advanced Inputs

Input 1:

Input 1:

Input 2:

Input 2:

Input 3:

Input 3:

Input 4:

Input 4:

Location 1

Location 1

Input 1:

Input 1:

Input 2:

Input 2:

Input 3:

Input 3:

Input 4:

Input 4:

Location 2

Location 2

Location 3

Location 4

Location 2

For the less prioritized inputs options, I designed a separate pop-up dialog that would allow those options to be present without taking up additional screen space.


(This is a just an example !!)

(This is a just an example !!)


For the less prioritized inputs options, I designed a separate pop-up dialog that would allow those options to be present without taking up additional screen space.

(This is a just an example !!)

For the less prioritized inputs options, I designed a separate pop-up dialog that would allow those options to be present without taking up additional screen space.

For the less prioritized inputs options, I designed a separate pop-up dialog that would allow those options to be present without taking up additional screen space.


(This is just an example!!)

One challenge I faced during this phase was defending my designs to a team of backend software engineers and data analysts — no one with design experience. Their input and feedback were helpful, but I had to figure out how to create those jargon-filled ideas into a feasible design that would still put the user first!

One challenge I faced during this phase was defending my designs to a team of backend software engineers and data analysts — no one with design experience. Their input and feedback were helpful, but I had to figure out how to create those jargon-filled ideas into a feasible design that would prioritize the user!

Prototyping with QtDesigner

Prototyping with QtDesigner

Once I had most of my wireframes, I was ready to recreate them onto QtDesigner — one of the coolest GUI builder tools.

Once I had most of my wireframes, I was ready to recreate them onto QtDesigner — one of the coolest GUI builder tools.

Once I had most of my wireframes, I was ready to recreate them onto QtDesigner — one of the coolest GUI builder tools.

Example of the QtDesigner interface

Example of the QtDesigner interface

Using QtDesigner’s drag-and-drop functionalities, I was able to prototype the GUI by adjusting the properties of the QtDesigner widgets to match the desired functionality. I also played around with CSS to match my desired style and abide by the company’s pre-existing design system.

Using QtDesigner’s drag-and-drop functionalities, I was able to prototype the GUI by adjusting the properties of the QtDesigner widgets to match the desired functionality. I also played around with CSS to match my desired style and abide by the company’s pre-existing design system.

product development

product development

breathing life into the designs

breathing life into the designs

The last half of the project was dedicated to coding the designs to life using PyQt.

The last half of the project was dedicated to coding the designs to life using PyQt.

The last half of the project was dedicated to coding the designs to life using PyQt.

Another amazing feature of QtDesigner is that it can automatically populate my .ui file into a Python file (UTF-16LA). By changing the encoding to UTF-8 to match my environment, I had most of the base code of the frontend ready for me!

Another amazing feature of QtDesigner is that it can automatically populate my .ui file into a Python file (UTF-16LA). By changing the encoding to UTF-8 to match my environment, I had most of the base code of the frontend ready for me!

Another amazing feature of QtDesigner is that it can automatically populate my .ui file into a Python file (UTF-16LA). By changing the encoding to UTF-8 to match my environment, I had most of the base code of the frontend ready for me!

This is just a sample hierarchy!

This is just a sample hierarchy!

With the base code, I was able to directly adjust each element of my design that I had already prototyped. Thus, I was able to attach actions for each button, each widget, each entry field and adjust each functionality to better suit the user.

With the base code, I was able to directly adjust each element of my design that I had already prototyped. Thus, I was able to attach actions for each button, each widget, each entry field and adjust each functionality to better suit the user.

With the base code, I was able to directly adjust each element of my design that I had already prototyped. Thus, I was able to attach actions for each button, each widget, each entry field and adjust each functionality to better suit the user.

Connecting the Frontend to the Backend

Connecting the Frontend to the Backend

Before I was able to connect the frontend code to the backend simulation code, I decided to tidy up the simulation code. When I was first reading through it, I got SO lost, so I decided to write up documentation for the code, working with the original engineers to make sure that I had fully understood.

Before I was able to connect the frontend code to the backend simulation code, I decided to tidy up the simulation code. When I was first reading through it, I got SO lost, so I decided to write up documentation for the code, working with the original engineers to make sure that I had fully understood.

Before I was able to connect the frontend code to the backend simulation code, I decided to tidy up the simulation code. When I was first reading through it, I got SO lost, so I decided to write up documentation for the code, working with the original engineers to make sure that I had fully understood.

In creating a fully functional GUI, there were THREE crucial steps:

In creating a fully functional GUI, there were THREE crucial steps:

In creating a fully functional GUI, there were THREE crucial steps:

The Crucial Importance of Determining Inputs

The Crucial Importance of Determining Inputs

The Crucial Importance of Determining Inputs

Analyzing the simulation code in the backend proved to be crucial when connecting the frontend and backend. I had to access the user inputs from the frontend as parameters for each simulation.

Analyzing the simulation code in the backend proved to be crucial when connecting the frontend and backend. I had to access the user inputs from the frontend as parameters for each simulation.

Analyzing the simulation code in the backend proved to be crucial when connecting the frontend and backend. I had to access the user inputs from the frontend as parameters for each simulation.

Moving Data into a SQL Database

Moving Data into a SQL Database

The historical data used in the simulation was previously stored as local files. To make the data more accessible and consistent, I transitioned the data into a SQL database. This ensures data integrity, efficient querying, and scalability, making it easier to manage large datasets accurately.

The historical data used in the simulation was previously stored as local files. To make the data more accessible and consistent, I transitioned the data into a SQL database. This ensures data integrity, efficient querying, and scalability, making it easier to manage large datasets accurately.

The historical data used in the simulation was previously stored as local files. To make the data more accessible and consistent, I transitioned the data into a SQL database. This ensures data integrity, efficient querying, and scalability, making it easier to manage large datasets accurately.

Displaying the Outputs to the User

Displaying the Outputs to the User

I had to retrieve the outputs from the simulation and display them back for the user to view within the GUI— where the connection between the frontend and the backend finally loop around.

I had to retrieve the outputs from the simulation and display them back for the user to view within the GUI— where the connection between the frontend and the backend finally loop around.

I had to retrieve the outputs from the simulation and display them back for the user to view within the GUI— where the connection between the frontend and the backend finally loop around.

To address the user problem in accessing the results in easy formats, I created options for the user to download their results as either a html file OR a pdf file.

To address the user problem in accessing the results in easy formats, I created options for the user to download their results as either a html file OR a pdf file.

stakeholder presentation

stakeholder presentation

“I’m just an intern!!”

“I’m just an intern!!”

15 minutes to prove my worth. So much pressure. But in preparation for my presentation, I was able to see how my final product was able to accomplish my goal to allow FSMs to run their own simulations at the CLICK of a button.

15 minutes to prove my worth. So much pressure. But in preparation for my presentation, I was able to see how my final product was able to accomplish my goal to allow FSMs to run their own simulations at the CLICK of a button.

15 minutes to prove my worth. So much pressure. But in preparation for my presentation, I was able to see how my final product was able to accomplish my goal to allow FSMs to run their own simulations at the CLICK of a button.

Presenting to 50+ stakeholders globally

Presenting to 50+ stakeholders globally

The sigh of relief after I finished!

The sigh of relief after I finished!

the impact

the impact

results were good, but it can get better!

results were good, but it can get better!

The impact of the Staffing Model GUI can be spoken for itself by its impact.

The impact of the Staffing Model GUI can be spoken for itself by its impact.

The impact of the Staffing Model GUI can be spoken for itself by its impact.

The impact of the Staffing Model GUI can be spoken for itself by its impact.

Global accessibility to the staffing simulation increased by:

Global accessibility to the staffing simulation increased by:

Global accessibility to the staffing simulation increased by:

1,500%

Total Staffing Simulation Runtime decreased by:

Total Staffing Simulation Runtime decreased by:

50%

Number of Simulation Runs Increased by:

Number of Simulation Runs Increased by:

27%

As amazing as the results were, my 12-week result was only Phase 1, and there are many more improvements that can be made.

As amazing as the results were, my 12-week result was only Phase 1, and there are many more improvements that can be made.

As amazing as the results were, my 12-week result was only Phase 1, and there are many more improvements that can be made.

As amazing as the results were, my 12-week result was only Phase 1, and there are many more improvements that can be made.

More Flexibility:

Phase 1 allowed for up to 4 different factory locations. Increasing the limit of use cases can allow users to run more simulations!

More Flexibility:

Phase 1 allowed for up to 4 different factory locations. Increasing the limit of use cases can allow users to run more simulations!

Responsiveness:

Because all FSMs usually work through a company laptop (1440x1024), the interface was designed to fit a laptop screen. However, adding responsiveness to the tool would allow for the GUI to be run on any device!

Responsiveness:

Because all FSMs usually work through a company laptop (1440x1024), the interface was designed to fit a laptop screen. However, adding responsiveness to the tool would allow for the GUI to be run on any device!

Responsiveness:

Because all FSMs usually work through a company laptop (1440x1024), the interface was designed to fit a laptop screen. However, adding responsiveness to the tool would allow for the GUI to be run on any device!

Further Advanced Features

There are many advanced features that can be added to elevate the GUI even more. For example, Phase 1 shows the outputs from the most recent simulation run. However, further phases of the GUI could pull previous run saves into the GUI to compare.

Further Advanced Features

There are many advanced features that can be added to elevate the GUI even more. For example, Phase 1 shows the outputs from the most recent simulation run. However, further phases of the GUI could pull previous run saves into the GUI to compare.

Sara Chong - UI/UX Designer & Developer

Ready to design the future 🚀 with you, one click at a time!

Sara Chong © 2025. Designed on Framer

Goran Babarogic

Ready to design the future 🚀 with you, one click at a time!

Sara Chong © 2025. Designed on Framer

Sara Chong - UI/UX Designer & Developer

Ready to design the future 🚀 with you, one click at a time!

Sara Chong © 2025. Designed on Framer

Create a free website with Framer, the website builder loved by startups, designers and agencies.