{"id":29480992,"url":"https://github.com/ajiwo/resumatter","last_synced_at":"2026-01-20T16:32:14.470Z","repository":{"id":307217103,"uuid":"1028508046","full_name":"ajiwo/resumatter","owner":"ajiwo","description":"Open source AI tool for tailoring resumes to specific job descriptions. Includes accuracy validation and job posting analysis.","archived":false,"fork":false,"pushed_at":"2025-10-26T10:27:21.000Z","size":1114,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-26T12:22:41.371Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajiwo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-29T16:23:35.000Z","updated_at":"2025-10-26T10:27:25.000Z","dependencies_parsed_at":"2025-08-13T23:21:59.073Z","dependency_job_id":"4e3981c5-b6eb-46bc-be90-9dc03da1c2b2","html_url":"https://github.com/ajiwo/resumatter","commit_stats":null,"previous_names":["ajiwo/resumatter"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ajiwo/resumatter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajiwo%2Fresumatter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajiwo%2Fresumatter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajiwo%2Fresumatter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajiwo%2Fresumatter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajiwo","download_url":"https://codeload.github.com/ajiwo/resumatter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajiwo%2Fresumatter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","api","backend","cli-tool","gemini","go","resume","self-hosted"],"created_at":"2025-07-14T23:55:14.237Z","updated_at":"2026-01-20T16:32:14.454Z","avatar_url":"https://github.com/ajiwo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Resumatter\n\n\u003e [!WARNING]\n\u003e This project is in the early stages of development and should be considered beta software. APIs and configurations may change.\n\nResumatter is an AI-powered resume tailoring tool designed to optimize your resume for any job description. It leverages Generative AI to analyze your resume and a target job posting, then rewrites your resume to maximize its impact and improve its Applicant Tracking System (ATS) score.\n\n## Core Features\n\n- **AI-Powered Resume Tailoring**: Integrates with multiple AI providers (Google Gemini, OpenAI) to help rewrite and optimize resume content.\n- **ATS Scoring \u0026 Analysis**: Offers estimated ATS scoring and analysis, highlighting potential strengths and areas for improvement based on job descriptions.\n- **Resume Integrity Evaluation**: Compares tailored resumes against originals to help ensure important information is preserved.\n- **REST API**: Provides functionality through a versioned REST API for integration with other tools.\n- **Flexible Configuration**: Configurable via YAML files with validation, environment variable support, and variable expansion.\n- **Observability Support**: Includes OpenTelemetry integration for metrics and tracing to help with monitoring and debugging.\n\n## API Endpoints\n\nResumatter exposes the following core endpoints:\n\n- `POST /api/v1/ai/tailor`: Takes a base resume and a job description, and returns a tailored resume along with an ATS analysis.\n- `POST /api/v1/ai/evaluate`: Compares a base resume and a tailored resume to check for significant data loss or hallucinated additions.\n- `POST /api/v1/ai/analyze`: Takes a job description and returns a detailed analysis of its quality, clarity, inclusivity, and market competitiveness.\n- `GET /health`: A simple health check endpoint.\n\n## Getting Started\n\n### 1. Build the Application\n```bash\nmake build\n```\nThis command compiles the main `resumatter` server binary into the `./build` directory.\n\n### 2. Configure the Application\n\nYou have two options for configuration:\n\n#### Option A: Using Environment Variables (Recommended for quick start)\nSet the required environment variable and run directly:\n```bash\nexport AI_GEMINI_API_KEY=\"your-gemini-api-key\"\n./build/resumatter serve\n```\n\n#### Option B: Using Configuration File\nCopy `config.getting-started.yaml` to `config.yaml` and populate it with your settings:\n```bash\ncp config.getting-started.yaml config.yaml\n# Edit config.yaml with your API keys and settings\n./build/resumatter serve\n```\n\n### 3. Run the Server\n```bash\n./build/resumatter serve\n```\nThe server will start, typically on port 8780, as defined in your configuration.\n\nBy default, config file watching is enabled and TLS certificate file watching is enabled. Configuration changes are automatically applied where possible:\n\n- **Rate limiting**: Fully hot-reloadable\n- **AI provider settings**: Fully hot-reloadable  \n- **Authentication settings**: Fully hot-reloadable\n- **TLS certificates**: Automatically reloaded when `server.pem` or `server-key.pem` files change\n- **TLS settings** (`min_version`, `cipher_suites`, `mode`): Require a server restart\n\nYou can control this behavior with flags:\n\n```bash\n# Enable config file watching\n./build/resumatter serve --config-watch\n\n# Disable TLS certificate file watching\n./build/resumatter serve --tls-cert-watch=false\n```\n\n### 4. Use the API\nYou can interact with the API using `curl` or any HTTP client. The `scripts` directory contains example usage scripts.\n\n**Example: Tailor a Resume**\n```bash\n./scripts/test-tailor.sh\n```\n\n## Configuration Management\n\nWhile the main application is a server, it includes a CLI for managing its configuration.\n\n### Validate Configuration\n```bash\n./build/resumatter validate --verbose\n```\nValidates the configuration file and reports any errors. With `--verbose`, shows summary statistics.\n\n### Show Complete Configuration\n```bash\n./build/resumatter show\n```\nDisplays the entire parsed configuration in JSON format.\n\n### List \u0026 Show AI Presets\n```bash\n# List all available presets\n./build/resumatter list-presets\n\n# Show details for a specific preset\n./build/resumatter show-preset prod-gemini\n```\n\n## Configuration Options\n\n### Quick Start with Environment Variables\nThe application can run without a configuration file - just set your API key:\n```bash\nexport AI_GEMINI_API_KEY=\"your-gemini-api-key\"\n./build/resumatter serve\n```\n\n### Configuration File Support\nFor advanced configuration, use a YAML file:\n```bash\ncp config.getting-started.yaml config.yaml\n# Edit with your settings\n./build/resumatter serve\n```\n\nConfiguration files support environment variable expansion for sensitive data:\n```yaml\nai:\n  presets:\n    default:\n      api_key: \"${GEMINI_API_KEY}\"\n```\n\n## Contributing\n\nContributions are welcome! Please note that this project is maintained in my spare time, so my availability may be limited to a couple of times a week. I appreciate your patience and understanding.\n\nIf you'd like to contribute, please:\n\n1.  Fork the repository.\n2.  Create a new branch for your feature or bug fix.\n3.  Make your changes and commit them with clear, descriptive messages.\n4.  Open a pull request, and I will review it as soon as I can.\n\n## License\n\nThis project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajiwo%2Fresumatter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajiwo%2Fresumatter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajiwo%2Fresumatter/lists"}