A city-based shift marketplace for multi-location employers and flexible workers: post public or private jobs, build a vetted roster, auto-schedule by reliability and distance, track live shifts and approve timesheets, with a worker mobile app and AI assistants that answer from live data.
The repo began on 6 Nov 2025 as a monorepo with a Next.js employer dashboard, an Expo worker app and a NestJS API. Within days it had job creation with a map picker, map and list discovery, shift giveaways and swaps, an auto-scheduler, chat over WebSockets and a timesheets view.
versionopsNov 2025
Notifications, roles and payouts
The platform side landed fast: a notification system over WebSockets, email, push and SMS on queues, invite codes, a locked-down SuperAdmin console, and the first payouts module.
breakthroughAINov 2025
Assistants on live data
Two assistants: one for workers (shifts, payouts, open jobs) and one for employers (roster, analytics, shift management). Both call functions against live data, with limits on daily use.
problemwaitlistDec 2025
Not every city is live
A marketplace with no workers in a city is a dead end. The app now checks availability from GPS or the chosen city, and if the city is not live it puts the worker on a waitlist and shows their position.
lessonBetter AuthJan 2026
One auth everywhere
The first sign-in was hand-rolled JWT sessions. A migration plan moved the API, web and mobile apps onto Better Auth so all three share one account system.
problemreliabilityMar 2026
Clocking in for real
Clock-in is the moment employers and workers both rely on. The whole flow got a review and a hardening pass on mobile, alongside billing for per-city plans.
breakthroughpayoutsMar 2026
KovrPay
Paying contractors in Canada means onboarding, batch payroll, T4A slips and CRA filing. Instead of depending on a third-party payout vendor I designed an in-house engine on Stripe Connect, and it grew into its own project.
Shift hiring still runs on agencies, group chats and spreadsheets. Agencies are slow and expensive, manual coordination double-books people, and workers cannot see what is nearby. KOVR is a technology platform rather than a staffing company: employers keep the relationship with their workers, and KOVR handles matching, scheduling and the operations tooling.
facts.txt
Problem
Shift staffing scattered across agencies and chats
Audience
Multi-location employers and flexible workers
Surfaces
Employer web dashboard and a worker mobile app
Launch market
Edmonton first, built for more cities
Role
Founder and full-stack
Timeline
Nov 2025 to spring 2026
04process
How I approached it
01
Two sides, one system
Employers work on the web and workers on their phones, but both talk to the same API, so a change on one side shows up on the other in real time.
02
Public and private jobs
A public job is open to everyone nearby. A private job is visible only to a vetted roster, so regular staff and new hires are handled in the same tool.
03
Prevent the mess up front
Role and time validation blocks overlapping or illegal assignments, so double-booking is stopped by the system instead of found on the day.
04
Explain the match
The auto-scheduler ranks workers and shows the reasons: availability, rating, distance, reliability, skills and past performance. The employer can override and invite.
05
Make live shifts visible
Clock-ins, breaks, tasks, photos and guest counts feed one operations view, and timesheets can be approved with edits and notes.
06
Grow one city at a time
Billing is per city, permissions are scoped to locations, and a city that is not live yet takes a waitlist instead of an empty map.
05shots
A look at the product
dashboard and app (test data)
kovr.app
live ops, analytics, access control
06how it is different
How it is different
Staffing agencies fill shifts for you, slowly and at a markup, and they sit between you and your own workers. Group chats and spreadsheets are free but double-book people and leave no record. General job boards help you find candidates, but stop before scheduling, attendance and pay.
KOVR is built around the shift itself:
A technology platform, not an agency. The employer owns the relationship with their workers.
Private rosters for repeat staff next to public jobs for new hires.
Scheduling, live attendance and timesheets in the same tool as the job post.
Per-city and per-location control for operators who run teams in several places.
07stack
What it runs on
Next.js 16The employer dashboard
Expo / React NativeThe worker app, with maps
NestJS 11The API, with TypeORM and PostgreSQL
Better AuthSign-in across API, web and mobile
Socket.IOLive chat, shift status and in-app notifications
Redis + BullMQNotification delivery and background jobs
React EmailBranded transactional email
StripeBilling, and the rail under KovrPay
OpenAI via the AI SDKWorker and employer assistants
S3-compatible storagePhotos, attachments and timesheet evidence
08challenges
What got in the way
the problem
Double-booking and illegal assignments are the failures that cost an employer trust.
so →
fix.md
Role and time validation sits in the API, so overlapping or invalid assignments are rejected no matter which screen created them.
the problem
A city with no workers makes the product look broken.
so →
fix.md
Onboarding checks availability from GPS or the chosen city. If it is not live, the worker joins a waitlist and sees their place in line.
the problem
With dozens of event types, notifications can easily become noise.
so →
fix.md
Events are routed by role, delivered in-app first with email fallback and retries, and users set preferences per category.
the problem
An admin console that anyone can find is a liability.
so →
fix.md
SuperAdmin is gated by an environment-set identity and a separate short-lived token, returns a 404 to everyone else, and logs every action.
the problem
Paying contractors in Canada brings onboarding, T4A slips and CRA filing, and a vendor would own that whole layer.
so →
fix.md
I designed KovrPay: Stripe moves the money, and KovrPay handles orchestration, onboarding, batch payroll and the filings.
09results
What came out of it
1,329commitsNov 2025 to Apr 2026
3apps on one APIweb, mobile, API
29+notification eventsrouted by role
3employer rolesOwner, Admin, Location Manager
2AI assistantsworker and employer
KOVR runs as a web dashboard and a mobile app on one API, launching in Edmonton. These numbers describe what was built. There are no usage figures on this page.
10lessons
What I learned
A marketplace is two products sharing one backend. The employer and worker experiences needed different design and the same source of truth.
Enforce the rules in the API. Validation on the server held up when new screens were added.
Explain automated decisions. Showing why a worker was ranked first is what makes people trust the auto-scheduler enough to use it.
Treat money as its own system. Payouts had different risks and rules from scheduling, so they became their own project.
Open a city only when it can work. Waitlists turned an empty map into a signal about where to launch next.
11notes
KOVR: workforce infrastructure for flexible hiring
A shift marketplace so multi-location employers can source, schedule and pay workers without a staffing agency in the middle.
See KOVR
Launching in Edmonton and built to add cities. The payout engine is its own project.