Full resume rewrite tailored to a job description. ATS-optimised. Complete cover letter. All saved to files ready to submit.
bash
pip3 install rich --break-system-packages --quiet
python
import os, sys, re
from datetime import datetime
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from rich.rule import Rule
from rich import box
console = Console()
LICENSE_KEY = os.environ.get("LICENSE_KEY", "").strip()
if not LICENSE_KEY or not LICENSE_KEY.startswith("ANUBIS-STD-"):
console.print(Panel(
"[red bold]Anubis Standard requires a license key.[/red bold]\n\n"
"Get your key at: [bold cyan]ko-fi.com/occupythemilkyway[/bold cyan]\n\n"
"Or use the free version: [dim]openclaw skills install anubis-lite[/dim]",
title="License Required",
border_style="red"
))
sys.exit(1)
JD = os.environ.get("JOB_DESCRIPTION", "").strip()
RESUME_PATH = os.environ.get("RESUME_PATH", "").strip()
YOUR_NAME = os.environ.get("YOUR_NAME", "").strip()
COVER_TONE = os.environ.get("COVER_TONE", "professional").lower().strip()
OUTPUT_DIR = os.environ.get("OUTPUT_DIR", "./anubis_output").strip()
if not JD:
console.print(Panel("[red]JOB_DESCRIPTION is required.[/red]", title="Error", border_style="red"))
sys.exit(1)
if not RESUME_PATH or not os.path.exists(RESUME_PATH):
console.print(Panel(f"[red]RESUME_PATH not found: {RESUME_PATH}[/red]", title="Error", border_style="red"))
sys.exit(1)
os.makedirs(OUTPUT_DIR, exist_ok=True)
with open(RESUME_PATH, encoding="utf-8", errors="replace") as fh:
resume_text = fh.read()
# ATS keyword extraction
TECH_KW = ["python","javascript","typescript","react","node","sql","aws","azure","gcp","docker",
"kubernetes","machine learning","ai","data","api","rest","agile","scrum","product",
"management","leadership","analytics","excel","tableau","salesforce","java","go"]
SOFT_KW = ["communication","collaboration","problem-solving","leadership","analytical",
"strategic","cross-functional","stakeholder","detail-oriented"]
jd_lower = JD.lower()
ats_tech = [k for k in TECH_KW if k in jd_lower]
ats_soft = [k for k in SOFT_KW if k in jd_lower]
exp_match = re.findall(r"(\d+)\+?\s*years?", JD, re.IGNORECASE)
exp_req = exp_match[0] + "+ years" if exp_match else "Not specified"
role_line = JD.split("\n")[0].strip()[:80]
console.print()
console.print(Panel.fit(
f"[bold magenta]🐺 Anubis Standard -- Career Application Engine[/bold magenta]\n"
f"Role: [cyan]{role_line}[/cyan]\n"
f"Exp: [white]{exp_req}[/white]\n"
f"Tone: [white]{COVER_TONE}[/white]\n"
f"Output: [green]{OUTPUT_DIR}/[/green]",
border_style="magenta"
))
tbl = Table(title="ATS Analysis", box=box.SIMPLE, border_style="magenta")
tbl.add_column("Category", style="dim", width=20)
tbl.add_column("Keywords", style="cyan")
tbl.add_row("Technical", ", ".join(ats_tech) or "None detected")
tbl.add_row("Soft skills", ", ".join(ats_soft) or "None detected")
console.print(tbl)
console.print(Rule("[magenta]Loading documents...[/magenta]"))
print(f"\n=== CURRENT RESUME ===\n{resume_text}\n=== END RESUME ===")
print(f"\n=== JOB DESCRIPTION ===\n{JD}\n=== END JD ===")
Based on the resume and job description above, generate two complete documents:
Document 1: TAILORED_RESUME.md Rewrite the candidate's resume to be perfectly tailored for this job:
Document 2: COVER_LETTER.md Write a complete cover letter in the {COVER_TONE} tone:
Both documents must be submission-ready. No placeholders unless genuinely unknown.
python
import os
from datetime import datetime
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from rich import box
console = Console()
date_str = datetime.now().strftime("%Y%m%d")
resume_out = os.path.join(OUTPUT_DIR, f"tailored_resume_{date_str}.md")
letter_out = os.path.join(OUTPUT_DIR, f"cover_letter_{date_str}.md")
tbl = Table(title="Anubis -- Application Package Ready", box=box.SIMPLE, border_style="green")
tbl.add_column("File", style="cyan")
tbl.add_column("Description", style="dim")
tbl.add_row(resume_out, "ATS-optimised tailored resume")
tbl.add_row(letter_out, f"Cover letter ({COVER_TONE} tone)")
console.print()
console.print(tbl)
console.print(Panel(
"[bold green]Application package complete.[/bold green]\n\n"
"Upgrade to [magenta]Anubis Pro ($9)[/magenta] for interview Q&As, follow-up email templates, and application tracking.\n"
"-> [cyan]ko-fi.com/occupythemilkyway[/cyan]",
border_style="green"
))
Save both files to OUTPUT_DIR using your file writing tool, then display the confirmation.