Skip to main content

hermes-rubric

Score AI artifacts with receipts, not vibes.

PyPI Python License: MIT CI Hermes Seal

For builders shipping AI artifacts (papers, PRs, prompts, cold emails, lead dossiers) where you need a defensible score with citations, not an unaudited LLM judgment. Built for the case where "the model said 8.7" doesn't survive review.

Install

pip install hermes-rubric

By default, the CLI auto-detects Claude Code first, then local Ollama; see Backends for requirements and alternatives.

Quick start

hermes-rubric \
  --intent "rate this paper for publication-readiness" \
  --context STYLE-GUIDE.md \
  --target paper.md \
  --out result.json

Truncated output:

{
  "aggregate": 8.7,
  "max_possible": 10.0,
  "hedge_dims": ["Reproducibility"],
  "hedge_note": "1 dimension(s) had thin evidence — scores for these are less reliable: Reproducibility",
  "per_dim_scores": [
    {"dim_id": "claim_density", "score": 8, "score_rationale": "..."}
  ],
  "evidence_citations": [
    {
      "dim_id": "claim_density",
      "evidence_found": true,
      "citations": [
        {
          "quote": "...",
          "evidence_id": "S1:E1",
          "location": "S1:E1 — Whole document",
          "source_class": "doc"
        }
      ]
    }
  ],
  "dim_summaries": [
    {"dim_id": "claim_density", "name": "Claim Density", "score": 8, "weight": 3, "hedge": false}
  ],
  "receipt": {
    "tool_version": "hermes-rubric 1.0.2",
    "backend": "claude-cli-contextual",
    "inputs": {"target_hash_sha256": "...", "context_hash_sha256": "..."},
    "pipeline": {"stage_1_rubric_hash_sha256": "..."}
  }
}

What the keys mean:

  • aggregate - weighted score (0-10). Signal, not verdict.
  • hedge_dims - dimensions where evidence was thin. Scores in these dims clamp to [3, 7]. The more hedged dims, the less you should trust the aggregate.
  • evidence_citations - each score carries quoted evidence, its evidence_id, and a runtime-canonicalized location and source class. This is the audit trail.
  • receipt - records backend, timestamp, and input hashes. The demonstrated agreement is batch-versus-per-dimension scoring on five fixtures; Stage-1 synthesis remains non-deterministic.

What it does

Ask an LLM to score something. You get 8.4/10. No audit trail, no idea why, drift on rerun. Fluency outscores substance.

hermes-rubric replaces that with three stages: synthesize a rubric, collect evidence citations, score only against the evidence. Every score ships with a citation list (see the JSON above). Dimensions where evidence is thin get clamped and flagged. Batch and per-dimension scoring agreed within the pre-registered margin on five fixtures; that does not make Stage-1 synthesis deterministic.

Key features

  • Audit trail per dimension. Every score ties to quoted evidence with a runtime-canonicalized location. No more headline numbers without backing.
  • Hedge-on-thin-evidence. Dimensions with weak evidence are clamped to [3, 7] and flagged. The model can't bury weak evidence under a confident number.
  • Adversarial gates. Two tests fail the build if fluency outscores substance, or if fabricated claims outscore evidenced ones.
  • Reproducibility receipts. Record input hashes, backend, and timestamp. The demonstrated result is batch-versus-per-dimension agreement on five fixtures, not a general rerun guarantee.
  • Class-aware mode. --artifact-class social-post uses a fixed rubric template instead of LLM synthesis, keeping the dimension set stable across runs.
  • 7 backends out of the box. Claude Code CLI, Ollama, DashScope Qwen, Gemini HTTP, OpenAI HTTP, OpenAI SDK, and Google GenAI SDK, plus a plugin entry point for your own.

Evaluation evidence

The committed 2026-04-25 report documents a bounded batch-versus-per-dimension comparison on five fixtures. Raw run JSON is not included, so this repository does not currently support a from-clone recomputation claim. The test suite also includes two adversarial gates.

When to use it

  • Scoring artifacts where fluency-vs-substance divergence matters: papers, proposals, PRs, cold emails, lead dossiers
  • You need an audit trail. "The model said 8.7" isn't enough; you need to know why
  • You're calibrating against a specific style guide and generic "quality vibes" won't do
  • You need receipts and fixed rubric dimensions to compare and defend repeated scoring runs

When not to use it

  • Binary pass/fail gates (use a deterministic linter)
  • Single-sentence inputs (no evidence surface to cite)
  • Volume-over-fidelity scoring where cost matters more than rigor
  • Adversarial scoring where the author controls both the artifact and the rubric synthesis

Documentation

Examples

Three worked examples ship in-repo:

Library usage

from hermes_rubric.synthesize import synthesize
from hermes_rubric.evidence import collect_evidence
from hermes_rubric.score import score_dimensions, compute_aggregate

rubric = synthesize(intent="...", context_summary="...", target_type="paper", target_excerpt="...")
evidence = collect_evidence(rubric=rubric, target_content="...", target_path="paper.md")
scores = score_dimensions(rubric=rubric, evidence_list=evidence)
result = compute_aggregate(rubric=rubric, scores=scores)

Full API reference: docs/API.md.

Contributing

git clone https://github.com/hermes-labs-ai/hermes-rubric && cd hermes-rubric
pip install -e ".[dev]"
pytest

The suite includes two adversarial gates and a documentation-consistency gate. See CONTRIBUTING.md.

License

MIT. See LICENSE.

Enterprise

For custom AI-reliability engagements, on-prem deployments, or audit-grade evaluation pipelines: roli@hermes-labs.ai · https://lpci.ai

About

hermes-rubric is part of the Hermes Labs reliability stack for the agent era. Founder: Rolando (Roli) Bosch. See ABOUT.md for the canonical bio and company context. Cite as: Bosch, R. (2026). Hermes Labs: AI reliability infrastructure for autonomous agents. https://hermes-labs.ai

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_rubric-1.0.2.tar.gz (225.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_rubric-1.0.2-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file hermes_rubric-1.0.2.tar.gz.

File metadata

  • Download URL: hermes_rubric-1.0.2.tar.gz
  • Upload date:
  • Size: 225.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hermes_rubric-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3a79c11c9b06a168ec796741ea69f190bcd94f802ea12a524a57e52e0682b222
MD5 266923bb02f8e43d311b2cab99cdd5d0
BLAKE2b-256 30dfe4befe4739d8ebd4f447823bcd1585c3799b26c816cac12ad23154012331

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_rubric-1.0.2.tar.gz:

Publisher: publish.yml on hermes-labs-ai/hermes-rubric

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hermes_rubric-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: hermes_rubric-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hermes_rubric-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a25d903518f7be1d4769d4f67636fb84398c9849c5541cc4e9b83f9e4ddc0d64
MD5 cdcb22c23cc529edb0f86956ad5809a1
BLAKE2b-256 8007a5a6e906f6348c33b1d9a6234f3fddb4019726085d71e615548f6416bc5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_rubric-1.0.2-py3-none-any.whl:

Publisher: publish.yml on hermes-labs-ai/hermes-rubric

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.1.1

2 files

1.1.0

2 files

This release

1.0.2 This release

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page