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
I

Project overview

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

II

Engineering highlights

  1. I

    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. II

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

  3. III

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

  4. IV

    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. V

    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. VI

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

  7. VII

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

  8. VIII

    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.