swirl: a story of payroll transcendence
TRANSCRIPT
Kyle Johnson
[email protected](415) 860-8050
The year was 2012....•Vino Volo was growing rapidly, with 18 wine bar locations already open across the United States•I was tasked with managing IT, Business Systems, Analysis, and Financial Planning•Our HR & Payroll specialist quit, leaving nobody to pay our employees•“Can you take over HR & Payroll?” asked the CEO•“Sure!” } I didn’t know what I was getting into
Kyle Johnson
[email protected](415) 860-8050
Payroll isn’t that hard, right?•There were 150+ hourly employees across 9 states•California doesn’t play by the same rules•Employees had different rates of pay based on their position and the shift they were working
• Tips were pooled between employees based on the number of tipable hours they worked in the pay period•Some employees worked at multiple locations so their overtime needed to be calculated and coded properly•Vino Volo’s payroll requirements were complicated
Kyle Johnson
[email protected](415) 860-8050
1. Email PDF of punch reportAt the end of the pay period, each store manager would generate a PDF report from the Point of Sale and email it to payroll
Kyle Johnson
[email protected](415) 860-8050
2. Add new employeesAddnewemployeesto3differentsheetsandtietheformulas in a very, very complicated spreadsheet.
If this was done by a non-expert, things went horribly wrong.
Kyle Johnson
[email protected](415) 860-8050
3. Manually enter the hoursPayroll would receive the PDFs and then manually enter the hours into a spreadsheet - every column represented an employee and every row represented a day of work. There was one spreadsheet for each location.This spreadsheet calculated overtime and tip pooling.Due to time constraints, 3-4 people would help enter data.
Kyle Johnson
[email protected](415) 860-8050
4. Enter the total tips by storeThe spreadsheet would then divide the tips based on the hours worked by each employee.Inthisstage,itwasalsonecessarytofigureouthowmanyhours were “training” hours and manually input them into a special column so they wouldn’t be tipped.
Kyle Johnson
[email protected](415) 860-8050
5. Export to CSV and uploadExport the output of each spreadsheet and then upload it to the Paychex payroll system.
Kyle Johnson
[email protected](415) 860-8050
6. Fix things in PaychexThe Paychex import didn’t work very well. It was especially problematic if an employee had multiple rows with hours or tips.Every employee that worked at multiple stores had to have their checks adjusted in Paychex.
Kyle Johnson
[email protected](415) 860-8050
7. Run journal, reconcile it....Run a payroll journal, reconcile every employee’s check, and ensure that all charges went to the right department.There was so much manual data entry in this process that the CFO and I both audited the payroll journal.This process was repeated until everything was correct....
Kyle Johnson
[email protected](415) 860-8050
OK, that doesn’t work•Thisprocesswaseffectivewith3-5stores•With 18 stores it was completely broken•It was fraught with errors and unscalable•Temps and new hires couldn’t understand the process• It was time to make big changes
Kyle Johnson
[email protected](415) 860-8050
New payroll provider• Paychex’s CSV import didn’t work - it assumed one line per employee check and one column per line on an employee check•Our paychex package was expensive•I researched new payroll providers, Paylocity was the winner•We could import anything we wanted on the checks•They were a lot cheaper• We implemented Paylocity, transitioning all our data
Kyle Johnson
[email protected](415) 860-8050
What about those crazy spreadsheets?
• The spreadsheets had to go•Time & Attendance systems I researched didn’t support tip pooling or employees working at multiple locations•They were expensive•I didn’t want to introduce a new system to the store operators•There wasn’t anything available to solve our problems• It was time to build something myself....
Kyle Johnson
[email protected](415) 860-8050
The requirements•Import Time & Attendance data from Squirrel, transform it, and export to Paylocity•Calculate overtime and doubletime•Payemployeesdifferentratesbasedontheirshifttypes•Pool tips pro rata based on hours worked
Kyle Johnson
[email protected](415) 860-8050
Introducing Swirl
Swirl’s main dashboard shows totals for each store this pay period, making it easy to see where you are in the process. This screen also makes auditing totals easy!
Kyle Johnson
[email protected](415) 860-8050
1. Import Punches
SelectthestoreandtheCSVfile.Easy.Ifthereareanyissueswiththeimport,Swirlwalks you through steps to correct them.
Kyle Johnson
[email protected](415) 860-8050
2. Enter tips
Select the store code and enter the tips for the pay period. Swirl only lets you select stores that haven’t already entered and shows what you’ve already entered below.
Kyle Johnson
[email protected](415) 860-8050
3. Export to Paylocity
Behind the scenes this is where the magic happens. Overtime is calculated, tips are pooled, everything is coded to the correct store, and then formatted perfectly for Paylocity.
Kyle Johnson
[email protected](415) 860-8050
4. Run journal, celebrate
Payroll done. No unnecessary data entry.
Kyle Johnson
[email protected](415) 860-8050
Transcendence•Vino Volo now processes payroll for twice the locations using a single payroll temp instead of the “all hands on deck” that involved temps, managers, and the CFO
• The process is faster, more scalable, and more accurate•Vino Volo’s payroll costs per employee dropped dramatically with the new payroll provider
• Multiple, HUGE pains were eliminated
Kyle Johnson
[email protected](415) 860-8050
Still going strong•Vino Volo processes payroll for 32+ locations in 15 states and provinces across 2 countries with the help of Swirl•Since launching, Swirl has processed 200,000 punches and 1,000,000 employee hours for Vino Volo
Kyle Johnson
[email protected](415) 860-8050
Want to know more?Email me at [email protected]
Next: Technical Stack...
Kyle Johnson
[email protected](415) 860-8050
Technology stack• Server: LAMPy on Rackspace Cloud•Ubuntu, Apache, MySQL, and Python 2.7• Frameworks: Flask, Bootstrap