Project Purpose: No existing system at UPS provides full visibility into Premier inbound flight contents. Previously, this information had to be gathered through several manual processes. This tool automates the workflow and removes the need for manual inbound distribution creation.
Implementation Overview: I created this tool using VBA Automation in excel, combined with advanced formulas to automate data import, analysis and reporting.
Organizational Impact: This tool improves operational visibility by automatically compiling CPV (Critical Package Visibility) data to help the Premier Service Team anticipate shipments and plan resources more effectively.
From August 1 through October 17, 2025, this tool provided visibility on 283 contingent Premier shipments. This allowed for 228 interceptions, directly improving on-time-by-day deliveries.
Below is the output that this automated tool creates. It compiles and organizes the most important information (ie Tracking Number, Premier Categorization, Shipper Name, Inbound Flight Number, Inbound Airport Gateway, Inbound Bag (if applicable), Inbound ULD, Package Weight, Outbound Airport Gateway, Outbound Gateway Hot/Sort Down Categorization, ‘Hot/Sort Down – Premier Categorization’, and Weight Class.)
Sub Pull_CPV_and_OCAT()
Dim folderPath As String
Dim fileSystem As Object
Dim folder As Object
Dim file As Object
Dim latestCPVFile As String, latestOCATFile As String
Dim latestCPVDate As Date, latestOCATDate As Date
Dim fileDate As Date
Dim sourceWB As Workbook, targetWB As Workbook, exportWB As Workbook
Dim sourceWS As Worksheet, targetWS As Worksheet, distroWS As Worksheet
Dim exportWS As Worksheet
Dim targetWBName As String
Dim lastRow As Long
folderPath = Environ("USERPROFILE") & "\Downloads\"
targetWBName = "new.distro.maker.xlsm"
Set fileSystem = CreateObject("Scripting.FileSystemObject")
Set folder = fileSystem.GetFolder(folderPath)
latestCPVDate = #1/1/1900#
latestOCATDate = #1/1/1900#
'R1-------- Loop files in downloads folder-------'
For Each file In folder.Files
fileDate = file.DateLastModified
If file.Name Like "Package_Details_Export*" Then
If fileDate > latestCPVDate Then
latestCPVDate = fileDate
latestCPVFile = file.Name
End If
ElseIf file.Name Like "TrackingExport*" Then
If fileDate > latestOCATDate Then
latestOCATDate = fileDate
latestOCATFile = file.Name
End If
End If
Next file
'R2---------------open target workbook-----------------'
On Error Resume Next
Set targetWB = Workbooks(targetWBName)
On Error GoTo 0
If targetWB Is Nothing Then
MsgBox "Workbook '" & targetWBName & "' is not open. Please open it and try again.", vbExclamation
Exit Sub
End If
Application.ScreenUpdating = False
'R3---------------import cpv download---------------'
If latestCPVFile <> "" Then
Set sourceWB = Workbooks.Open(folderPath & latestCPVFile)
Set sourceWS = sourceWB.Sheets(1)
Set targetWS = targetWB.Sheets("IMPORTED FROM CPV")
targetWS.Cells.Clear
sourceWS.UsedRange.Copy Destination:=targetWS.Range("A1")
sourceWB.Close SaveChanges:=False
MsgBox "Data imported to 'IMPORTED FROM CPV' successfully.", vbInformation
Else
MsgBox "No 'Package_Details_Export*' file found in Downloads.", vbExclamation
End If
'R8-2f--------- Classify -----------'
valN = Trim(UCase(wsCheck.Cells(i, "N").Value))
If valN = "FROM INBOUND FEEDER" Then
wsCheck.Cells(i, "O").Value = "Inbound PW Feeder"
Else
wsCheck.Cells(i, "O").ClearContents
End If
valP = Trim(UCase(wsCheck.Cells(i, "P").Value))
Select Case True
Case valP Like "*ARRIVED*" Or valP Like "*BLOCKED-IN*" Or _
valP Like "*CHECKED-IN*" Or valP Like "*SPOTTED*"
wsCheck.Cells(i, "Q").Value = "At SDF, Not Sorting"
Case valP Like "*FORECASTED*"
wsCheck.Cells(i, "Q").Value = "Not at SDF"
Case valP Like "*SORTING*"
wsCheck.Cells(i, "Q").Value = "Sorting, Not Processed"
Case valP Like "*LOADED*" Or valP Like "*ON-AIRCRAFT*" Or valP Like "*DEPARTED*"
wsCheck.Cells(i, "Q").Value = "In Outbound Configuration, Processed"
Case Else
wsCheck.Cells(i, "Q").ClearContents
End Select
valQ = Trim(UCase(wsCheck.Cells(i, "Q").Value))
Select Case True
Case valQ Like "*AT SDF*" Or valQ Like "*NOT AT SDF*" Or valQ Like "*SORTING*"
wsCheck.Cells(i, "R").Value = "Not Processed"
Case valQ Like "*IN OUTBOUND CONFIGURATION*"
wsCheck.Cells(i, "R").Value = "Processed"
Case Else
wsCheck.Cells(i, "R").ClearContents
End Select
End If ' only process if column A not blank
Next i
'R11----------Step 3: Copy results to "Not Processed From Feeders" -----------'
Application.StatusBar = "Copying data to 'Not Processed From Feeders'..."
On Error Resume Next
Set wsDest = ThisWorkbook.Sheets("Not Processed From Feeders")
If wsDest Is Nothing Then
Set wsDest = ThisWorkbook.Sheets.Add
wsDest.Name = "Not Processed From Feeders"
End If
On Error GoTo 0
wsDest.Range("A3:I" & wsDest.Rows.Count).ClearContents
destRow = 3
For i = 2 To lastRow
If Trim(wsCheck.Cells(i, "A").Value) <> "" Then
If wsCheck.Cells(i, "N").Value = "From Inbound Feeder" Then
If wsCheck.Cells(i, "T").Value = "Not at SDF" Or wsCheck.Cells(i, "T").Value = "At SDF, Not Sorting" Then
wsDest.Cells(destRow, "A").Resize(1, 9).Value = Array(_ wsCheck.Cells(i, "A").Value,_ wsCheck.Cells(i, "B").Value, _wsCheck.Cells(i, "D").Value, _ wsCheck.Cells(i, "E").Value, _ wsCheck.Cells(i, "G").Value, _ wsCheck.Cells(i, "M").Value, _ wsCheck.Cells(i, "W").Value, _wsCheck.Cells(i, "X").Value, _ wsCheck.Cells(i, "Y").Value)
destRow = destRow + 1
End If
End If
End If
Next i
MsgBox "? Import and processing complete!" & vbCrLf & _
(destRow - 3) & " rows copied to 'Not Processed From Feeders'.", vbInformation
Cleanup:
Application.StatusBar = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Project Purpose: The CPV application does not display destination or package weight details for forecasted and not-yet-sorting shipments, limiting visibility on anticipated Premier volume. This tool improves operational visibility by automatically compiling CPV data to help the Premier Service Team anticipate shipments and plan resources more effectively.
Implementation Overview: I created this tool using Excel Power Query and VBA Automation.
Organizational Impact: This tool improves operational visibility by automatically compiling CPV data to help the Premier Service Team and anticipate shipments, identify anomalies, and prepare the Operations for contingent situations.
Below is the output that this automated tool creates:
The ‘Package Status’ section compiles and organizes all Premier packages coming from all inbound locations by Critical Category (Platinum, Gold, Silver), Outbound Classification (Hot, Sort Down), and the sorting status of each package.
The ‘Feeder Status’ section compiles and organizes Premier Package information coming only from Feeder Inbound locations.
//Pull CPV PQ
let
// Read File path from config sheet, determine user
PathTable = Excel.CurrentWorkbook(){[Name="DownloadsPath"]}[Content],
PathValue = PathTable{0}[Column1],
// list folder contents
Source = Folder.Files(PathValue),
// filter "package_details_export"
Filtered = Table.SelectRows(Source, each Text.Contains(Text.Lower([Name]), "package_details_export") and Text.EndsWith(Text.Lower([Name]), ".xlsx")),
// sort newest to oldest
Sorted = Table.Sort(Filtered, {{"Date modified", Order.Descending}}),
// find newest file
Latest = Table.FirstN(Sorted, 1),
// if not found, send error message
Output =
if Table.IsEmpty(Latest) then
#table(
{"Error"},
{{"No file found matching 'Package_Details_Export' in " & PathValue}}
)
else
let
FileBinary = Latest{0}[Content],
ExcelData = Excel.Workbook(FileBinary, true),
FirstSheet = ExcelData{0}[Data],
Promoted = Table.PromoteHeaders(FirstSheet, [PromoteAllScalars = true])
in
Promoted,
#"Demoted Headers" = Table.DemoteHeaders(Output),
#"Changed Type" = Table.TransformColumnTypes(#"Demoted Headers",{{"Column1", type text}, {"Column2", Int64.Type}, {"Column3", Int64.Type}, {"Column4", type datetime}, {"Column5", type text}, {"Column6", type text}, {"Column7", Int64.Type}, {"Column8", type text}, {"Column9", type text}, {"Column10", Int64.Type}, {"Column11", type logical}, {"Column12", Int64.Type}, {"Column13", type text}, {"Column14", type text}, {"Column15", type any}, {"Column16", Int64.Type}, {"Column17", type text}, {"Column18", type any}, {"Column19", type text}, {"Column20", type any}, {"Column21", type text}, {"Column22", type any}, {"Column23", type text}, {"Column24", type any}, {"Column25", type text}, {"Column26", type any}, {"Column27", type text}, {"Column28", type any}, {"Column29", type text}, {"Column30", type text}, {"Column31", type any}, {"Column32", type text}, {"Column33", type text}, {"Column34", type text}, {"Column35", type text}, {"Column36", type text}, {"Column37", type text}, {"Column38", type any}, {"Column39", Int64.Type}, {"Column40", type text}, {"Column41", type any}, {"Column42", type any}, {"Column43", type any}, {"Column44", type text}, {"Column45", type text}, {"Column46", type any}, {"Column47", type text}, {"Column48", type any}, {"Column49", type any}, {"Column50", type text}, {"Column51", type text}, {"Column52", type text}, {"Column53", type text}, {"Column54", type any}, {"Column55", type any}, {"Column56", type text}, {"Column57", type text}, {"Column58", type text}, {"Column59", type text}, {"Column60", type text}, {"Column61", type any}, {"Column62", type any}, {"Column63", type text}, {"Column64", type text}, {"Column65", type text}, {"Column66", type text}, {"Column67", type text}, {"Column68", type text}, {"Column69", type text}, {"Column70", type text}, {"Column71", type text}, {"Column72", type text}, {"Column73", type text}, {"Column74", type any}, {"Column75", type text}, {"Column76", type any}, {"Column77", type text}, {"Column78", type datetime}, {"Column79", type datetime}, {"Column80", type datetime}, {"Column81", Int64.Type}, {"Column82", type datetime}, {"Column83", type text}, {"Column84", type text}, {"Column85", type text}, {"Column86", type text}, {"Column87", type any}, {"Column88", type any}, {"Column89", type any}, {"Column90", type any}, {"Column91", type text}, {"Column92", type text}, {"Column93", type any}, {"Column94", type any}})
in
#"Changed Type"
#"Added Custom" = Table.AddColumn(#"Demoted Headers1", "R", each let
txt = Text.Upper(Text.From([Column14])) // replace Column14 with your real header
in
if Text.Contains(txt, "ARRIVED")
or Text.Contains(txt, "BLOCKED-IN")
or Text.Contains(txt, "CHECKED-IN")
or Text.Contains(txt, "SPOTTED") then
"At SDF, Not Sorting"
else if Text.Contains(txt, "FORECASTED") then
"Not at SDF"
else if Text.Contains(txt, "SORTING") then
"Sorting, Not Processed"
else if Text.Contains(txt, "LOADED")
or Text.Contains(txt, "ON-AIRCRAFT")
or Text.Contains(txt, "DEPARTED") then
"In Outbound Configuration, Processed"
else
null),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "S", each if [Column6] = null or [Column6] = "" then
[Column5]
else if [Column5] <> null and [Column5] <> "" then
[Column5]
else
null),
#"Merged Queries" = Table.NestedJoin(#"Added Custom1", {"Column5"}, #"Pull OCAT", {"Tracking ID"}, "Pull OCAT", JoinKind.LeftOuter),
#"Expanded Pull OCAT" = Table.ExpandTableColumn(#"Merged Queries", "Pull OCAT", {"Consignee Postal Code"}, {"Pull OCAT.Consignee Postal Code"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Pull OCAT",{{"Column2", type text}, {"Pull OCAT.Consignee Postal Code", type text}}),
#"Merged Queries1" = Table.NestedJoin(#"Changed Type", {"Pull OCAT.Consignee Postal Code"}, tblztl, {"ZIP_CD"}, "tblztl", JoinKind.LeftOuter),
#"Expanded tblztl" = Table.ExpandTableColumn(#"Merged Queries1", "tblztl", {"PRCL_LOAD_AIR_GTWY"}, {"tblztl.PRCL_LOAD_AIR_GTWY"}),
#"Merged Queries2" = Table.NestedJoin(#"Expanded tblztl", {"tblztl.PRCL_LOAD_AIR_GTWY"}, hsd, {"GTWY"}, "hsd", JoinKind.LeftOuter),
#"Expanded hsd" = Table.ExpandTableColumn(#"Merged Queries2", "hsd", {"SD/H"}, {"hsd.SD/H"}),
#"Added Custom2" = Table.AddColumn(#"Expanded hsd", "CombinedTag", each Text.Combine({
Text.From([R])," - ",
Text.from([Column9])," - ",
Text.From(Record.Field(_, "hsd.SD/H"))
})),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "InboundType", each let
val = Text.From([Column69])
in
if val <> null and val <> "" and Text.Start(Text.Upper(val), 1) <> "A" then
"Inbound Feeder"
else
null),
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "FullFeeder", each if [InboundType] <> null and [InboundType] <> "" then
Text.Combine({
Text.From([InboundType]),
" - ",
Text.From([CombinedTag])
})
else
null)
in
#"Added Custom4"
Project Purpose: This program was developed to provide an efficient tool for estimating shipping contract prices based on the selected carrier, business type, and contract duration.
Project Educational Purpose: This project enhanced my understanding of building interactive user interfaces in C#, including the creation of forms, buttons, and the use of relative references within the development environment.
Implementation Overview: I created this program using C# and Microsoft Visual Studio.
//cis 199-50-4238
//this program allows a user to choose a shipping provider, choose your business, and the contract length and it
//gives you the total price and discounts based on your selections
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace Prog3
{
public partial class program3form : Form
{
public program3form()
{
InitializeComponent();
}
private void calcbutton_Click(object sender, EventArgs e)
{
int contractlength;
string[] shippingProviderLookup = { "USPS", "DHL", "FedEx", "UPS" };
double[] discountLookup = { 0.22, 0.18, 0.19, 0.20 };
string[] shippingBusinessLookup = { "John’s Books", "Office Supplies", "J.B. Car Parts", "Gevalia Coffee", "Ceylon Tea", "My Footwear" };
double[] contractPrice = { 50000, 85000, 60000, 75000, 95000, 55000 };
string[] contractLength = { "0","1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
double[] lengthDiscount = { 0, 0, 10000, 10000, 10000, 20000, 20000, 20000, 30000, 30000, 30000 };
if (providerbox.SelectedIndex >= 0)
{
if (businessbox.SelectedIndex >= 0)
{
if (int.TryParse(contracttextbox.Text, out contractlength) && (contractlength >= 0) && (contractlength <=10))
{
double cDiscount = 0;
for (int i = 0; i < shippingProviderLookup.Length; i++)
{
if (providerbox.Text == shippingProviderLookup[i])
{ shippingproviderOUT.Text = shippingProviderLookup[i];
cDiscount = discountLookup[i];
}
}
double businessContractPrice = 0;
for (int i = 0; i < shippingBusinessLookup.Length; i++)
{
if (businessbox.Text == shippingBusinessLookup[i])
{
businessContractPrice = contractPrice[i];
}
}
double lDiscount = 0;
for (int i=0; i < contractLength.Length; i++)
{
if (contracttextbox.Text == contractLength[i])
{
lDiscount = lengthDiscount[i];
}
}
double finalPrice = (businessContractPrice - (businessContractPrice * cDiscount) - lDiscount);
finalpriceOUT.Text = $"{finalPrice:C2}";
initialcontractpriceOUT.Text = $"{businessContractPrice:C2}";
companydiscountOUT.Text = $"{cDiscount*businessContractPrice:C2}";
lengthdiscountOUT.Text = $"{lDiscount:C2}";
}
else MessageBox.Show("You must input a valid contract length (1-10)!");
}
else MessageBox.Show("You must select a business!");
}
else MessageBox.Show("You must select a provider!");
}
private void initialcontractpriceOUT_Load(object sender, EventArgs e)
{
}
}
}
Project Purpose: This Access Database was created to input and track vaccine shipment data using structured data tables, relational queries, and custom forms and reports to ensure efficient recordkeeping.
Project Educational Purpose: This project enhanced my understanding of constructing interactive data tables, establishing relationships between datasets and developing dynamic reports and user forms within Microsoft Access.
Implementation Overview: I created this program using Microsoft Access.
Project Purpose: This project utilizes PECmd (Prefetch Explorer Command-Line) to analyze the contents of the target “PREFETCH” folder and extract execution timelines, metadata, and system activity details.
Project Educational Purpose: This project helped me demonstrate my knowledge of how Windows Prefetch artifacts can be acquired and parsed using forensic command-line tools. It highlights my ability to extract, process, and interpret system-level execution data.
Implementation Overview: I analyzed the contents of the target folder using Eric Zimmerman’s PECmd tool and executed parsing commands within Windows Command Prompt.
1. I began by acquiring the target folder and all associated files, identified as the “Prefetch” folder.
2. After downloading Eric Zimmerman’s PECmd (Prefetch Explorer Command-Line) forensic tool, I parsed the contents of the target folder using the following Windows Command Prompt command. This command processes the Prefetch folder and saves the parsed output to the ‘PECMD_Output’ directory.
# step 2
# Windows Command Prompt -- PECMD Command
PECmd.exe -d "C:\Users\15022\Downloads\Prefetch" --csv C:\Users\15022\Downloads\PECMD_Output
3. The following files were yielded as the parsed output: 20251029003330_PECmd_Output.csv and 20251029003330_PECmd_Output_Timeline.csv
# Step 3
# Windows Command Prompt -- PECMD Output Files
C:\>dir "C:\Users\15022\Downloads\PECmd_Output"
Volume in drive C is OS
Volume Serial Number is C2EE-C052
Directory of C:\Users\15022\Downloads\PECmd_Output
10/28/2025 07:33 PM .
11/19/2025 06:43 PM ..
10/28/2025 07:33 PM 4,805,479 20251029003330_PECmd_Output.csv
10/28/2025 07:33 PM 182,317 20251029003330_PECmd_Output_Timeline.csv
4. The following files were yielded as the parsed output: 20251029003330_PECmd_Output.csv and 20251029003330_PECmd_Output_Timeline.csv. These files can be examined to see and identify execution patterns, timestamps and system activity.
Project Purpose: The purpose of this project was to design a complete system blueprint for the Pets4Life website, including its structure, data flow, user experience, and core functionality. My team and I created detailed diagrams, prototypes, and documentation to guide the development of a fully functional platform for donors, volunteers, pet owners, and staff.
Project Educational Purpose: This project strengthened my skills in systems analysis and design by applying real-world documentation techniques like class diagrams, ERDs, UI prototypes, and project management tools. It helped me understand how to translate organizational needs into structured technical requirements and a fully planned system architecture.
Project Purpose: This project examined the 2013 Target IT Security breach and identified how failures in vendor oversight, network segmentation and security governance allowed attackers to steal millions of consumer records.
Project Educational Purpose: This case study gave me a clearer understanding of how real cyberattacks happen, how leadership decisions can weaken or strengthen security, and how using approaches like Zero Trust can prevent security breaches.
Implementation Overview: I analyzed Target’s breach timeline, organizational structure and industry environment. I then evaluated multiple security solutions to determine which addressed the root cause and best mitigated future risk.