Chain Labs

A desktop app that turns timesheet exports into payroll files

A US nurse-staffing company retyped its timesheets into payroll by hand every week. We built a small Windows app that converts the export instead.

Client
A US nurse-staffing company
Services
Business Process Automation, Data
When
November 2025
Team
Mihir
Status
Live

The problem

The company records its nurses’ visits and hours in EVV Plus, an electronic visit verification system. Payroll runs in QuickBooks. Every week someone on the team took the timesheet data out of EVV Plus and keyed it into QuickBooks by hand.

The work was slow. A slip in the keying meant the company paid a nurse the wrong amount.

What we built

We built a small Windows app that turns the EVV Plus export into a payroll file. The payroll person drops the export, a CSV file, onto the app. The app reads every row and writes dates the way the payroll software expects. It converts hours into the right format and keeps each line’s payroll item, such as regular or overtime hours.

The payroll person checks the rows in a preview, then exports a file to import into payroll. With QuickBooks Online, the app also has a button to sync the rows online.

The converter's data preview: nurses' timesheet rows with dates, hours and payroll items, with buttons to sync data online or export a CSV or TXT file.

We chose a desktop app over a hosted system that connects EVV Plus to QuickBooks. The team already exported the CSV every week. So the app starts from that file and needs no login to EVV Plus. The app runs on the payroll team’s own computer and refuses any file that isn’t a CSV. The cost is one manual step: someone still exports the file and drops it in each week.

What was hard

Each of the three payroll formats takes the same hours written a different way. The app asks once which payroll software the team uses: QuickBooks Desktop, QuickBooks Online or ADP Workforce Now.

The converter's first screen, asking which payroll software the team uses: QuickBooks Desktop, QuickBooks Online or ADP.

QuickBooks Online takes a duration as hours and minutes, so 7.5 hours becomes 7:30. ADP takes decimal hours to two places, 7.50. QuickBooks Desktop imports an IIF file, a tab-separated format with its own header rows. Those header rows name the QuickBooks version and release, which the app asks for at setup.

A payroll file that imports with a wrong hour pays someone wrongly. So the app keeps each format as its own mapping, apart from the others. The team also checks a preview of the converted rows before the app exports anything.

The result

The team stopped retyping timesheets. The converter saves the team 16 to 20 hours a week. That is the time the client’s team spent each week keying timesheets into QuickBooks by hand.

Built with

InterfaceReact
Desktop appElectron, for 64-bit, 32-bit and Arm Windows
CSV parsingPapaParse
Installerselectron-builder
Payroll filesQuickBooks Desktop IIF, QuickBooks Online CSV, ADP CSV
BuildingClaude Code