\documentclass{article}
\usepackage{graphicx}
\usepackage[nottoc]{tocbibind}
\usepackage{pdfpages}
\usepackage[style=numeric]{biblatex}
\addbibresource{citations.bib}

\begin{document}

\begin{titlepage}
    \begin{center}
        \vspace*{1cm}
            
        \LARGE
        \textbf{TaxDataDashboard}
            
        \vspace{0.5cm}
        \Large
        CS 4624\\
        Multimedia, Hypertext, and Information Access
            
        \vspace{1.5cm}
        
        \large
        Report\\
        May 9, 2023\\
        Blacksburg, VA 24061
            
        \vfill

        \includegraphics[width=0.4\textwidth]{VTLogo.png}
            
        \vspace{0.8cm}
            
        \large
        Instructor: Dr. Edward Fox\\
        Client: Dr. Florian Zach\\
        Authors: Courtney Anderson\\
        Matthew Grillo\\
        Namrata Inamti\\
        Vishnu Sankaran

    \end{center}
\end{titlepage}

\tableofcontents
\newpage

\listoffigures
\newpage

\listoftables
\newpage

\newpage

\section{Abstract}

    The Internal Revenue Service (IRS) Form 990 is a form filed by nonprofit organizations. These forms collect information about the organization's finances, officers, contributors, and other information. These forms are required by law to be published. Starting in 2011, the IRS made the data available in an AWS bucket. As of 2020, the IRS also has published the data on its website.\\
        
    \noindent In Spring 2022, Dr. Zach approached Dr. Fox with the TaxData project. He began working with groups of students to compile this data into a database and to begin analyzing the data. In the Spring 2022 semester, a group of students from the CS 4624: Multimedia, Hypertext, and Information Access capstone
    %. This group of students 
    built a basic database and began to parse the data. In the Fall 2022 semester, one student took over the project and modified the database to be more effective.\\
        
    \noindent This semester, we took over the project from where it was previously left off. Dr. Zach tasked us with creating visualizations that show correlations in the data. He wanted to be able to easily input a list of EINs and showcase a variety of graphs and charts for that list. These visualizations were then to be put on an interactive dashboard where all visualizations could be seen in one easy-to-access location.\\
        
    \noindent The following report outlines the additional work we completed this semester through: Objectives, Deliverables, Requirements, Design, Implementation, Testing, User Manual, Developer's Manual, and Lessons Learned.

\newpage

\section{Introduction}
    \subsection{Problem}
        The IRS has a specific form, Form 990, for non-profit, tax-exempt organizations to fill out each year with their data. Form 990 has variant and related forms that organizations fill out based on the size and type of the company. These types include Form 990, Form 990-EZ, Form 990-PF, Form 990-N, and Form 990-T. \cite{irs}\\
        
        \noindent Once all of this data is collected it is published to the IRS website annually. 
        However, the data is not easily accessible nor compiled for analysis. The main problem at hand is ensuring there is an easy way to analyze IRS data. This is currently difficult because of two factors. First, the IRS changes its forms each year. This means that the data from each year has various columns that may not directly correspond to the data from other years. Second, the dataset is large and difficult to work with. When the files are downloaded, there are various parts and information in different CSV files which makes pulling specific information difficult unless you know exactly where it is in the files.
    
    \subsection{Motivation}
        Our client, Dr. Florian Zach, is an Assistant Professor in the Howard Feiertag Department of Hospitality and Tourism Management, Pamplin College of Business, Virginia Tech, USA \cite{florianzach}. Dr. Zach is doing research on IRS data for non-profit organizations, specifically those related to Hospitality and Tourism Management.\\
        
        \noindent His goal is for us to create a dashboard that allows him and his colleagues to easily view and analyze different aspects of the IRS data. He wants to look at data based on geographic location, such as the number of organizations per state each year, as well as visualizations showcasing revenue, expense, and asset data. Other issues Dr. Zach wants to look at are how gender plays a role in the compensation of those who run these organizations, and how successful these organizations are. 
        
    \subsection{General Approach}
        For this project, we have been tasked with creating a dashboard for showcasing IRS tax data for non-profit, hospitality, and tourism management organizations. This is a continuation of the project done by two CS 4624 teams, one in Spring 2022 \cite{fall2022} and one in Fall 2022 \cite{spring2022}. The two previous groups worked mainly on getting all the data into a single database that can be easily queried. This goal was completed and we just needed to confirm all the data was up to date and that no new data needed to be added.\\
        
        \noindent In order to build our dashboard we have decided to split our tasks into four main segments: visualization round one, gender identification, visualization round two, and dashboard building. In order to do this we will use Jupyter notebooks, SQLlite, and Python. Visualization round one will include building visualizations in a Jupyter notebook using the data provided by the previous teams. We will build maps and charts that will then be imported into our dashboard later on in the process. Gender identification will involve finding an online gender database that predicts gender based on a person's name, joining that with the names of the leaders of the desired organizations, and adding a new column to the database that predicts their gender. Visualization round two will include building visualizations that include this newly added gender information, and improving the interactivity of the visualizations from round one. Finally, building the dashboard will involve pulling together all the visualizations that we have built and making them accessible in one easy-to-use web application.        

