MCPcopy Index your code
hub / github.com/JohnGabie/claudia-rh

github.com/JohnGabie/claudia-rh @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
316 symbols 530 edges 36 files 13 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Claudia RH logo

Claudia RH

Automated job-application agent powered by Claude + Chrome.

GitHub stars Latest Release CI License: MIT Tauri v2 React 19 Rust Windows 11

If this project inspired or helped you, please consider leaving a star — it really matters!


What is this?

Claudia RH is a Windows desktop app that automates job searching and application. Instead of spending hours copy-pasting your CV across job sites, it launches an AI session that browses, analyses, and submits applications on your behalf — while you do something else.

### How it works 1. **Conversational profile** — tell Claude who you are, paste your CV, define search variants (e.g. "senior remote dev" vs "hybrid tech lead") 2. **Automatic triggering** — the app detects when you're idle and launches a Claude Code session connected to Chrome 3. **Job analysis** — the agent reads each listing, cross-references your profile, and decides whether to apply 4. **Document generation** — CV and cover letter tailored to each job, with honesty enforced 5. **Pending actions & notifications** — captchas, required fields, and other blockers appear as Windows notifications for manual resolution 6. **Feedback** — periodic analysis of results with improvement suggestions ### Features | | Feature | |---|---| | 🤖 | Claude Code agent with Chrome access | | 📄 | AI-generated CV and cover letter per job | | 🔍 | Multiple simultaneous search variants | | 🔔 | Windows notifications for captchas / blockers | | 💤 | Automatic triggering on user inactivity | | 🔐 | Credentials stored in Windows Credential Manager | | 📊 | Dashboard with real-time statistics | | 💬 | Profile managed via conversational chat | | 📈 | Feedback tab with trend charts | | 🖥️ | Integrated PTY terminal |

Architecture

┌──────────────────────────────────────────────────────────┐
│                    Claudia RH (Tauri)                     │
│                                                          │
│  ┌──────────┐  ┌────────┐  ┌──────────┐  ┌──────────┐  │
│  │Dashboard │  │Profile │  │ Pending  │  │ Feedback │  │
│  │          │  │ (chat) │  │ actions  │  │ (graphs) │  │
│  └──────────┘  └────────┘  └──────────┘  └──────────┘  │
│                                                          │
│       React 19 + TypeScript + xterm.js                   │
│  ─────────────────────────────────────────────────────   │
│       Rust (Tauri v2) + SQLite + keyring                 │
│                                                          │
│  ┌─────────────────────────────────────────────────┐    │
│  │  PTY Manager  →  claude --chrome  →  Chrome     │    │
│  │                   (Claude Code CLI)   Extension  │    │
│  └─────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────┘
         ↕ Tauri events (SQLite watcher, idle watcher)
    SQLite DB: jobs · applications · pending actions · sessions

Tech stack

Layer Technology Version Purpose
Desktop shell v2 Native Windows app without Electron
Frontend 19.1 Reactive UI
UI language 5.8 Type-safety on the frontend
Backend 2021 edition System logic, PTY, SQLite, credentials
Database via rusqlite Jobs, applications, sessions, pending actions
Terminal xterm.js + portable-pty 6.x Real PTY embedded inside the app
AI latest Application agent with Chrome access
Credentials keyring v3 3.x Windows Credential Manager — never plain text

Prerequisites

