Skip to content

rigour-labs/roleverity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agentic job-search platform

The public product name is intentionally provisional. The application is a mobile-first career agent focused on converting fewer, better applications into qualified interviews.

Development and production run the same authenticated product. Local development uses Clerk development keys, PostgreSQL, Ollama, and the local worker; production uses the same routes, schema, authorization, and workflows from one OCI image.

Implemented owner loop

  • Clerk sign-in and sign-up with configured Google, GitHub, LinkedIn, and Microsoft connections.
  • Resume extraction in the browser; original PDF/DOCX bytes are not uploaded.
  • Ollama-backed evidence candidate extraction with explicit verify or reject decisions.
  • Persisted campaign roles, seniority, location, authorization, industry, intensity, and time constraints.
  • Deterministic hard gates and versioned evidence, feasibility, preference, growth, reachability, effort, and uncertainty factors.
  • Requirement-to-evidence links and user-visible recommendation explanations.
  • Bounded Greenhouse, Lever, and Ashby discovery with checkpoints, retries, dead letters, expiration, and source health.
  • Durable LangGraph campaign orchestration with PostgreSQL checkpoints and inspectable actions.
  • Today actions with evidence, confidence, impact, effort, uncertainty, and approve, reject, or defer controls.
  • Application pipeline through offer and closure, with interview and offer outcomes.
  • Evidence-grounded application packets with edit, approval, and unsupported-claim blockers.
  • Source-backed contact paths; guessed personal email addresses are prohibited.
  • Persistent notifications, accessible toasts, theme controls, admin kill switches, and reviewed-source administration.
  • Profile export/import, database backup/restore, and account deletion.

Auto-submit is deliberately disabled. Gmail and Microsoft mailbox/calendar connectors have persistence boundaries but require separate least-privilege OAuth implementation before activation.

Local setup

Requirements: Docker Desktop and a free Clerk application.

cp .env.example .env.local
# Add the Clerk development keys to .env.local.
make up
make model
make doctor

Open http://127.0.0.1:1150. A new account contains no example jobs, metrics, applications, contacts, or evidence.

In Clerk Dashboard:

  1. Enable the required GitHub, Google, LinkedIn, and Microsoft social connections.
  2. Configure B2C Billing plan and feature slugs.
  3. Select one Organization as the platform-operator authorization realm.
  4. Copy its ID to CLERK_PLATFORM_ORGANIZATION_ID.
  5. Assign platform operators org:admin, or configure a custom permission through CLERK_PLATFORM_ADMIN_PERMISSION.

Copy exact Clerk slugs into CLERK_PLAN_PRIORITY and CLERK_FEATURE_SLUGS. Localhost and production differ only by Clerk instance keys and infrastructure configuration.

Ports and commands

All host services bind to loopback and reserve ports 1150–1154:

Service Endpoint
Next.js http://127.0.0.1:1150
PostgreSQL 127.0.0.1:1151
Mailpit UI http://127.0.0.1:1152
Mailpit SMTP 127.0.0.1:1153
Ollama http://127.0.0.1:1154

make up checks for collisions before startup. Containers use service DNS and standard internal ports.

make logs
make migrate
make verify
make evaluate
make image
make backup
make export EMAIL=you@example.com
make import FILE=exports/career-agent-TIMESTAMP.json
make delete EMAIL=you@example.com CONFIRM=1

OCI deployment

Build one vendor-neutral image:

docker build -t ai-job-search:release .

Run the same image with separate commands:

docker run ... ai-job-search:release npm run migrate
docker run ... ai-job-search:release npm run web:container
docker run ... ai-job-search:release npm run worker
docker run ... ai-job-search:release npm run evaluate

The web and worker require PostgreSQL. The worker is intentionally a long-lived process; a hosting provider may run it continuously or wake it on a bounded schedule. Core execution does not require provider-specific queues, cron, AI bindings, workflows, or storage.

Cost and safety

  • MONTHLY_AI_BUDGET_CENTS=0 prevents construction of the billable OpenAI provider.
  • AI capacity failures return named states and never switch providers silently.
  • Resend remains disabled until both a verified sender and API key exist.
  • Original resume files remain on-device in the current workflow.
  • Every protected mutation verifies Clerk and includes the authenticated user in its database predicate.
  • Job descriptions are treated as untrusted data and cannot provide agent instructions.
  • External side-effect tools require explicit approval and single-attempt idempotency.

Architecture

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages