← Back to Work

SkillO

A multi-tenant B2B/B2C job-matching SaaS platform.

Next.jsPythonPostgreSQLRedis & BullMQSept 2025 – June 2026skillo.co.in ↗
SkillO — SaaS Platform

Building a multi-tenant B2B and B2C SaaS platform requires more than just a monolithic REST API. SkillO was designed around an event-driven infrastructure capable of handling asynchronous processing and AI-driven job matching.

The backend relies on Node.js combined with BullMQ asynchronous job queues, backed by Upstash Redis. We implemented Dead Letter Queues for fault tolerance and used Redis distributed locking (SET NX) to prevent race conditions under highly concurrent workloads.

The core value of SkillO is connecting the right candidates to the right jobs. To do this, I built a Hybrid NLP recommendation pipeline.

We use Gemini 2.5 Flash Lite for structured resume parsing and ATS scoring, passing the data through a LightGBM Learning-to-Rank model that achieved a 0.92 ROC-AUC. For edge cases and sparse data, a SentenceTransformers vector embedding fallback microservice handles semantic similarity matching.

Because AI scoring and matching happen asynchronously, users shouldn't have to refresh the page to see if they got matched. API polling was out of the question for scaling reasons.

I built a standalone event-driven WebSocket server connected via Redis Pub/Sub synchronization. This handles low-latency application status updates, AI scoring progress, and chat notifications seamlessly across the platform.

Identity is managed through a combination of Supabase OTP authentication and NextAuth.js OAuth, protected by a custom Next.js Edge Middleware for JWT session resolution and token blacklists.

To prevent abuse, we implemented Turnstile CAPTCHA and strict Content Security Policy headers across the platform.

We built a global multi-currency checkout system via Razorpay. It includes a robust subscription state machine that handles recurring billing, dynamic invoicing, and RBAC-controlled feature access.

Users can seamlessly transition between Free, Career Accelerator, and Career Pro subscription tiers.

Data integrity and security were paramount. We used PostgreSQL with Prisma ORM, utilizing multi-table query optimization and heavy database indexing. We even built a custom fuzzy skill taxonomy engine for high-precision search relevance.

The entire stack is containerized with Docker Compose, sitting behind Nginx and SSL on a Linux VPS, featuring Alpine Cron sidecars for automated daily digests and job expirations.