JobHuntWOW.com · High/Low-Level Design · POC

From "find me a job" to interview one agent.

You talk to Electronic in plain language. It sources roles, writes truth-checked resumes and cover letters, drives the real Apply flow on Workday, Taleo, SuccessFactors, Personio and HiBob, then handles the recruiter emails and screening questions all the way to the interview invite. Multi-agent, serverless on DigitalOcean, guardrailed against prompt injection and model poisoning, and observable end-to-end. This page is the HLD and the LLD.

7specialized agents
5ATS targets
OWASP LLMTop-10 mapped
Qwen 3.xon DO serverless
0 liestruth-gated
/ In plain words

What is this, in 60 seconds

/ The problem

"Easy Apply" is a walled garden

Serious roles live behind enterprise ATS portals that expose no candidate-side submit API — employer APIs exist (post jobs, read candidates) but the apply flow itself is a browser form. So you either fill it by hand or drive the real UI. Our old Python Easy-Apply bot brute-forced brittle selectors and spat out spam. This design fixes both reach and quality, and adds everything a production system needs.

/ One conversation

You talk. Electronic does.

The whole journey through a single chat — Telegram, WhatsApp, or the web app. Electronic narrates what it's doing and stops for your approval at every irreversible step.

🪽
Electronic
your job-search agent · online

The agent narrates every move — and never submits without your "Confirm".

Sourcing, tailoring, truth-checking, applying, answering recruiters, scheduling interviews. Electronic keeps the whole loop in one thread so you always know what's happening and stay in control.

🔎 Sourcing📝 Truth-checked docs🕹️ Real Apply flow📩 Recruiter replies📅 Interview scheduling✋ Human gates
/ After the apply — the part everyone forgets

Recruiter emails & screening questions

Applying is half the battle. The Comms Agent watches a dedicated inbox, drafts honest, grounded answers to the usual headhunter questions — notice period, salary expectation, visa/work authorization, why-this-role — flags anything it can't verify, and waits for your approval before anything is sent. Up to and including the interview invite.

📨 Comms Agent — thread with recruiter watching…
/ front-of-house · your JobHuntWOW CRM

The pipeline you actually see

The agents apply and answer recruiters in the background — this is where you watch it happen. A kanban CRM (your existing JobHuntWOW.com dashboard) where every role is a card the agents move through the funnel automatically, with analytics and reminders layered on top.

🔗 Who moves the cards
📊 Analytics & 🔔 nudges
/ HLD · system context

The whole machine, one board

A multi-agent, event-driven, serverless system on DigitalOcean. Tap a block to jump to the layer, agent, security or observability detail. Colors follow the AWS 5-layer serverless-AI reference, remapped to DO.

← swipe the diagram →
/ LLD · multi-agent design (LangGraph supervisor)

Seven agents, one graph

A supervisor graph routes work to specialized agents, runs independent branches in parallel, and keeps a durable, resumable state per application — the LangGraph + AgentCore pattern, self-hosted on DO. Each agent has a narrow tool set (least privilege) and its own model routing.

/ LLD · resume & cover-letter engine

One resume & cover letter, per job

Tailored to each posting from the person's real history — never generic, never invented. Eight stages from raw evidence to an ATS-parseable PDF, with the Truth Gate sitting in the middle as the honesty checkpoint.

/ LLD · ATS apply playbooks — NOT Easy Apply

LinkedIn → the real ATS, step by step

Every flow starts on a LinkedIn job post and clicks the external Apply button, which redirects to the employer's ATS. We deliberately never touch Easy Apply. Pick a platform to watch the Apply Driver work through its specific quirks.

/ LLD · layered reference architecture

Five layers — AWS rigor, DO stack

We borrow AWS's five-layer serverless-AI reference (interface → processing → inference → decisioning → storage) and the 3-tier separation-of-concerns (frontend / middleware / backend), then map every layer to a DigitalOcean-native service — with the "why this and not that" called out.

/ LLD · sequence flows

How a run actually executes

Three end-to-end sequences. Each line lights up in order — this is the exact control flow the orchestrator drives, including every human gate and graceful-stop.

/ LLD · component register

Every component, pinned

The build sheet: each component, the concrete technology, the alternative we rejected, and why.

ComponentChoiceRejected altWhy
/ LLD · key trade-offs

Why this, not that

The decisions that define the system — stated as explicit trade-offs so a reviewer can challenge them.

DecisionWe choseOverRationale
/ LLD · automation, containers, IaC & delivery

The whole stack is one command

Every service and agent is a Docker container; Docker Compose brings the stack up; bursty jobs run serverless on DO Functions. And it's all Terraform from Day 0terraform apply provisions the droplet(s) and renders every config on them via cloud-init, then docker compose up. Maximum automation: CI/CD, immutable images, secrets and throttle-as-code.

🧭 Bootstrap — terraform apply → full running stack (incl. all configs)
🐙 GitHub — source of truth, CI/CD & testing

Everything lives in GitHub. Every push runs the pipeline; nothing reaches the droplet except through it. Tests and LLM evals are gates, not afterthoughts.

🔧 Pipeline — git push → production
🧪 Testing gates (each blocks the merge/deploy)
🗺️ Where to start — Compose-first vs Day-0 full IaC?

The exact question worth answering before writing a line. Two honest extremes, then the recommended middle.

/ LLD · the actual scaffolding

The repo, in the open

The Day-0 skeleton that makes “one command” real: containers, Compose, Terraform, cloud-init and the CI/CD pipeline. Illustrative shapes — the full repo lands in Phase 0.

/ LLD · deployment target & sizing

Live on jobhuntwow.com

Your domain (GoDaddy) pointed at your DigitalOcean droplet in FRA1. Here is the honest capacity read — and exactly how to wire the domain through Cloudflare (which doubles as the WAF layer in the design).

📊 What fits on 4 GB (Phase-0 lean stack)
ComponentRuns where~RAMOn 4 GB?
🌐 Point jobhuntwow.com at the droplet
📈 Scale path
/ LLD · data model

Core schema

Normalized, tenant-isolated, evidence-linked. Postgres for truth, pgvector for retrieval, Spaces for artifacts, an append-only audit log for everything that happened.

/ LLD · observability & ops

See everything. Prove anything.

Three pillars — metrics, logs, traces — plus LLM-specific telemetry and an immutable audit trail. Self-hosted open stack (no vendor lock-in), so it ships with the open-source repo.

🤖 LLM / agent-specific signals

Beyond infra metrics, these are the signals that tell you the agent is healthy and honest.

/ LLD · security by design (KISS)

Guardrails, defense in depth

Two fronts. First the classic perimeter and platform controls. Then the AI-specific threats — mapped one-to-one against the OWASP Top 10 for LLM Applications (2025), because an agent that fills forms and reads recruiter email is a juicy target for prompt injection and model poisoning.

🛡️ Perimeter & platform controls
🧠 LLM & agent threats — OWASP LLM Top 10 (2025), mitigated
/ Build vs reuse

What we already have

We don't start from zero. Concrete code and open projects we lift directly.

/ Non-functionals

Scale, cost & failure

/ Reality check

Legal, ethical & honest

/ From POC to open source

The path

/ LLD · live map

The whole system, in motion

Every puzzle piece and how traffic actually flows between them — client to edge to orchestrator to agents to inference, with data, targets and CI/CD underneath. Dots are live traffic.

← swipe →