This project was developed during the University of Manitoba Computer Science Students' Association (UMCSSA) "Craft & Design" 2026 event. The challenge, sponsored by Payworks Payroll Services Canada, task participants with integrating payroll data from diverse and often messy sources—including paper documents, Excel files, and even handwritten notes.
Our solution leverages Google Gemini's Structured Output API to intelligently parse and unify these disparate data formats into a single, structured database. Unlike traditional ETL processes that require custom logic for every new file format, this system dynamically adapts to the input it receives.
- Leveraging AI: Uses Google Gemini to automatically identify and extract payroll fields from any text-based or image input (including handwritten notes).
- Intelligent Field Mapping: Proposes logical mappings between source data columns/headers and the target payroll schema.
- Human-in-the-Loop Review: Provides an interface for operators to review AI-suggested mappings and manually override them, ensuring 100% data accuracy.
- Persistent Mapping Templates: Remembers user-overridden mappings to improve future imports of similar file formats.
- Support for Multi-Modal Input: Handles CSVs, free-form text, and images of documents seamlessly.
- Frontend: React.js (Vite) with Lucide Icons for a clean, modern UI.
- Backend: Node.js & Express.
- Intelligence: Google Gemini (via
@google/generative-ai). - Database:
- Cloud-Ready: Configured for Supabase integration.
- Validation: Strict schema validation to ensure data integrity before database insertion.
- Node.js (v18 or higher)
- A Google Gemini API Key
- Navigate to the root directory.
- Install dependencies:
npm install
- Create a
.envfile in the root directory and add your Gemini API Key:GEMINI_API_KEY=your_api_key_here PORT=3001
- Initialize the local database:
node seed.js
- Start the server:
npm start
- Navigate to the
frontenddirectory. - Install dependencies:
npm install
- Start the development server:
npm run dev
The project was built in under 6 hours during the Craft & Design competition. We focused on solving a real-world business challenge: the friction of manual data entry for business owners managing fragmented payroll information.
Huge thanks to Payworks for the challenge and UMCSSA for organizing such an inspiring event!