Confidence Levels
Every repair response includes a confidence score:high, medium, or low.
The Three Levels
| Level | Meaning | Repairs Applied | Action |
|---|---|---|---|
| high | Structural fixes only, or perfect input | Brackets, commas, fences (or none) | Use immediately |
| medium | Schema repairs or warnings | Type coercion, field validation | Review in logs |
| low | Ambiguous repairs | Multiple interpretations | Manual review |
How Confidence is Calculated
Shim uses monotonic pessimistic scoring: any low-confidence repair downgrades the entire score.Scoring Rules
Why Pessimistic?
Contract: Confidence never overstates safety.high means truly safe. low means truly risky.
High Confidence
Repairs Applied
- Closing brackets:
{"name": "John"→{"name": "John"} - Trailing commas:
{"a": 1, "b": 2,}→{"a": 1, "b": 2} - Markdown fences:
```json {"a": 1} ```→{"a": 1} - Smart quotes:
{"name": "John"}→{"name": "John"} - Leading/trailing text:
Here's the data: {"a": 1}→{"a": 1}
Why High?
These are unambiguous structural fixes. No semantic changes. No data loss.Example Response
What to Do
Use immediately. No review needed.Medium Confidence
Repairs Applied
- Type coercion:
"30"→30 - Unquoted keys:
{name: "test"}→{"name": "test"} - Unquoted values:
{status: active}→{status: "active"} - JavaScript values:
NaN→null,Infinity→null - Single quotes:
{'key': 'value'}→{"key": "value"}
Why Medium?
These are policy decisions. Safe, but not unambiguous. Example:"30" could be a string or number. Shim coerces based on schema.
Example Response
What to Do
Use immediately, but log for review.Low Confidence
Repairs Applied
- Ambiguous type inference (no schema provided)
- Multiple repair interpretations possible
- Complex nested structure repairs
Why Low?
Shim had to guess at the correct fix. Multiple interpretations were possible.Example Response
What to Do
Alert for manual review.Perfect Input (High Confidence)
Meaning
Input was already valid JSON. No repairs needed. Confidence is stillhigh.
Example Response
What to Do
Use immediately. Checkwas_repaired: false to distinguish perfect input from repaired input.
Confidence by Repair Type
| Repair Type | Confidence | Safe? |
|---|---|---|
| Syntax Repairs | ||
| Closed brackets | High | Yes |
| Trailing commas | High | Yes |
| Markdown fences | High | Yes |
| Leading/trailing text | High | Yes |
| Smart quotes | High | Yes |
| Multiple commas | High | Yes |
| Malformed decimals | High | Yes |
| Incomplete numbers | High | Yes |
| Schema Repairs | ||
| Type coercion (with schema) | High | Yes |
| Unquoted keys | High | Yes |
| Single quotes | High | Yes |
| JavaScript comments | High | Yes |
| JavaScript values (NaN) | High | Yes |
| Unquoted values (with schema) | Medium | Yes |
| Extra field removal | Medium | Yes |
| Ambiguous Repairs | ||
| Type inference (no schema) | Low | No |
| Unquoted value inference | Low | No |
| Multiple interpretations | Low | No |
Strict vs Lenient Mode
Mode affects warnings, not confidence:Strict Mode (default)
High-severity warnings become errors. Repair fails.Lenient Mode
All warnings allowed. Repair succeeds.Best Practices
1. Always Provide Schema
Schema enables high-confidence type coercion:2. Log Medium/Low Repairs
Track repair patterns over time:3. Alert on Low Confidence Spikes
4. Review Repair Logs
Check dashboard for confidence distribution:Next Steps
Response Object
Full response schema
Error Handling
Handle low confidence repairs
Schema Validation
Improve confidence with schemas
Troubleshooting
Debug confidence issues
