GodEngine decision api

Private beta

Response schema · DecisionRecord

The DecisionRecord, field by field

A record is the decision and its working, kept forever in the shape it was issued. This page explains every field and how the scorer arrives at it.

Fields at a glance

Top-level fields of a DecisionRecord
FieldTypeWhat it holds
idstring (uuid4)The durable handle. Store it.
tenant_idstringThe tenant the record belongs to
task_idstring or nullYour task id, or null when the request named none
created_atstring (UTC timestamp)When the record was made
questionstringThe question, as modelled
recommended_optionOptionVerdictThe recommendation, with reasons
alternativesarray of OptionVerdictThe other options, ranked, each with reasons
assumptionsarray of stringsEvery guess the engine made: a horizon read from the question, a value filled in, a param it did not model
confidenceobjectHow confidently the question was classified
coverageobjectHow much of the input grid you supplied, and the evidence behind it
uncertaintyobjectCalibration status and how decisive the margin is
feasibilityobjectWhich options meet every hard constraint
authorizationobjectAlways not_authorized: a record never permits an action
evidence_refsarray of stringsThe evidence sources the engine read
applicability_limitsarray of stringsWhat the decision does not cover, such as options that were not listed
evaluation_statusstringunevaluated until an outcome is recorded against the decision. There is no route for recording outcomes yet.
reversal_conditionsarray of objectsThe changes that would flip the recommendation
modelled_constraintsobjectThe numbers the model actually used
inputs_digeststring (SHA-256 hex)Digest of the canonical inputs; the basis of idempotency
engine_versionstringThe scorer that produced it, today ge-decisions/1.1.0

Recommendation and alternatives

recommended_option and each entry of alternatives share one shape:

OptionVerdict
FieldMeaning
option_id, labelThe option as you sent it
scoreA weighted score from 0 to 1 that ranks options under these inputs. Not a probability.
feasibleFalse when the option breaks a hard constraint
reasonsPlain sentences, for example “Costs ₹8.70 lakh over 24 months, within the ₹10 lakh budget (87% of it).”

Feasible options always rank above infeasible ones. An infeasible option's score is halved. If nothing is feasible, the least-bad option is returned, feasibility.status is infeasible, and the record says the constraints should be reviewed.

Five assessments, never averaged

The record answers five different questions in five separate objects. Nothing combines them into one number, and none of them authorizes anything.

  • confidenceWas the question understood?

    Intent and domain classification confidence from GodEngine's parse stage. source is unavailable when the parse did not run.

  • coverageHow much did you tell it?

    How much of the option-by-dimension grid was given rather than defaulted, how many evidence items and numeric facts there are. freshness is not_assessed: evidence carries no collection time yet.

  • uncertaintyHow settled is the ranking?

    calibration_status is uncalibrated and method is scenario_comparison. model_confidence is an internal diagnostic, not a probability.

  • feasibilityDoes it meet the hard limits?

    Whether the recommendation meets every hard constraint, which options do, and each infeasible option's violations.

  • authorizationMay anyone act on it?

    Always not_authorized with executable: false. Acting needs a separate authorization bound to an execution plan.

What the numbers mean

  • coverage.dimension_coverage: the share of option-by-dimension cells you supplied; defaulted_cells counts the ones filled with a neutral 0.5.
  • uncertainty.decisiveness: how far the top feasible option leads the next one, from 0 to 1. With one feasible option it is 1, because the constraints decided; with none it is 0. score_margin is the raw gap, or null.
  • uncertainty.model_confidence: a mix of decisiveness, the parse confidence, whether the recommendation is feasible and, when the review ran, whether it agreed. Use it for monitoring, not as odds.
  • feasibility.infeasible_options: a map from option id to violations: over_budget, misses_deadline, above_max_risk, excluded.

Read thisThe honest measure of how settled a choice is lives in reversal conditions, not in any confidence figure.

Reversal conditions

Each condition is found by re-running the scorer with one input changed, so it is exact for this model. Every entry has kind, condition and then as sentences, plus the numbers behind them.

Kinds of reversal condition
kindFound byExtra fields
budget_at_leastThe nearest budget above the modelled one at which the recommendation changesthreshold, currency, switches_to
budget_belowThe nearest budget below it at which the recommendation changesthreshold, currency, switches_to
horizonHalf and double the horizon, when recurring costs make the horizon matterthreshold, switches_to
dimensionThe smallest change in one dimension that lets the runner-up overtakedimension, option_id, threshold
reversal_conditions from the documented examplejson
[
  {"kind": "budget_at_least", "threshold": 4500000, "currency": "INR", "switches_to": "buy",
   "condition": "Budget rises to at least ₹45 lakh", "then": "'Buy outright' becomes the recommendation."},
  {"kind": "budget_below", "threshold": 870000, "currency": "INR", "switches_to": "outsource",
   "condition": "Budget falls below ₹8.70 lakh", "then": "'Outsource' becomes the recommendation."},
  {"kind": "dimension", "dimension": "upside", "option_id": "outsource", "threshold": 0.458,
   "condition": "'Outsource' upside is at least 0.46", "then": "'Outsource' overtakes 'Lease'."}
]

Modelled constraints

modelled_constraints shows the numbers behind the ranking, so a reviewer can check the arithmetic without re-running anything.

  • currency, horizon_months and horizon_source (for example question).
  • budget: amount, currency, basis, where it came from (a constraint or an evidence source) and a display string such as ₹10 lakh.
  • options.<id>: upfront, monthly and total cost, budget use, whether it is within budget, violations, and ignored_params.
  • weights: the normalised weight of each active dimension, and dimension_forces: the engine force each dimension is tagged with.
  • numeric_evidence: the numeric facts read from the evidence.
  • model: engine_version, a summary of the parse, llm_review (disabled, applied or failed) and any nudges the review applied.