\newpage

\section{Requirements}
    In order to begin working on this project there were a few things we needed to gain access to. First, we needed the shared Google Drive. This Drive contains files from the past two semesters, including data, code, and reports. Next, we needed to access the Virginia Tech Gitlab hosted at code.vt.edu and to become maintainers of the git repository for the project. This contains the parsers created by the student from last semester and some of the visualizations that had been worked on in the past.
    \subsection{Deliverables}
        Through meetings between the client and the team, we decided on a few crucial deliverables that should be completed by the end of the semester.
        \begin{enumerate}
            \item An easily accessible dashboard that showcases all created visualizations. This dashboard should be interactive and should allow users to be able to explore the data on their own.
            \item Visualizations that showcase the data in charts, maps, and other ways. This will specifically be the list of visualizations that Dr. Zach provided the team at the beginning of the semester.
            \item Both the process we go through and the code that we write to create these deliverables should be well documented. Documentation is critical for Dr. Zach in using these visualizations and for any future teams that will work on this project. 
        \end{enumerate}

\newpage

\section{Design}
    When it came to the design of our workflow, we took inspiration from guest lecturer Christian Johnson, whose development team utilizes AGILE methodology and two-week-long sprints to keep track of the progression of the project. We have designed the timeline of our project around two-week-long sprints, each with primary objectives to complete. The timeline can be found in Table \ref{table: project timeline} within Section \ref{timeline_section}. When it came to the design of our solution, we used the System Methodology approach, guided by the advice of Dr. Fox. 
    
    \subsection{System Methodology}    
        \subsubsection{Users}
            We identified two types of users for our system: Dashboard Users and Database Users. The goal for dashboard users is to be able to view the IRS Form 990 data and visualizations that we have created. The goal for database users is to be able to visualize the data through custom visualizations and to query the database for specific pieces of information.

        \subsubsection{Tasks}
            The tasks that are discussed in this section are shown as diagrams in Figures \ref{dashboard_user_task1}, \ref{database_user_task1}, and \ref{database_user_task2} found within Section \ref{methodology-section}. There is also a system workflow diagram in Figure \ref{system_workflow} within Section \ref{methodology-section} that summarizes the following tasks into one workflow that will be followed.\\
            
            \noindent The tasks for the dashboard users are as follows:
            \begin{enumerate}
                \item To analyze the IRS Form 990 data using pre-existing visualizations. 
                \begin{enumerate}
                    \item Begin running the dashboard.
                    \item Input a list of EINs for the desired data.
                    \item Select the desired visualization.
                    \item Input the desired year and state for the visualization.
                    \item View and analyze the data.
                \end{enumerate}
            \end{enumerate}

            \noindent The tasks for the database users are as follows:
            \begin{enumerate}
                \item To create custom visualizations. 
                \begin{enumerate}
                    \item Create a new Jupyter notebook.
                    \item Perform a query on the database that extracts the desired data.
                    \item Use query data to create a dataframe.
                    \item Clean the data and ensure it is ready to be used.
                    \item Create the desired chart or graph.
                \end{enumerate}
        
                \item To search the database for a specific piece of information.
                \begin{enumerate}
                    \item Open the database in an SQLite server.
                    \item Perform a query on the database to find desired information.
                \end{enumerate}
            \end{enumerate}

