Skip to content

rules.yaml

rules.yaml defines what you accept and what gets rejected — automatically. Any AI agent that evaluates an opportunity against your card must check this file before proceeding. Rules are not suggestions; compliant agents treat them as hard constraints.

schema_versionstringrequired

Protocol version this rules file conforms to. Current value: "0.1.0".

engagementobjectrequired

Controls which types of work you accept and your minimum compensation thresholds.

properties
allowed_typesstring[]required

Engagement types you are open to. Valid values: permanent, contract, fractional, advisory, internship. Agents must reject any opportunity whose type is not in this list.

compensationobject

Minimum compensation by engagement type.

properties
minimum_base_eurobject

Minimum compensation thresholds in EUR, keyed by engagement type.

properties
permanentinteger | 'negotiable'

Annual salary minimum (EUR). Use "negotiable" for no hard floor.

contractinteger | 'negotiable'

Daily rate minimum (EUR).

fractionalinteger | 'negotiable'

Monthly retainer minimum (EUR).

advisoryinteger | 'negotiable'

Hourly rate minimum (EUR).

remoteobjectrequired

Your location and remote-work preferences.

properties
policystringrequired

Your remote-work policy. One of: remote_only, hybrid, flexible, on_site.

hybrid_locationsstring[]

Acceptable locations for hybrid roles. Only relevant when policy is "hybrid".

filtersobjectrequired

Automatic filtering rules for incoming opportunities.

properties
blocked_industriesstring[]

Industries you will not work in. Any opportunity from a company in a blocked industry is automatically rejected — for example "gambling", "weapons", "tobacco".

stack_keywordsobject

Preferred technology and skill keywords for matching.

properties
preferredstring[]

Keywords that increase match score — for example "Python", "Kubernetes", "AWS".

soft_rejectobject

Conditions that trigger a SOFT_REJECT (flagged for manual review rather than automatic rejection).

properties
weak_stack_overlap_belowinteger

Minimum number of stack_keywords.preferred matches required. If an opportunity matches fewer keywords than this threshold, a SOFT_REJECT is returned.

privacyobjectrequired

Data disclosure rules organized by zone.

properties
zone_1_publicstring[]required

Fields visible to everyone for free — typically title, seniority, primary_domains, availability.

zone_2_paidstring[]required

Fields visible after a micro-fee payment — typically full_profile, evidence, experience_details.

zone_3_privatestring[]required

Fields shared only after explicit candidate approval — typically email, phone, exact_salary.

Based on the sample card in the repository:

schema_version: "0.1.0"
engagement:
allowed_types:
- permanent
- contract
- advisory
compensation:
minimum_base_eur:
permanent: 80000
contract: 600
advisory: 150
remote:
policy: "remote_only"
hybrid_locations:
- "California"
- "New York"
filters:
blocked_industries:
- "gambling"
- "weapons"
- "tobacco"
stack_keywords:
preferred:
- "Python"
- "TypeScript"
- "Kubernetes"
- "AWS"
- "FastAPI"
soft_reject:
weak_stack_overlap_below: 3
privacy:
zone_1_public:
- title
- seniority
- primary_domains
- availability
zone_2_paid:
- full_profile
- evidence
- experience_details
zone_3_private:
- email
- phone
- exact_salary

When an agent evaluates an opportunity against your card, it runs the following checks in order:

  1. Engagement type check — if the opportunity’s type is not in engagement.allowed_types, the agent returns REJECT.
  2. Remote policy check — if the role requires on-site work and your policy is remote_only, the agent returns REJECT.
  3. Compensation check — if the offered compensation is below engagement.compensation.minimum_base_eur, the agent returns REJECT.
  4. Industry filter — if the company’s industry appears in filters.blocked_industries, the agent returns REJECT.
  5. Stack keyword check — if matched keywords fall below filters.soft_reject.weak_stack_overlap_below, the agent returns SOFT_REJECT for manual review.

If all checks pass, the agent returns ACCEPT and may proceed to the interview handoff step.