Project index

Full-stack SaaS

JobClock — Full-Stack Job Search SaaS

Full-stack job search SaaS with multi-source job aggregation, Chrome extension, AI CV tailoring pipeline, and interview intelligence features.

Role
Full-stack engineer
Period
January 2026 — Present
Stack
Next.js 16 · React 19 · TypeScript · Supabase (PostgreSQL) · Drizzle ORM · Anthropic Claude · OpenAI · Perplexity · Upstash Redis + QStash
Overview
01

Project overview

Full-stack job search SaaS with multi-source job aggregation, Chrome extension, AI CV tailoring pipeline, and interview intelligence features.

02

Engineering highlights

  1. 01

    Built a full-stack AI-powered job search platform that aggregates 7 job sources through a unified search API, integrating Adzuna, Reed, CareerJet, Greenhouse, Lever, Ashby, and Workday.

  2. 02

    Designed a fault-tolerant aggregation pipeline using Promise.allSettled, ensuring upstream API failures degrade individual results rather than the entire search experience.

  3. 03

    Implemented source-specific query optimisation and cross-source deduplication by normalising job titles and prioritising canonical ATS listings over syndicated duplicates.

  4. 04

    Developed a 4-stage AI CV tailoring pipeline (job analysis, CV matching, tailoring strategy, CV generation) using OpenAI and Anthropic with Zod schema validation and automatic response repair for reliable structured outputs.

  5. 05

    Built a Chrome Manifest V3 extension that extracts job descriptions from major job boards using DOM-aware parsing with structured data fallbacks (Open Graph and JSON-LD) for high extraction accuracy.

  6. 06

    Implemented secure extension authentication using rotating single-use API tokens stored as SHA-256 hashes with revocation support.

  7. 07

    Architected asynchronous AI processing with Upstash QStash, supporting idempotent background jobs, job deduplication, per-user rate limiting, and local development fallbacks.

  8. 08

    Secured user data with PostgreSQL Row-Level Security, AES-256-GCM encryption for API keys, and multi-layer sliding-window rate limiting across application endpoints.