Marketplace platform
Find your next shift,
and the licence to get it.
Most job boards bury the details a security guard actually needs. GuardLink puts pay, hours, shift, location and the required licence on the listing itself. When a job asks for a credential you do not hold, it shows you where to go and get it.
Every listing carries the pay, the weekly hours, the shift pattern, the location and the exact licences required. Listings shown here are sample data and labelled as such in the product.
The information that decides the job
is the information nobody publishes.
Security work is governed by credentials. An NYS Guard licence, an F-01, an F-60, FLSD, armed certification. Whether you can take a job comes down to which of those you hold, and most postings never say. So guards apply blind, employers filter out most of what arrives, and both sides waste the week.
The information is also scattered. Opportunities live across generic boards, agency sites and group chats, in formats that cannot be compared.
Make the credential
a first class part of the listing.
Structure the job properly, then let people filter on the things that actually decide the outcome: pay floor, shift, borough, job type and licence. When a credential is missing, do not just reject the guard. Show them the course that closes the gap.
That third step is what turns a two sided board into a three sided marketplace, and it is why training providers belong in the product.
Three sides
One platform, three jobs to do.
Find work you can actually take
- Search and filter by pay, shift, borough and licence
- See exactly what a job requires and what you are missing
- Save jobs and set alerts
- Profile, applications and dashboard
- Find the training that closes the gap
Post a role that gets the right people
- Claim a company profile
- Post a structured job, not a paragraph
- Quality feedback before the post goes live
- Receive and manage applicants
Be found by people who need you
- Claim a training provider listing
- Publish courses, prices and class dates
- Reach guards at the exact moment of need
- Listed separately from the courses themselves
The product
Web and native, one source of truth.
The engineering
A modular monolith,
layered strictly.
The interesting decision here is not the framework. It is the discipline: pure domain logic that can be imported and tested without Next.js, and client components that can never reach the database.
A client, not a second implementation
The native app contains no database, no duplicated business rules and no second matching algorithm. The web platform stays the source of truth for search, scoring, applications and freshness. The app renders that and posts back to it.
One session system, not two
Native clients cannot safely use cookie auth, so bearer tokens were added. The token is a session id from the same sessions table, which means expiry, revocation and the suspended account check all apply unchanged.
Provenance on every listing
Jobs carry where they came from and when they were last verified, and sample data is labelled as sample data inside the product. A stale listing is worse than no listing when someone is planning their week around it.
The stack
What it is made of.
- Next.js
- TypeScript
- Server actions
- React
- Drizzle ORM
- SQLite
- Eighteen table schema
- Migrations and seeds
- Expo and Expo Router
- React Native
- Secure Store
- Bearer token auth
- Docker
- Fly.io configuration
- Ingestion scripts
- Typecheck and test gate
Marketplaces, portals and platforms.
If your industry runs on information nobody has organised yet, that is a product.