\newpage

\section{Implementation}
    The main deliverable of this project is the Tax Data Dashboard. Our goal is to allow users to interact with and explore the data on their own. To accomplish this, we broke down our deliverable into multiple parts.

    \subsection{Getting new IRS nonprofit data and updating database}
        In order to have the dataset contain the most up-to-date information, you would have to:
        \begin{enumerate}
            \item Retrieve the most recent files containing the data from the IRS website
            \item Make a backup of the current database
            \item Modify the database update scripts from prior projects
            \item Insert new data into the database using the update scripts
            \item Validate that the database contains the full data set
        \end{enumerate}
        Our team had started this process, and at step 1 we found out that there had not been any new data added, so we were able to skip this part.
        
    \subsection{Making the Visualizations}
        Our team used Jupyter Notebooks, Pandas, Matplotlib, and Plotly Express to get familiar with the data, create some visualizations, and prioritize which ones would be most useful in the dashboard. During this time our client, Dr. Zach, provided us with a list of visualizations for us to create. The visualizations that were created during this process can be seen in Section \ref{visualization-section}.
    
    \subsection{Gender Identification}
        Gender identification involved the addition of a column that indicates the officer's gender into the Schedule J tables in the database. This was done through a Python script that utilized a Python package called gender\_guesser. This package is an open-source package that assigns a gender based on a first name. The detector takes in a string argument and returns either female, male, mostly\_female, mostly\_male, andy, or unknown. We parsed the database by querying the Schedule J tables one year at a time. Once the table was queried, a new table was added and then an insert query was performed for each unique first name that added the corresponding gender to that row of the table.
    
    \subsection{Making the Dashboard}
        Once the visualizations were created, we compiled them into one dashboard. We used Plotly Dash to create the dashboard. We found that Dash easily took Plotly Express graphs and made them interactive. We were able to give each visualization its own page that can be viewed and modified with drop-down menus. Each page of the dashboard, as well as a short description of the page, can be found in Section \ref{dashboard-section}.

\newpage

\section{Testing/Evaluation/Assessment}
    Due to the nature of our project, not much testing was needed to be conducted. After the first few weeks of the project, we had developed an understanding on the process that was needed to first obtain the relevant data, clean it, and visualize it. The visualizations themselves became the deliverables for the project.
    As such, evaluations and assessments were conducted by our client, Dr. Zach, on a bi-weekly basis. During these meetings we would show Dr. Zach the visualizations that had been created thus far in order to receive feedback on the design of them. He would offer ideas for improvements and if it was possible to modify them accordingly, we would go back and implement them before finalizing each visualization requested by the client. 
    
\newpage

