AskCharles AI Recruitment Platform


Project: AskCharles

Situation

Recruiters needed one place to turn a job description into a structured brief, search for suitable candidates, review evidence, and manage outreach. The workflow involved external data, sensitive candidate information, asynchronous processing, and decisions that required human control.

Task

Build a full-stack placement platform combining job intake, candidate sourcing, normalization, scoring, outreach, and reply handling without hiding important decisions behind an LLM.

Action

  • Built a Next.js application with Supabase Postgres, Supabase Storage, and an EU-region data design
  • Added Inngest workflows for scraping, normalization, scoring, outreach drafting, and reply classification
  • Separated source-specific behavior behind a source adapter interface
  • Added deterministic keyword screening before LLM analysis, structured fit criteria, evidence breakdowns, and recruiter approval gates
  • Designed anonymization before candidate data is sent to an LLM provider
  • Built the streaming Charles chat agent with Anthropic tool use, SSE, read-only tools, and human confirmation for mutating actions
  • Added audit logging, durable workflow state, runtime configuration, and worker observability
  • Built a connected recruiter website and lead-capture flow with a Netlify Function and Brevo email integration

Result

Created an end-to-end recruitment workflow with explicit checkpoints between brief creation, sourcing, screening, shortlist preparation, and outreach.

Key Innovations

  • Deterministic filtering before paid or slower LLM analysis
  • Human approval gates around side effects
  • Candidate PII anonymization before model calls
  • Durable, replayable workflow steps
  • Evidence-based candidate scoring instead of an unexplained model score

Technologies

Next.js, TypeScript, React, Supabase, PostgreSQL, Inngest, Anthropic tool use, OpenRouter, SSE, Netlify Functions, Brevo, Playwright, Docker

Contact us to discuss your recruitment platform.