How a decision is made

  1. Parse the question

    The question goes through GodEngine's own parse stage on its fast path. Its horizon (“over the next 2 years” becomes 24 months) sets the cost horizon. Cost-sensitive domains raise the affordability weight; medical, legal, policy, cybersecurity and insurance domains raise the risk and compliance weights.

  2. Normalise

    Amounts, recurring costs, durations and levels become numbers. Every guess is written down as an assumption.

  3. Score

    A weighted sum over the active dimensions. Affordability is 1 − 0.6 × cost / budget; without a budget, the dearest option is the reference.

  4. Apply hard constraints

    Over budget, past the deadline, above max_risk or excluded makes an option infeasible: ranked below every feasible option, score halved.

  5. Find reversal conditions

    Re-run the scorer at nearby budgets, at half and double the horizon, and with one dimension moved, to find where the answer flips.

  6. Report five assessments

    Confidence, coverage, uncertainty, feasibility and authorization, each in its own object.

  7. Optional review

    When a deployment switches it on, a language-model review may add reasons and assumptions (prefixed Review:) and nudge a feasible option by at most ±0.05. It can never make an infeasible option win. If it fails, the record falls back to the numbers and says failed.

With the review off, the scorer is deterministic: the same inputs give the same body. Check modelled_constraints.model.llm_review to see which path a record took.

Scoring dimensions

Base weights apply to the dimensions the options actually give, and are then normalised. The parse stage and risk_tolerance tilt them; a weight you send in constraints.weights replaces that dimension's weight before normalising.

Dimensions, engine forces and base weights
DimensionEngine force (key)Base weight
affordabilityCost (cost)0.25
upsideFeedback Momentum (feedback)0.30
riskCoherence Decay (decay)0.20
speedFeedback Momentum (feedback)0.10
reversibilityExploration Drive (exploration)0.10
fitDirected Intelligence (psi)0.15
complianceEthics Gradient (ethics)0.10

The force tags come from GodEngine's engine vocabulary and appear in the record as modelled_constraints.dimension_forces.

Full example

The documented response to the quick start request. Long lists are cut where you see …; the inputs are made up.

DecisionRecordjson
{
  "id": "6f1c…",
  "tenant_id": "org_a",
  "task_id": "task-7f3a",
  "created_at": "2026-10-04T09:12:44.120Z",
  "question": "…",
  "recommended_option": {"option_id": "lease", "label": "Lease", "score": 0.5756, "feasible": true,
    "reasons": ["Costs ₹8.70 lakh over 24 months, within the ₹10 lakh budget (87% of it).", "…"]},
  "alternatives": [
    {"option_id": "outsource", "score": 0.5408, "feasible": true, "reasons": ["…"]},
    {"option_id": "buy", "score": 0.3074, "feasible": false,
     "reasons": ["Costs ₹45 lakh over 24 months, over the ₹10 lakh budget by ₹35 lakh.", "…"]}
  ],
  "assumptions": ["Horizon of 24 months read from the question (\"2 year\").", "…"],
  "confidence": {"intent": "decision", "intent_confidence": 0.8,
                 "domains": [{"name": "financial", "confidence": 0.71}], "source": "resolve_parse"},
  "coverage": {"score": 0.758, "dimension_coverage": 0.917, "defaulted_cells": 1,
               "evidence_items": 2, "numeric_evidence_items": 2, "freshness": "not_assessed",
               "freshness_note": "Evidence carries no collection time, so its freshness is not assessed."},
  "uncertainty": {"calibration_status": "uncalibrated", "method": "scenario_comparison",
                  "model_confidence": 0.746,
                  "model_confidence_is": "an internal diagnostic, not a calibrated probability",
                  "decisiveness": 0.43, "score_margin": 0.0348, "review_agrees": null,
                  "description": "Scores rank these options under the inputs given; they are not probabilities. …"},
  "feasibility": {"status": "feasible", "recommended_option_feasible": true,
                  "feasible_option_ids": ["lease", "outsource"],
                  "infeasible_options": {"buy": ["over_budget"]}},
  "authorization": {"status": "not_authorized", "executable": false,
                    "reason": "A decision record is advice. Acting on it needs a separate authorization bound to an execution plan; this service grants none."},
  "evidence_refs": ["finance", "cfo"],
  "applicability_limits": ["Holds only for the 3 options given; an option not listed was not considered.", "…"],
  "evaluation_status": "unevaluated",
  "reversal_conditions": ["… see above …"],
  "modelled_constraints": {
    "currency": "INR", "horizon_months": 24, "horizon_source": "question",
    "budget": {"amount": 1000000, "currency": "INR", "basis": "total_over_horizon",
               "source": "finance", "display": "₹10 lakh"},
    "feasible_option_ids": ["lease", "outsource"],
    "options": {"lease": {"upfront_cost": 150000, "monthly_cost": 30000, "total_cost": 870000,
                          "budget_utilisation": 0.87, "within_budget": true, "violations": []}},
    "weights": {"affordability": 0.2688, "upside": 0.3226, "risk": 0.3011, "speed": 0.1075},
    "dimension_forces": {"affordability": "cost", "upside": "feedback", "risk": "decay", "speed": "feedback"},
    "numeric_evidence": ["…"],
    "model": {"engine_version": "ge-decisions/1.1.0", "parse": {"intent": "…", "domains": ["…"]},
              "llm_review": "disabled", "nudges": {}}
  },
  "inputs_digest": "…",
  "engine_version": "ge-decisions/1.1.0"
}

The wording inside authorization.reason is the service's own. Here “advice” means a model's recommendation; it is not professional, financial or legal advice.