# CV Job Match Score Actor (`flowery_gavotte/my-actor`) Actor

Score how well a CV matches a job description using deterministic no-AI signals.

- **URL**: https://apify.com/flowery\_gavotte/my-actor.md
- **Developed by:** [alex](https://apify.com/flowery_gavotte) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## CV Job Match AI Actor

An Apify Actor that scores a pasted CV against one or more pasted job descriptions using AI evaluation.

The Actor does not use hardcoded keyword matching or deterministic local scoring. Each job description is evaluated separately and produces its own match score, rating, summary, matched skills, missing skills, strengths, gaps, and recommendations.

### Input

```json
{
    "jobDescriptions": [
        "We are looking for a Software Engineer with React, TypeScript, Node.js, APIs, PostgreSQL, testing, and CI/CD experience.",
        "We are hiring a Frontend Engineer with strong accessibility, design system, and testing experience."
    ],
    "cvText": "Frontend engineer with experience building React and TypeScript applications, integrating APIs, writing tests, and collaborating with product teams."
}
```

Set the private AI provider API key before running the Actor. Customers do not need to provide their own model key.

### Pricing

Monetization is enabled with Apify pay-per-event pricing. Configure one event:

```text
apify-default-dataset-item = $0.005 per scored job description
```

Cloud runs check event pricing and the remaining run budget before calling the AI provider. Local tests skip billing but still use provider credits.

The Actor saves one dataset item per job description. Apify charges the apify-default-dataset-item event for each dataset item, so each scored job description is billed as one result.

### Output

```json
{
    "jobIndex": 1,
    "jobDescription": "We are looking for a Software Engineer with React, TypeScript, Node.js, APIs, PostgreSQL, testing, and CI/CD experience.",
    "score": 78,
    "rating": "Good match",
    "summary": "The CV is a good match for frontend requirements but has weaker evidence for backend database and CI/CD work.",
    "strengths": ["React and TypeScript experience", "API integration experience"],
    "gaps": ["No clear PostgreSQL evidence", "No CI/CD evidence"],
    "matchedSkills": ["React", "TypeScript", "APIs", "testing"],
    "missingSkills": ["PostgreSQL", "CI/CD"],
    "recommendations": ["Add truthful PostgreSQL or CI/CD examples if available."],
    "analyzedAt": "2026-09-15T02:45:00.000Z"
}
```

### Local Development

```bash
npm install
apify run
```

### Deploy

```bash
apify push
```

# Actor input Schema

## `jobDescriptions` (type: `array`):

One or more full job descriptions. Each item is scored separately and charged as one result.

## `cvText` (type: `string`):

The candidate CV or resume text.

## Actor input object example

```json
{
  "jobDescriptions": [
    "We are hiring a Senior Frontend Engineer to build customer-facing analytics features with React, TypeScript, REST APIs, automated testing, and accessible UI patterns. The role requires at least four years of professional software experience, strong product collaboration, and a record of leading initiatives in a fast-moving startup environment.",
    "We are hiring a Full-stack Product Engineer to build internal workflow tools with React, Node.js, PostgreSQL, API integrations, and pragmatic automated testing. The role requires strong ownership, comfort working directly with operations teams, and the ability to turn ambiguous business problems into reliable software."
  ],
  "cvText": "Jordan Rivera\nSenior Frontend Engineer\njordan.rivera@example.com\nExample City, Example Country\n\n01 PROFILE\nFrontend-focused software engineer with 6 years of experience building production web applications for B2B SaaS teams. Strong in React, TypeScript, API integration, accessibility, automated testing, and product-led delivery. Known for taking ownership of ambiguous problems, improving developer workflows, and leading features from discovery through release.\n\n02 EMPLOYMENT HISTORY\n03/2022 - Present\nSenior Frontend Engineer\nNorthstar Analytics\n* Led development of a React and TypeScript dashboard used by customer success teams to inspect product usage, account health, and workflow bottlenecks.\n* Built reusable chart, table, and form components with accessible keyboard behavior and clear loading/error states.\n* Partnered with product managers and designers to scope MVPs, validate tradeoffs, and ship iterative improvements.\n* Added unit and integration tests for critical reporting workflows, reducing regressions during weekly releases.\n* Mentored two engineers on frontend architecture, code review practices, and API contract design.\n\n06/2019 - 02/2022\nFrontend Developer\nBrightlane Software\n* Built responsive customer onboarding flows using React, REST APIs, CSS modules, and feature flags.\n* Improved page performance by splitting large bundles, trimming unused dependencies, and optimizing API calls.\n* Created Storybook examples for shared UI components and documented usage patterns for the engineering team.\n* Worked in a startup environment with frequent prioritization changes and direct feedback from early customers.\n\n03 EDUCATION\nBachelor of Science in Computer Science\nExample State University\n\n04 SKILLS\nReact\nTypeScript\nJavaScript\nNode.js\nREST APIs\nPostgreSQL\nTesting Library\nVitest\nPlaywright\nAccessibility\nStorybook\nGit\n\n05 LANGUAGES\nEnglish\nSpanish"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("flowery_gavotte/my-actor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("flowery_gavotte/my-actor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call flowery_gavotte/my-actor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,flowery_gavotte/my-actor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bJ5uKVMAZmDs3tU7d/builds/K8X4JkdH9MKryJ6gW/openapi.json
