Back to projects

Case Study

Jobstm — Verification-First Gig Hiring Platform

A verification-first hiring platform spanning a native mobile app, an admin console, and a full AWS backend.

Visit live product
Jobstm — Verification-First Gig Hiring Platform product screenshot
0.0x

Faster Hiring

0

Role-Based Portals

0

API Domains

0

Identity Checks

Overview

The story behind the build.

Business Goal

Build a hiring platform where every job seeker and employer is identity-verified before they can apply, post a job, or message each other — reducing fake listings and fraudulent applications that plague open job boards.

The Problem

Open job platforms let anyone post or apply with zero verification, so seekers waste time on fake listings and employers can't trust who's actually applying. There was no single system tying mobile identity verification, a review pipeline, and a rewards mechanism together across both a mobile app and an admin backend.

My Solution

I built the product across three coordinated codebases: a React Native (Expo) mobile app with role-based portals for Job Seekers, Employers, and Super Admins; a Next.js admin/marketing site; and an Express.js REST API deployed on AWS. Every account goes through mobile OTP and Aadhar verification before it can post or apply, and every action — job posting, application, approval — flows through a real moderation pipeline instead of being auto-published.

Nobody gets in without proving who they are

Verification

Nobody gets in without proving who they are

Every account — job seeker or employer — passes through mobile OTP verification with a 30-second resend countdown, followed by 12-digit Aadhar verification under UIDAI consent, before they can post a job or submit an application.

  • Mobile OTP with countdown & resend
  • Aadhar verification with consent flow
  • Gates access to both employer and seeker portals
A home feed that gamifies staying active

Job Seeker

A home feed that gamifies staying active

The job-seeker home screen tracks open jobs, saved listings and applications, alongside a leveling system (Starter → Bronze, 10 jobs to level up) that rewards consistent daily activity across category browsing — Marketing, HR, Finance, Sales, Hotels, Driving, Security, Graduate.

  • Gamified leveling to drive engagement
  • Category-based job browsing
  • Live open/saved/applied counters
A real pipeline instead of a black hole

Applications

A real pipeline instead of a black hole

Applications move through Applied → Shortlisted → Accepted/Rejected with per-application status and dates, so a job seeker isn't left guessing whether anyone looked at their submission.

  • Status pipeline with dates
  • Per-application tracking
  • Shared logic between seeker and employer views
Rewards, coupons and refer-and-earn

Growth

Rewards, coupons and refer-and-earn

A dedicated rewards tab surfaces category-filtered coupons (Food, Medical, Shopping) alongside a refer-and-earn program — a retention lever independent of the core job-matching loop.

  • Category-filtered coupon marketplace
  • Refer & earn growth loop
  • Backed by a dedicated rewards API domain
A trust score recruiters can act on

Profile

A trust score recruiters can act on

Every profile carries a completeness score, verified-mobile and verified-Aadhar badges, an uploaded resume marked visible-to-recruiters, and structured key skills — turning identity verification into a visible trust signal, not just a backend flag.

  • Profile completeness score
  • Resume upload with recruiter visibility toggle
  • Verification badges surfaced directly on-profile

Under the Hood

Architecture & integration.

Frontend Architecture

The mobile app uses Expo SDK 56 with expo-router v3 file-based routing and NativeWind v4 (Tailwind for React Native) for styling, all in TypeScript. Route groups split the app into (auth) → (employer) / (jobseeker) / (admin) portals with their own tab navigators, sharing a common JobCard component and a small UI kit (Button, Input, Card, Badge, Rating, OTPInput). A separate Next.js site (next-themes, Tailwind) serves as the marketing/admin surface.

Backend Integration

The API is Express.js on AWS Elastic Beanstalk behind CloudFront, backed by AWS RDS PostgreSQL accessed with raw parameterized SQL via `pg` — no ORM. Fourteen domain routers (auth, jobs, employer, admin, profile, upload, notifications, subscription, rewards, public, activities, payments, ads, referral) each own one area. Auth is stateless JWT with role-based middleware (`requireAuth`, `requireRole`, `optionalAuth`); file uploads go to S3 under folder-prefixed keys (resumes, avatars, company docs, Aadhar docs) with CloudFront-backed public URLs; OTP delivery runs through 2factor.in and transactional email through AWS SES; payments are handled via Razorpay. Deploys are automatic on push to main through AWS CodePipeline.

AI Integration

No LLM-based matching is in production yet — job discovery today runs on category browsing (Marketing, HR, Finance, Sales, Hotels, Driving, Security, Graduate) and search/filter rather than ML ranking. It's the logical next iteration once there's enough application data to train a relevance model.

Performance Optimizations

  • Stateless JWT auth avoids server-side session storage, keeping the API horizontally scalable behind Elastic Beanstalk
  • S3 objects served through CloudFront instead of direct bucket URLs for lower latency and reduced origin load
  • OTP verification uses a 30-second countdown/resend flow to cut down on redundant SMS sends

Tech Stack

React NativeExpoTypeScriptNativeWindNext.jsNode.jsExpressPostgreSQLAWS

Business Impact

By gating every account behind identity verification and routing every job/application through an approval pipeline before publication, Jobstm claims roughly 2.4x faster hiring versus unverified open job boards — the platform is live at jobstm.co with the mobile app, admin console and AWS backend all in production.