Skip to content

Sira

Multi-agent AI that tailors your resume to a job posting — without inventing facts.

Sira (سيرة) is the Arabic word for a life story. Sīra dhātiyya (سيرة ذاتية) is the term for a curriculum vitae — the story you tell about your own work.

Sira is a command-line tool. You give it a job posting URL and your resume file. It scrapes the posting, rewrites your resume to match the role, audits the result for invented facts and AI clichés, and writes a self-review report telling you where you still fall short.

What it does, in order

flowchart TD
    URL([Job posting URL]) --> S0
    FILE([Your resume file]) --> S1

    S0["<b>0. Job Scraper</b><br/>headless browser -> Markdown"]
    S1["<b>1. Resume Parser</b><br/>file -> structured CV"]
    S2["<b>2. Job Analyst</b><br/>posting -> skills, keywords"]

    S0 --> S2
    S1 --> S3
    S2 --> S3

    subgraph LOOP["Write -> Review -> Audit loop"]
        direction TB
        S3["<b>3. CV Writer</b><br/>rephrase, never invent"]
        S4["<b>4. Reviewer</b><br/>score and suggest"]
        S5["<b>5. Auditor</b><br/>hallucinations and cliches"]
        S3 --> S4 --> S5
        S5 -.->|audit failed, rewrite| S3
    end

    S5 -->|audit passed| S6["<b>6. Report</b><br/>diff, gaps, verdict"]
    S6 --> OUT([Resume in .md / .pdf / .docx<br/>plus a self-review report])
Stage Agent What happens
0 Job Scraper Fetches the posting with a headless browser and converts it to Markdown
1 Resume Parser Turns your .md / .docx / .pdf resume into a structured CV object
2 Job Analyst Extracts required skills, responsibilities, and ATS keywords
3 CV Writer Rephrases existing content to match the role
4 Reviewer Scores the draft and suggests refinements
5 Auditor Checks for hallucinations, clichés, and dropped hyperlinks
6 Report Compiles the diff, gap analysis, and recommendation

Stages 3–5 form a loop: a failed audit sends the draft back to the writer. See Architecture for the full picture.

ATS (Applicant Tracking System) — the software an employer uses to filter resumes before a human reads them. It matches on keywords, which is why keyword coverage is scored in the report.

The rule that makes it useful

The writer may rephrase what is already in your resume. It may not add a skill, a company, a role, or an achievement that is not there. The auditor exists to enforce that rule, and the report tells you honestly which job requirements you do not meet rather than papering over them.

Install

From PyPI, as a standalone tool:

uv tool install sira        # or: pipx install sira
sira setup                  # downloads the Chromium browser the scraper drives
export OPENAI_API_KEY=sk-…
sira tailor https://example.com/jobs/12345 ~/resume.md

Or from source, to work on Sira itself:

git clone https://github.com/Tiqni/sira
cd sira
uv sync
uv run sira setup
export OPENAI_API_KEY=sk-…
uv run sira tailor https://example.com/jobs/12345 ~/resume.md

The rest of this site writes commands in the from-source form, uv run sira …. With a PyPI install, drop the uv run prefix.

Full walkthrough: Getting started.

Where to go next

If you want to Read
Install it and run it for the first time Getting started
Look up a command or a flag CLI reference
Use Anthropic, Gemini, Groq, or a local model Models and providers
Understand the generated files and the report Output and reports
Know what is stored on disk, and where Resume memory
Fix an error you just hit Troubleshooting
Set up a development environment Contributing
Find your way around the source tree Project layout
Look up an agent, its prompt rules, or its output type Agent reference
Add an agent or a CLI flag Extending Sira
Understand how the whole system fits together Architecture

Requirements

  • Python 3.13+
  • uv — the package manager and runner this project uses
  • A Chromium browser for Playwright — installed once with sira setup
  • An API key for whichever LLM provider you pick (OpenAI by default)

Licence

MIT.