Kleos is a public-signup SaaS for structured, privacy-first job outreach. You connect your own SMTP sender, upload a resume, and set search preferences; Kleos helps you discover roles, draft a tailored email per role, and send one at a time with deliverability protection — without handing your inbox to a third party.
- Own-inbox sending — connect your SMTP credentials (stored AES-GCM encrypted at rest); mail goes out as you.
- Resume management — upload PDF, automatic text extraction, activation, listing, deletion.
- Search preferences — store and full-replace targeting preferences.
- Tailored email drafting — generates three email variants per role and runs a spam self-check to pick the safest send (see Concepts).
- Inbox warm-up — gradual send ramp to protect sender reputation.
- Accounts — email/password + Google sign-in, JWT sessions with grace-window secret rotation.
- Health dashboard — read-only progress + health view.
| Surface | URL |
|---|---|
| App | https://abhiyadav.in/kleos/ |
| API base | https://abhiyadav.in/kleos/api/ |
Prereqs: Go 1.23+, Docker, PostgreSQL.
git clone https://github.com/almostturingcomplete/Kleos.git
cd Kleos
cp .env.example .env # fill secrets (JWT, encryption key, DB)
make # build / run targets — see MakefileProduction runs via Docker Compose (deploy/docker-compose.yml) behind an Nginx /kleos/ subpath, with scripts/backup.sh for Postgres dumps.
- Sign up / log in (email or Google).
- Connect and verify your SMTP sender.
- Upload and activate a resume.
- Set search preferences.
- Review drafted variants per role and send.
- Three-variant generation + spam self-check — for each role Kleos drafts three candidate emails, scores each against common spam-trigger heuristics, and surfaces the lowest-risk variant so outreach lands in the inbox rather than spam.
- Inbox warm-up — newly connected senders have no reputation; sending at full volume immediately gets flagged. Warm-up ramps daily volume slowly so mailbox providers learn the sender is legitimate, raising long-term deliverability.
MIT © 2026 Abhinav Yadav
