CORE DIRECTORY // SYSTEM.USER.DIANA_ISMAIL

Labs by Diana — Experiments that ship.

Side projects that got out of hand. AI tools built for problems I kept tripping over — now live, now yours.

Agentic-AIActive

CV/JD Matcher & Application Tool

MODULE_003

TECHNICAL_OVERVIEW

v3.11.7ActiveAgentic-AI

Upload a CV (PDF or DOCX) and paste a job description: Reso returns two independent scores — an ATS score measuring keyword and format compliance, and a recruiter score rating human readability and narrative strength — plus a career archetype classification across six categories (Technical, Creative, Business, Healthcare, Education, Other), key strengths, gaps, and recommendations. From there, users can generate a tailored CV variant that detects the candidate profile (Executive, Career Changer, Entry Level, Mid-Career) and applies industry-adaptive tone — precise for tech, confident for creative, formal for business, clinical for healthcare, evidence-based for education — rendered in a line-by-line diff view (unified or split mode) against the original. Interview prep packs generate company-specific summaries, tailored questions, and stage context.

Every analysis automatically creates a job application entry in the tracker, which maintains a full pipeline from Applied through to Offer/Rejected, with logged interview sessions that can be summarised by the LLM on demand. The insights dashboard aggregates pipeline funnels, weekly application trends, match score averages, keyword gap analysis, and industry distribution across all tracked roles.

Authentication runs on Better Auth with database-backed sessions and a Drizzle adapter, supporting email/password (bcrypt with pepper) and Google OAuth. The data layer spans 19 tables and 3 views, built on typed Drizzle repositories feeding into service modules with legacy raw SQL being migrated incrementally. Credit deduction is wrapped in PostgreSQL advisory locks (pg_advisory_xact_lock) inside a transaction with Redis reservation as a secondary guard, so concurrent requests against the same user serialise cleanly. Upstash Redis handles rate limiting across four sliding-window tiers, response caching via a cache-aside pattern, and request idempotency (SET NX with a five-minute TTL on the Idempotency-Key header). SSE streaming drives the analysis flow through an incremental JSON parser (StreamParser), with TanStack React Query managing server state and Zustand handling client state. A 10-page admin panel provides prompt versioning with diff and rollback, LLM configuration, pricing management, discount codes, analytics, and a full audit log. Pino structured logging with PII redaction runs across the server layer. Built with Next.js 16, React 19, TypeScript, Tailwind CSS 4, Drizzle ORM, PostgreSQL, Better Auth, TanStack React Query, Zustand, OpenAI, Upstash Redis, Resend, Pino, Vitest, Playwright, and deployed on Railway via Docker.

PROJECT_LEARNINGS_LOG

KEY_LEARNING_01

PostgreSQL advisory locks (pg_advisory_xact_lock) were the only clean solution for race-condition-safe credit deduction — row-level locks on the credits table were insufficient because the balance is a computed aggregate across multiple rows, so the lock must serialise the entire read-check-deduct sequence within a single transaction.

KEY_LEARNING_02

Migrating from NextAuth to Better Auth while preserving existing bcrypt-with-pepper password hashes required a custom Drizzle adapter that remaps field names (full_name to name, created_on to createdAt) and a migration script that backfills the new account table from existing user rows — any mismatch silently locks users out because Better Auth checks the account table first.

KEY_LEARNING_03

OKLch colour tokens break print stylesheets in every browser except Safari — Chrome and Firefox resolve oklch() to transparent in print rendering, so the print stylesheet must override score-colour utilities with fallback hex values, a constraint that only surfaced after the dark-mode-first palette was already built on oklch() throughout.

Job SearchCV AnalysisNext.jsReact 19TypeScriptTailwind CSSPostgreSQLDrizzle ORMBetter AuthTanStack QueryZustandOpenAIStripeUpstash RedisResendPinoReact Hook FormZodRadix UISSE StreamingVitestPlaywrightDockerRailwaysemantic-release

SYSTEM.INT // 2026 LABS_CORE v2.18.4

LATENCY: 24msSTATUS: NOMINAL