**Required** - Windows 11 (build ≥ 26200) - [Claude Code CLI](https://claude.ai/code) installed and authenticated - **Claude in Chrome** extension installed in Chrome - Rust toolchain (`rustup`) - Node.js 20+ **Recommended** - Claude Pro or Team account (for session volume) - Chrome as your primary browser - 8 GB RAM+

Claude in Chrome extension setup — critical step

Without this step the agent cannot control the browser and will do nothing.

### Install the extension 1. Open Chrome and go to the **Chrome Web Store** 2. Search for **"Claude"** (official Anthropic extension) 3. Install the **Claude** extension in Chrome > ⚠️ **The Google/Claude account used in Chrome must be exactly the same one authenticated in the Claude Code CLI.** If they differ, the connection fails silently. ### Enable Chrome mode After installing the extension, open a terminal and run Claude Code:
claude
Inside the session, type:
/chrome
When the **"Enable by default"** option appears, select **Yes**. Close Claude, reopen it — from then on Chrome connects automatically in every session.

Installation

Option 1 — npm (recommended)

Installs the app and the Claude Code CLI in one command:

npm install -g claudia-rh

On first run, claudia-rh downloads the Windows executable automatically:

claudia-rh

Option 2 — direct download

Download the latest installer from the Releases page:

File Description
claudia-rh_0.2.0_x64-setup.exe NSIS installer (recommended)
claudia-rh_0.2.0_x64_en-US.msi MSI installer

Option 3 — build from source

# 1. Clone
git clone https://github.com/JohnGabie/claudia-rh.git
cd claudia-rh

# 2. Install dependencies
npm install

# 3. Dev mode
npm run tauri dev

# 4. Production build
npm run tauri build

The installer will be at src-tauri/target/release/bundle/.


Project structure

claudia-rh/
├── src/                        # React frontend
│   ├── components/
│   │   ├── Dashboard.tsx       # Statistics and session control
│   │   ├── Perfil.tsx          # Conversational profile chat
│   │   ├── Vagas.tsx           # Job history and applications
│   │   ├── Pendencias.tsx      # Pending blockers (captcha, etc.)
│   │   ├── Feedback.tsx        # Results analysis + charts
│   │   ├── Configuracoes.tsx   # Credentials, triggering, strategy
│   │   ├── Terminal.tsx        # Integrated PTY terminal
│   │   └── Sidebar.tsx         # Navigation + badges
│   └── styles/tokens.css       # Design tokens (colours, typography)
│
└── src-tauri/src/              # Rust backend
    ├── commands/
    │   ├── perfil.rs           # candidate_base.yaml + search_variants.yaml
    │   ├── sessao.rs           # Session triggering and management
    │   ├── curriculos.rs       # CV generation
    │   ├── cover_letter.rs     # Cover letter generation
    │   ├── feedback.rs         # Feedback analysis
    │   ├── credenciais.rs      # Keyring (Windows Credential Manager)
    │   └── estado.rs           # Statistics queries
    ├── db/schema.sql           # Full SQLite schema
    ├── pty_manager.rs          # PTY process management + session signals
    ├── idle_watcher.rs         # Inactivity detection (Win32 GetLastInputInfo)
    └── notificacoes.rs         # Windows notifications (Tauri plugin)

Disclaimer

This tool automates browser actions on your behalf. Ensure the terms of service of the job platforms you use allow automation. The author is not responsible for account bans or other effects resulting from using this tool.


Contributing

Issues and PRs are welcome. Before opening a large PR, open an issue to discuss the approach.

Read the contributing guide for dev setup, commit conventions, and PR process. This project follows the Contributor Covenant Code of Conduct. To report security vulnerabilities, see the security policy.


Built with ☕ and way too many rejected applications.

If you made it this far and found it useful — a star makes a difference! ⭐

Star on GitHub

Extension points exported contracts — how you extend this code

Vaga (Interface)
(no doc)
src/components/Dashboard.tsx
VagaAtual (Interface)
(no doc)
src/components/Dashboard.tsx
Vaga (Interface)
(no doc)
src/components/Vagas.tsx
Candidatura (Interface)
(no doc)
src/components/Vagas.tsx
DadosPessoais (Interface)
(no doc)
src/components/Perfil.tsx

Core symbols most depended-on inside this repo

upd
called by 17
src/components/Perfil.tsx
esc
called by 12
src-tauri/src/commands/curriculos.rs
pty_cell
called by 9
src-tauri/src/pty_manager.rs
tint
called by 7
src-tauri/src/commands/curriculos.rs
carregarLista
called by 6
src/components/Perfil.tsx
perfil_conv
called by 6
src-tauri/src/commands/perfil.rs
read_prompt
called by 6
src-tauri/src/commands/prompts.rs
carregar
called by 5
src/components/Dashboard.tsx

Shape

Function 251
Class 40
Interface 23
Method 2

Languages

Rust58%
TypeScript42%

Modules by API surface

src/components/Perfil.tsx66 symbols
src-tauri/src/commands/perfil.rs46 symbols
src-tauri/src/commands/curriculos.rs26 symbols
src/components/Feedback.tsx18 symbols
src-tauri/src/commands/feedback.rs16 symbols
src-tauri/src/db/queries.rs15 symbols
src-tauri/src/commands/estado.rs12 symbols
src-tauri/src/commands/cover_letter.rs12 symbols
src/components/Pendencias.tsx10 symbols
src-tauri/src/lib.rs10 symbols
src/components/Dashboard.tsx9 symbols
src/components/Vagas.tsx8 symbols

For agents

$ claude mcp add claudia-rh \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page