Haseeb ArshadHaseeb Arshad
← All projects
Personal AI operationsProduction

AI Opportunity Manager

A private, approval-first job-search system: inbox triage and reply planning for recruiter outreach, plus outbound applications written from a verified profile corpus with a truthfulness guard.

PythonLLM AgentsRAGClaudeOllamaGmail APIOAuth 2.0SQLiteKubernetes

2

model backends

0

unsourced claims sent

Human

final review

The challenge

What the system needed to solve

Run a full job search with AI assistance without letting a model send anything unreviewed, invent a qualification, or see credentials.

The build

Engineering decisions

01

Built durable, schema-bound LLM jobs for inbox classification, whole-thread reply planning, posting extraction, fit scoring, and document generation, routed per task to a cluster GPU model or to Claude through a subscription relay with no API key in the cluster.

02

Mirrored this site into a profile corpus (résumé, case studies, posts) and a private facts bank, then budgeted prompts per backend so an 8K-context local model still sees the parts that matter.

03

Required every generated cover letter, answer, or message to cite the profile facts it used and to list any claim it could not source, surfaced as warnings before anything is sent.

04

Kept every outbound email approval-first: explicit confirmation, a server kill switch, verified résumé attachments, and a re-engage mailer that replies in the original thread or starts a new one.

Architecture

How the pieces connect

  1. 1Gmail and IMAP sync
  2. 2Untrusted-content boundary
  3. 3Per-task model routing
  4. 4Profile corpus and facts bank
  5. 5Truthfulness guard
  6. 6Human-reviewed send

Results

What changed

  • Hundreds of recruiter conversations triaged and answered with one active reviewed draft per thread.
  • Job postings go from paste to fit report and tailored materials in under a minute on a frontier model, with every claim traceable.
  • Model assistance is replaceable; the deterministic workflow data, audit trail, and safety boundaries stay.