\section{User's Manual}
    \subsection{Visualizations}
\noindent Table \ref{table: visualizations} provides a list of all of the visualizations created along with a description of them and what file they can be found in. Users can use this table to find what they are looking for, and go directly to that file. Once the user accesses the Jupyter Notebook, there are instructions on how to edit the input EIN file and modify any variables that are meant to be interactive. The visualizations that are noted to take in a list of EINs, will read from a provided file to create visualizations only for the EINs provided. All of these visualizations are also included in the dashboard.
        
        \begin{table}[!ht]
            \begin{tabular}{|c|l|l|}
                \hline
                \textbf{Visualization} & \multicolumn{1}{c|}{\textbf{Description}} & \textbf{File} \\ \hline
                \begin{tabular}[c]{@{}c@{}}No. Organiza-\\tions by State\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows no. organizations from  each state \\that filed taxes every year. User can \\ select year of filing. Takes in a list of EINs.\end{tabular} & \begin{tabular}[c]{@{}l@{}}NumOfOrgs\_ByState\_\\ ByYear.ipynb\end{tabular} \\ \hline
                \begin{tabular}[c]{@{}c@{}}Organization \\ Age \\ Correlations\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows the total revenue, assets, expenses, \\ and liabilities vs. organization age. User \\can select variable. Takes in a list of EINs.\end{tabular} & \begin{tabular}[c]{@{}l@{}}OrganizationAge\_\\ Visualizations.ipynb\end{tabular} \\ \hline
                \begin{tabular}[c]{@{}c@{}}Top 25 \\ Employees\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows the top 25 employees by total \\ compensation, base compensation, \\ bonuses, nontaxable benefits,  retirement \\ and deferred compensation, and other \\ compensation. Indicates gender. User can \\ select variable, state, and year. Takes in a \\ list of EINs.\end{tabular} & \begin{tabular}[c]{@{}l@{}}Top25\_HighestPaid\\ Employees.ipynb\end{tabular} \\ \hline
                \begin{tabular}[c]{@{}c@{}}Tax Exemption \\ Status \& \\ Organization \\ Form Type\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows breakdown of filings and values by \\ exemption status (501(c)(3), 501(c), 4947\\ (a)(1), 527) and organization type \\ (corporation, association, trust, other). \\ User can select variable.\end{tabular} & \begin{tabular}[c]{@{}l@{}}TaxExemptionStatus\_\\ OrganizationForm\_\\ Visualizations.ipynb\end{tabular} \\ \hline
                Top Organizations & \begin{tabular}[c]{@{}l@{}}Shows the top 25 organizations by age, \\ assets, benefits, expenses, liabilities, \\ revenue, and salaries. User can select \\ variable, state, and year.\end{tabular} & \begin{tabular}[c]{@{}l@{}}TopOrgs\_ByVariable.\\ ipynb\end{tabular} \\ \hline
                Data Over Time & \begin{tabular}[c]{@{}l@{}}Shows the revenue, expenses, assets, \\ liabilities, benefits, and salaries for an \\ organization over time. User can select \\ organizations. Takes in a list of EINs.\end{tabular} & \begin{tabular}[c]{@{}l@{}}LineChart\_ByVariable.\\ ipynb\end{tabular} \\ \hline
                \begin{tabular}[c]{@{}c@{}}No. Organiza-\\tions by State - \\ Year Formation\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows the number of organizations \\ founded in each state each year. User can \\ select year. Takes in a list of EINs.\end{tabular} & Only in dashboard \\ \hline
                \begin{tabular}[c]{@{}c@{}}Organization \\ Compensation\end{tabular} & \begin{tabular}[c]{@{}l@{}}Shows the ratio and percentage of \\ organizations that offer club dues, \\ discretionary spending accounts, first \\ class or charter travel, housing allowance, \\ tax indemnification, personal services, \\ travel companions, business use of \\ personal residence, and a written policy \\ for these benefits. Takes in a list of EINs.\end{tabular} & Only in dashboard \\ \hline
            \end{tabular}
            \caption{Visualization Descriptions \& Files}
            \label{table: visualizations}
        \end{table}

    \newpage
        
    \subsection{Dashboard}
    The dashboard can be run locally on any computer. There are a few prerequisites needed in order to make sure the dashboard can be run on a machine. The following steps explain how to run the dashboard:
    \begin{enumerate}
        \item Clone the gitlab repository
        \item Download the NPTR.db file from ARC
        \item Place the NPTR.db file into the Dashboard folder
        \item Place the EIN list file into the Dashboard folder
        \item Open the folder in VSCode
        \item Run the following commands in the terminal
            \begin{itemize}
                \item pip install dash
                \item pip install express
                \item pip install sys
                \item pip install sqlite3
                \item pip install pandas
            \end{itemize}
        \item Run the command `python create\_csv.py *Input File*'. Here the Input File is the list of EINs you want to look as specifically.
        \item Run the command `python app.py'. This will start running the app.
        \item Click on the http link in the terminal. This will open the dashboard in your browser. 
    \end{enumerate}
    Once the dashboard is running, the user should be able to look through all of the visualizations and use all of the available drop-down menus that make the dashboard interactive. 
    

\newpage

\section{Developer's Manual}
    \subsection{Database}
    The database at it stands contains 189 relations, most of which are partitions of the annual tax form 990, and form 990EZ data. It also includes a relation named ``TagsMapping" which is used to convert XML paths into shorter, digestible attribute names appropriate to the data located at that XML path. Each attribute also has a description, which has been very helpful for drawing visualizations and comprehending the data that is stored in the database. All information regarding the ``TagsMapping" relation is pulled from the Nonprofit Open Data Collective where it is kept up to date at \url{https://github.com/Nonprofit-Open-Data-Collective/irs990efile}.

    More technically, the database is a sqlite3 relational database and can be interacted with easily through the sqlite3 Python package; this is also what is used in the parsing scripts and for our visualizations. 

    \subsection{Visualizations}
    In order to get the data in a format that enables proper visualizations, compound SQL queries and external merging of the data is often necessary as a result of the design decisions of the previous capstone project team. For this, we found that the Pandas Python package is the best suited for viewing the dataset and making sure that the data is formatted correctly. Creating nice visuals for Dr. Zach to be able to interpret and include in his reports was a primary factor as well when creating visualizations. To accomplish this we utilized the matplotlib Python package as it allows for quick graphics to be created and configured to ours and Dr. Zach's liking. 
\newpage

\section{Lessons Learned}
    \subsection{Timeline/Schedule}
    \label{timeline_section}
        Our timeline for the project can be seen in Table \ref{table: project timeline}.
        
        \begin{table}[h!]
            \centering
            \begin{tabular}{ | p{2cm} | p{9cm} |} 
                \hline
                Week 1 \& 2: 2/2-2/15 & - Getting new IRS nonprofit data. 
                    \newline - Updating Database with new data; ensure no duplicates.\\
                \hline
                Week 3 \& 4: 2/16-3/1 & - First round of Visualizations using Jupyter Notebook, Pandas, Matplotlib. 
                    \newline - Take feedback from the client at the halfway meeting (2/19) and adjust visualizations.\\
                \hline
                Week 5 \& 6: 3/2-3/15 & - Gender identification.\\
                \hline
                Week 7 \& 8: 3/16-3/30 & - Adapt Visualizations to be interactive (filter data, etc.).\\
                \hline
                Week 9 - 12: 3/31-5/2 & - Second round of visualizations and building the dashboard. 
                    \newline - Demo\\
                \hline
            \end{tabular}
            \caption{Project Timeline}
            \label{table: project timeline}
        \end{table}

        \noindent During the first two weeks of February, we were getting familiar with the preexisting database. We spent time reading the reports and documentation of the previous teams, as well as meeting with Dr. Zach to learn more about the project. We gained access to a shared Google Drive that had information from the past two semesters, the ARC cluster that stores the database, and a git repository that had all the code made by previous students. After becoming familiar with the work that already existed, we went on to the IRS website to see if any new data had been added since the database had been updated in August 2022. We found out that there had not been any new data added and determined that the database was already up to date.\\

        \noindent The next two weeks were spent playing around with the data and different ways of presenting it. We used Jupyter notebooks to explore correlations in the data, and start to build out figures that will eventually be in our dashboard. Dr. Zach asked for an extract of the data at this time, and we were able to provide CSV and JSON files for each of the tables that he wanted data from. \\
        
        \noindent During the month of March we were able to complete the list of visualizations provided by Dr. Zach, as well as visualizations that we thought were interesting. 
        
    \subsection{Problems}
        There were two main problems that occurred during the project.
        \begin{enumerate}
            \item The current database was comprised of 189 tables, each corresponding to a different part of a type of Form 990 and the year that the form was filed. This meant that each time the data needed to be aggregated a temporary data frame had to be created using Pandas. This took up extra time in our program runtime. 
            \item Duplicate EINs were found throughout the database. Many organizations had multiple filings for the same year due to a form revision.
        \end{enumerate}
        
    \subsection{Solutions}
        In order to solve these problems, the team came up with the following solutions:
        \begin{itemize}
            \item We created a template that would merge all of the necessary tables into one table at the beginning of each Jupyter Notebook.
            \item We found a way to query the database that removed the duplicate data.
        \end{itemize}
        We decided to find work-arounds for these problems in order to produce more results and ultimately make visualizations that Dr. Zach could use immediately.
        
    \subsection{Future Work}

        Work that we recommend be done includes:
        \begin{enumerate}
            \item Make the database more efficient. Remove the duplicate data that can be found for many of the EINs in each table. Combine all of the tables to no longer be by year, but just by form type.
            \item Publish both the database and the dashboard to a server. This will be more efficient for developers when creating new visualizations and users when trying to run the dashboard.
        \end{enumerate}
        

\newpage

\section{Acknowledgements}
    We would like to thank Dr. Zach for giving us this project to work on and for collaborating with us to create the data visualizations and dashboard. We would also like to thank Dr. Fox for his guidance so far this semester.

\newpage

\section{References}
    \printbibliography[title=Bibliography]

\newpage
   
\section{Appendices}
    \subsection{Appendix A: Methodology Assignment}
        \label{methodology-section}
            \begin{figure}[ht]
            \center{\includegraphics[height=14cm]
            {Methodology/DashboardUserTask1.png}}
            \caption{\label{dashboard_user_task1} Dashboard User Task 1}
            \end{figure}
    
            \noindent The first task of a dashboard user is to be able to analyze the IRS Form 990 data using the visualizations we created this semester. Figure \ref{dashboard_user_task1} shows the process a dashboard user would go through in order to successfully complete this task.
    
            \newpage
            
            \begin{figure}[ht]
            \center{\includegraphics[height=14cm]
            {Methodology/DatabaseUserTask1.png}}
            \caption{\label{database_user_task1} Database User Task 1}
            \end{figure}
    
            \noindent The first task of a database user is to create custom visualizations using the database. Figure \ref{database_user_task1} shows the process a database user would go through in order to successfully complete this task.
    
            \newpage
        
            \begin{figure}[ht]
            \center{\includegraphics[height=14cm]
            {Methodology/DatabaseUserTask2.png}}
            \caption{\label{database_user_task2} Database User Task 2}
            \end{figure}
    
            \noindent The second task of a database user is to be able to query the database for a specific piece of information. Figure \ref{database_user_task2} shows the process a database user would go through in order to successfully complete this task.
    
            \newpage
            
            \begin{figure}[ht]
            \center{\includegraphics[width=\textwidth]
            {Methodology/SystemWorkflow.png}}
            \caption{\label{system_workflow} System Workflow}
            \end{figure}
    
            \noindent The system workflow can be summarized by the diagram shown in Figure \ref{system_workflow}. The circles represent the user types, the text are the goals, the squares are the tasks, and the diamonds are the subtasks.

            \newpage

    \subsection{Appendix B: Visualizations}
        \label{visualization-section}
            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_BaseCompensation_CA_2019.png}}
            \caption{\label{top25-base-compensation} Top 25 Base Compensation CA 2019}
            \end{figure}

            \noindent Figure \ref{top25-base-compensation} shows the top 25 employees in California in the year 2019 for the base compensation variable. The bars are color-coded based on the gender of the employee.

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_Bonuses_CA_2019.png}}
            \caption{\label{top25-bonuses} Top 25 Bonuses CA 2019}
            \end{figure}

            \noindent Figure \ref{top25-bonuses} shows the top 25 employees in California in the year 2019 for the bonuses variable. The bars are color-coded based on the gender of the employee.

            \newpage

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_DeferredCompensation_CA_2019.png}}
            \caption{\label{top25-deferred-compensation} Top 25 Deferred Compensation CA 2019}
            \end{figure}  

            \noindent Figure \ref{top25-deferred-compensation} shows the top 25 employees in California in the year 2019 for the deferred compensation variable. The bars are color-coded based on the gender of the employee.

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_NontaxableBenefits_CA_2019.png}}
            \caption{\label{top25-nontaxable-benefits} Top 25 Nontaxable Benefits CA 2019}
            \end{figure}   

            \noindent Figure \ref{top25-nontaxable-benefits} shows the top 25 employees in California in the year 2019 for the nontaxable benefits variable. The bars are color-coded based on the gender of the employee.

            \newpage

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_OtherCompensation_CA_2019.png}}
            \caption{\label{top25-other-compensation} Top 25 Other Compensation CA 2019}
            \end{figure}  

            \noindent Figure \ref{top25-other-compensation} shows the top 25 employees in California in the year 2019 for the other compensation variable. The bars are color-coded based on the gender of the employee.

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/Top25_TotalBenefits_CA_2019.png}}
            \caption{\label{top25-total-benefits} Top 25 Total Benefits CA 2019}
            \end{figure}  

            \noindent Figure \ref{top25-total-benefits} shows the top 25 employees in California in the year 2019 for the total benefits variable. The bars are color-coded based on the gender of the employee.

            \newpage

            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Visualizations/TotalRevenue_vs_AgeOfOrganization.png}}
            \caption{\label{total-revenue-vs-organization-age} Total Revenue vs. Age Of Organization}
            \end{figure} 

            \noindent Figure \ref{total-revenue-vs-organization-age} shows a scatter plot with trend lines for each year taxes were filed comparing the total revenue of an organization to the organization's age. 

    \newpage

    \subsection{Appendix C: Dashboard Pages}
        \label{dashboard-section}
            \begin{figure}[!h]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_OrganizationCount.pdf}}
            \caption{\label{dashboard-organization-count} Organization Count Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-organization-count} shows the organization count page of the dashboard. On this page there is a color map that shows the number of organizations filing taxes each year given a list of EINs. The drop-down menu allows the user to select what year they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_OrganizationAge.pdf}}
            \caption{\label{dashboard-organization-age} Organization Age Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-organization-age} shows the organization age page of the dashboard. On this page there are two scatter plots. One shows the selected variable versus the age of an organization for all filings given a list of EINs.
            Another shows the same thing, but  only for the most recent filing. The drop-down menu allows the user to select what variable they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_TopEmployees.pdf}}
            \caption{\label{dashboard-top-employees} Top Employees Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-top-employees} shows the top 25 employees page of the dashboard. On this page there is a bar graph that shows the top 25 employees for the selected variable, state, and year -- given a list of EINs. The drop-down menus allow the user to select what variable, state, and year they want to see data for. 

            \newpage
            
            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_ExemptionStatusOrganizationForm.pdf}}
            \caption{\label{dashboard-exemption-status-organization-count} Exemption Status \& Organization Count Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-exemption-status-organization-count} shows the exemption status and organization form page of the dashboard. On this page there are two pie charts. One shows the breakdown of filings by exemption status and the other shows the breakdown of filings by organization type. The page also has two box plots. One shows the selected variable by exemption status, and the other shows the selected variable by organization type. The drop-down menu allows the user to select the variable they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_TopOrganizations.pdf}}
            \caption{\label{dashboard-top-organizations} Top Organizations Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-top-organizations} shows the top organizations page of the dashboard. On this page there are two bar charts. One shows the top 25 organizations for the selected variable state and year given a list of EINs.
            The other  shows the top 50 organizations across the United States for the selected variable and year, given a list of EINs. The drop-down menus allow the user to select the variable, state, and year they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_DataOverTime.pdf}}
            \caption{\label{dashboard-data-over-time} Data Over Time Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-data-over-time} shows the data over time page of the dashboard. On this page there is a line chart that shows the revenue, expenses, assets, liabilities, benefits, and salaries over time for the selected organization. The drop-down menus allow the user to select what organization they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_OrganizationYearFounded.pdf}}
            \caption{\label{dashboard-organization-year-founded} Organization Count by Year Formation Page}
            \end{figure} 

            \noindent Figure \ref{dashboard-organization-year-founded} shows the organization count by year formation page of the dashboard. On this page there is a color map that shows the number of organizations founded in each state each year, given a list of EINs. The drop-down menu allows the user to select what year they want to see data for. 

            \newpage

            \begin{figure}[!ht]
            \center{\includegraphics[width=\textwidth]
            {Dashboard/Dashboard_OrganizationCompensation.pdf}}
            \caption{\label{dashboard-organization-compensation} Organization Compensation Page}
            \end{figure}

            \noindent Figure \ref{dashboard-organization-compensation} shows the organization compensation page of the dashboard. On this page there are six bar charts. The first two show the ratio and percentage of organizations that contribute to the different types of compensation, given a list of EINs. The bottom four show the same data broken down by gender.

\end{document}
