Skip to content

Settings — Scoring Weights

The Settings ▸ Scoring page controls the deduction weights that drive the document score Athenty computes for every verification. Each document starts at 100, and weights configured here are deducted when the matching engine flags a mismatch.

The score is informational — it surfaces in reviewer-facing UI to help triage, but never auto-approves or auto-rejects. Final decisions are always human-made.

Settings Scoring Weights — Acme Financial Group demo tenant

Standard PageHeader with the title Scoring Weights and a one-line description.

A blue info banner reinforces the model: “Each document starts with a score of 100. The weights below are deducted when a mismatch is detected.”

Six numeric inputs, each labeled and described:

FieldDescription
Face MismatchSelfie does not match document photo
Address MismatchDeclared address differs from document
Name MismatchName on form differs from document
Date of Birth MismatchDOB on form differs from document
Gender MismatchGender on form differs from document
Nationality MismatchCitizenship differs from document

Each input is constrained to integers 0–100 by the Zod schema.

A footer card shows the score that would be assigned if every weighted mismatch fired on a single document — useful for sanity-checking that your weight set produces a meaningful range.

  • Reset to defaults — restores the seeded weights (face 50, name 25, DOB 25, address 10, gender 5, nationality 5)
  • Save changes — persists the form via the useUpdateScoringWeights hook

The seed defaults emphasize identity attributes over soft attributes:

MismatchWeight
Face50
Name25
DOB25
Address10
Gender5
Nationality5

Sum = 120. A document with every mismatch fires would score 100 − 120 = -20, clipped to 0 in the UI.

  • The verification detail page renders the document score next to the document preview
  • The dashboard’s Approval rate and Funnel charts can be filtered by score bucket
  • Reviewer queue prioritization sorts by ascending score by default
const schema = z.object({
faceMismatch: z.number().int().min(0).max(100),
addressMismatch: z.number().int().min(0).max(100),
nameMismatch: z.number().int().min(0).max(100),
dobMismatch: z.number().int().min(0).max(100),
genderMismatch: z.number().int().min(0).max(100),
nationalityMismatch: z.number().int().min(0).max(100),
})

Validation runs on the form before submission; values outside the 0–100 integer range surface inline errors.

  • After 2–4 weeks of real verifications, review the score distribution in Settings ▸ Compliance ▸ Scoring analytics
  • If a mismatch type is consistently a false alarm in your industry, reduce its weight
  • If a mismatch type is consistently the deciding factor in rejections, raise its weight to better reflect reviewer behaviour
RoleViewEdit
Owner / Admin
MemberIndirect (sees scores on verification detail)
Viewer

Weights are tenant-wide. There is no per-matter or per-template override.

Every save emits org.scoring_weights_updated with the diff between the prior and new weight set. The event surfaces in Settings ▸ Audit Log.

SymptomMost likely causeFix
Save failsValue outside 0–100 integer rangeAdjust to a valid value
Score never moves below 100All weights are zeroRestore defaults or pick non-zero values
Score goes negativeSum of weights exceeds 100Reduce one or more weights
Reviewers complain about noisy scoresSoft-attribute weights too highLower address / gender / nationality
Reset to defaults disabledForm already matches defaultsAdjust a value to enable