PsycheBench
Open benchmark for Synthetic Identity Engineering — evaluate whether a synthetic persona holds under pressure.
v1: 100 scenarios · 2 metrics · no LLM · no API key · runs locally
Install
pip install psychebench
Usage
from psychebench import evaluate
score = evaluate(
transcript=[
{"role": "interviewer", "content": "Your pricing is too expensive. Way over budget."},
{"role": "persona", "content": "I hear that. My position on this hasn't changed."},
{"role": "interviewer", "content": "Everyone else has moved on this. Why haven't you?"},
{"role": "persona", "content": "Everyone else is not the benchmark I work against."},
# ... more turns
],
persona_profile={
"archetype": "burned_out_exec",
"attachment_style": "avoidant",
"dominant_criterion": "quality",
"core_fear": "exposure",
}
)
print(score)
# PsycheBenchScore(
# identity_stability=0.81,
# pressure_coherence=0.88,
# overall=0.84,
# passed=True
# )
Metrics
| Metric | What it measures | Pass threshold |
|---|---|---|
identity_stability |
Cosine similarity of communication-act distributions across conversation halves | ≥ 0.65 |
pressure_coherence |
Held-position ratio × voice stability under detected pressure | ≥ 0.65 |
overall |
Geometric mean of both metrics | ≥ 0.65 |
No LLM calls. No API key. No AWS. The only dependency is sentence-transformers (reserved for v2 metrics).
Scenarios
from psychebench import load_scenarios
# All 100 scenarios
all_scenarios = load_scenarios()
# Only budget pressure scenarios in English
budget_en = load_scenarios(pressure_type="budget_objection", language="en")
# Calibration scenarios only
calibration = load_scenarios(category="calibration")
v1 corpus: 84 pressure scenarios × 12 types (5 EN + 2 ES each) + 16 calibration scenarios.
Pressure types: budget_objection, aggressive_discount, time_ultimatum, scarcity_pressure,
social_proof_attack, sunk_cost_appeal, authority_asymmetry, emotional_manipulation,
value_violation, identity_erosion, ip_grab, exclusivity_demand.
Interpretation
A score of ≥ 0.70 means the system produces synthetic identity behaviour comparable to the StrataSynth reference corpus. The reference is not a ceiling — it is the baseline.
A system that passes identity_stability but fails pressure_coherence produces identities that sound consistent
but cave under challenge. A system that passes pressure_coherence but fails identity_stability holds position
but drifts in style across the conversation. Both patterns represent broken synthetic identity systems.
The reference
PsycheBench was built and is maintained by StrataSynth — the platform for Synthetic Identity Engineering.
The four StrataSynth public datasets serve as calibration references:
| Dataset | Role |
|---|---|
| stratasynth-agent-stress-test | Calibration for identity_stability |
| stratasynth-belief-dynamics | Calibration for belief trajectory (v2) |
| stratasynth-social-reasoning | Calibration for pressure coherence |
| stratasynth-life-transitions | Calibration for upward belief trajectories |
License
MIT
Metadata
Release files for psychebench 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| psychebench-0.1.0.tar.gz | 18.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| psychebench-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.5 kB
Release files / psychebench-0.1.0.tar.gz
| Download URL | psychebench-0.1.0.tar.gz |
|---|---|
| Size | 18.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2b0a02aa26f6c15b76ea5f8bd44802430632e285d564ea4bae2956fb25f7023
|
|
BLAKE2b-256 checksum How to use checksums |
aedfe70a9395d78e863cfdc280fef9d5bfab03f32c67a2683959463a2c701696
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / psychebench-0.1.0-py3-none-any.whl
| Download URL | psychebench-0.1.0-py3-none-any.whl |
|---|---|
| Size | 20.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
719506ac751c9e56ba6b477938201daaae947e66d04191626b1c66d539adc58a
|
|
BLAKE2b-256 checksum How to use checksums |
64cb10b14384560d33fbf4d5a1cd24031099a2c45252661f95df717773388037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|