changedInput schema / $schema
Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
removedInput schema / additionalProperties
Removed value: -false
addedInput schema / properties / alternative / default
Added value: +"all"
changedOutput schema / $schema
Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
removedOutput schema / properties / comparison / properties / dimensions / properties / affordability / $ref
Removed value: -"#/properties/savvly/properties/affordability"
addedOutput schema / properties / comparison / properties / dimensions / properties / affordability / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / affordability / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / affordability / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / affordability / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / cost_to_value / $ref
Removed value: -"#/properties/savvly/properties/cost_to_value"
addedOutput schema / properties / comparison / properties / dimensions / properties / cost_to_value / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / cost_to_value / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / cost_to_value / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / cost_to_value / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / counterparty_safety / $ref
Removed value: -"#/properties/savvly/properties/counterparty_safety"
addedOutput schema / properties / comparison / properties / dimensions / properties / counterparty_safety / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / counterparty_safety / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / counterparty_safety / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / counterparty_safety / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / death_benefit / $ref
Removed value: -"#/properties/savvly/properties/death_benefit"
addedOutput schema / properties / comparison / properties / dimensions / properties / death_benefit / description
Added value: +"Death-benefit summary."
addedOutput schema / properties / comparison / properties / dimensions / properties / death_benefit / type
Added value: +"string"
removedOutput schema / properties / comparison / properties / dimensions / properties / inflation_protection / $ref
Removed value: -"#/properties/savvly/properties/inflation_protection"
addedOutput schema / properties / comparison / properties / dimensions / properties / inflation_protection / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / inflation_protection / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / inflation_protection / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / inflation_protection / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / liquidity / $ref
Removed value: -"#/properties/savvly/properties/liquidity"
addedOutput schema / properties / comparison / properties / dimensions / properties / liquidity / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / liquidity / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / liquidity / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / liquidity / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / longevity_protection / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / comparison / properties / dimensions / properties / longevity_protection / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / longevity_protection / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / longevity_protection / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / longevity_protection / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / market_upside / $ref
Removed value: -"#/properties/savvly/properties/market_upside"
addedOutput schema / properties / comparison / properties / dimensions / properties / market_upside / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / market_upside / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / market_upside / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / market_upside / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / portability / $ref
Removed value: -"#/properties/savvly/properties/portability"
addedOutput schema / properties / comparison / properties / dimensions / properties / portability / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / portability / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / portability / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / portability / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / regulatory_oversight / $ref
Removed value: -"#/properties/savvly/properties/regulatory_oversight"
addedOutput schema / properties / comparison / properties / dimensions / properties / regulatory_oversight / description
Added value: +"Who regulates it (e.g. SEC vs state insurance)."
addedOutput schema / properties / comparison / properties / dimensions / properties / regulatory_oversight / type
Added value: +"string"
removedOutput schema / properties / comparison / properties / dimensions / properties / simplicity / $ref
Removed value: -"#/properties/savvly/properties/simplicity"
addedOutput schema / properties / comparison / properties / dimensions / properties / simplicity / additionalProperties
Added value: +true
addedOutput schema / properties / comparison / properties / dimensions / properties / simplicity / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / comparison / properties / dimensions / properties / simplicity / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / comparison / properties / dimensions / properties / simplicity / type
Added value: +"object"
removedOutput schema / properties / comparison / properties / dimensions / properties / tax_treatment / $ref
Removed value: -"#/properties/savvly/properties/tax_treatment"
addedOutput schema / properties / comparison / properties / dimensions / properties / tax_treatment / description
Added value: +"Tax-treatment summary."
addedOutput schema / properties / comparison / properties / dimensions / properties / tax_treatment / type
Added value: +"string"
removedOutput schema / properties / comparisons / items / $ref
Removed value: -"#/properties/comparison"
addedOutput schema / properties / comparisons / items / additionalProperties
Added value: +true
addedOutput schema / properties / comparisons / items / properties
Added value: +{
+ "category": {
+ "description": "Product category.",
+ "type": "string"
+ },
+ "description": {
+ "description": "Short description of the alternative.",
+ "type": "string"
+ },
+ "dimensions": {
+ "additionalProperties": true,
+ "description": "This alternative's ratings across the dimensions.",
+ "properties": {
+ "affordability": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "cost_to_value": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "counterparty_safety": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "death_benefit": {
+ "description": "Death-benefit summary.",
+ "type": "string"
+ },
+ "inflation_protection": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "liquidity": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "longevity_protection": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "market_upside": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "portability": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "regulatory_oversight": {
+ "description": "Who regulates it (e.g. SEC vs state insurance).",
+ "type": "string"
+ },
+ "simplicity": {
+ "additionalProperties": true,
+ "properties": {
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+ },
+ "required": [
+ "score",
+ "label",
+ "explanation"
+ ],
+ "type": "object"
+ },
+ "tax_treatment": {
+ "description": "Tax-treatment summary.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "display_name": {
+ "description": "Human-readable product name.",
+ "type": "string"
+ },
+ "product_type": {
+ "description": "Alternative product slug, e.g. 'fixed_annuity'.",
+ "type": "string"
+ }
+}
addedOutput schema / properties / comparisons / items / required
Added value: +[
+ "product_type"
+]
addedOutput schema / properties / comparisons / items / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / affordability / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / affordability / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / affordability / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / affordability / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / affordability / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / cost_to_value / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / cost_to_value / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / cost_to_value / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / cost_to_value / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / cost_to_value / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / counterparty_safety / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / counterparty_safety / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / counterparty_safety / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / counterparty_safety / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / counterparty_safety / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / inflation_protection / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / inflation_protection / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / inflation_protection / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / inflation_protection / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / inflation_protection / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / liquidity / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / liquidity / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / liquidity / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / liquidity / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / liquidity / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / market_upside / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / market_upside / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / market_upside / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / market_upside / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / market_upside / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / portability / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / portability / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / portability / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / portability / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / portability / type
Added value: +"object"
removedOutput schema / properties / savvly / properties / simplicity / $ref
Removed value: -"#/properties/savvly/properties/longevity_protection"
addedOutput schema / properties / savvly / properties / simplicity / additionalProperties
Added value: +true
addedOutput schema / properties / savvly / properties / simplicity / properties
Added value: +{
+ "explanation": {
+ "description": "One-sentence rationale for the rating.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Rating label: None | Very Low | Low | Medium | High | Very High.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Numeric rating; greater = better (e.g. 1–5).",
+ "type": "number"
+ }
+}
addedOutput schema / properties / savvly / properties / simplicity / required
Added value: +[
+ "score",
+ "label",
+ "explanation"
+]
addedOutput schema / properties / savvly / properties / simplicity / type
Added value: +"object"