Files
2026-07-06 11:05:50 -04:00

3.7 KiB

Apex — TUI-First AI Job Search Platform

License: PolyForm Noncommercial Commercial license available

A Go-based terminal UI application for intelligent job search, evaluation, and application tracking using Claude AI.

License

This project is free for non-commercial use under the PolyForm Noncommercial License 1.0.0. Commercial use (inside a business, or to provide a paid product/service) requires a separate commercial license — see LICENSE-COMMERCIAL.md. Full details in LEGAL.md. Third-party font licenses are in ATTRIBUTION.md.

Overview

Apex is a native terminal UI for job search, built with Bubble Tea and Lipgloss. It integrates Claude AI for job offer evaluation (A-G scoring), supports DOCX intake with voice extraction, and provides three-tier job portal scraping (JSON APIs, static HTML, authenticated browser).

Features

  • TUI Interface: Tab-based Bubble Tea UI (Intake, Scan, Pipeline, Reports, Settings)
  • Intake System: 8-phase interview flow, DOCX CV upload, voice sample extraction
  • Portal Scanning: Tier 1 (JSON APIs: Greenhouse, Ashby, Lever), Tier 2 (static: Indeed, Built In, RemoteOK), Tier 3 (browser: LinkedIn, Glassdoor, Workday)
  • Evaluation Pipeline: Claude A-G scoring with real-time streaming
  • CV Generation: PDF and DOCX output, tailored per job description
  • Tracker: Application status machine (Evaluated → Applied → Offer → Rejected)
  • Follow-ups: Cadence tracking and pattern analysis

Architecture

internal/
├── tui/          Bubble Tea interface + tab models
├── intake/       8-phase interview state machine
├── docx/         Parser + voice extraction + DOCX generation
├── scan/         Tier-1/2/3 scrapers + adapters
├── eval/         Claude CLI subprocess wrapper
├── cv/           PDF + DOCX generation
├── tracker/      Applications CRUD + status machine
└── store/        SQLite schema + queries

migrations/      SQL schema definitions
modes/           Claude prompt files

Building

Prerequisites

  • Go 1.22+
  • SQLite (included via modernc.org/sqlite, pure Go, no CGO required)
  • Claude CLI (claude command in PATH)

Quick Start

git clone <this-repo>
cd apex-public
make build
./apex

Testing

make test      # Run all tests
make lint      # Run go vet + fmt
make clean     # Remove binaries

Configuration

Place a config.yml in the project root:

profile:
  name: Your Name
  email: you@example.com
  location: US
  timezone: America/New_York
  salary_target:
    min: 150000
    max: 250000

claude:
  model: claude-opus-4-1-20250805
  temperature: 0.7

API keys and other secrets are read from environment variables at runtime — never committed to config files.

Database

SQLite database auto-initializes at ~/.apex/apex.db on first run. Schema includes:

  • profile: User info and targets
  • jobs: Job postings (URL, company, title, raw HTML)
  • applications: Tracker (status, score, PDF link)
  • reports: A-G evaluation reports (markdown + HTML)
  • scan_history: Dedup for portal scans
  • voice_samples: DOCX intake + transcription
  • follow_ups: Cadence tracking

All queries use parameterized statements (no SQL injection risk).

Security

  • No secrets in source code; all API keys read from environment at runtime
  • Claude subprocess uses argument arrays only (never bash -c)
  • SQLite queries parameterized
  • No .env files committed

Contributing

See CONTRIBUTING.md.