GodEngine decision api

Private beta

POST /v1/decisions · private beta

Send a decision. Get a record back.

The GodEngine Decision API takes a question, the evidence you have, the options on the table and your constraints. It returns a DecisionRecord: the recommended option, ranked alternatives with reasons, the assumptions it made, separate confidence figures and the exact conditions that would change the answer.

Every record is durable, tenant-scoped and append-only. The API is built for services that need to ask for a decision, keep the answer and show their working later.

Invitation only today. What the private beta includes, and what it does not.

Request body (abridged)json
{
  "question": "Should we buy a CNC machine, lease one, or outsource machining over the next 2 years?",
  "evidence": [{"source": "finance", "text": "We have a 10 lakh budget for this."}],
  "options": [
    {"id": "buy", "label": "Buy outright", "params": {"cost": "45 lakh"}},
    {"id": "lease", "label": "Lease", "params": {"cost": "1.5 lakh", "monthly_cost": "30k"}},
    {"id": "outsource", "label": "Outsource", "params": {"monthly_cost": "25k"}}
  ],
  "idempotency_key": "order-42"
}

201 Created, a DecisionRecord

DecisionRecord (abridged)json
{
  "id": "6f1c…",
  "recommended_option": {
    "option_id": "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},
    {"option_id": "buy", "score": 0.3074, "feasible": false}
  ],
  "uncertainty": {"calibration_status": "uncalibrated"},
  "authorization": {"status": "not_authorized", "executable": false},
  "reversal_conditions": [
    {"kind": "budget_at_least", "threshold": 4500000, "switches_to": "buy"}
  ],
  "engine_version": "ge-decisions/1.1.0"
}
Abridged from the documented example. The inputs are made up, and fields are cut for space, so the numbers belong to the full request in the quick start.

Where the answer changes

A recommendation is only as good as the inputs behind it, so every record says how far those inputs can move before the answer flips. These reversal conditions come from re-running the scorer, so they are exact for this model, not rules of thumb.

Where the example's recommendation changes with the budget A budget line drawn as segments that are not to scale. Below 6 lakh rupees every option costs more than the budget, so none fits. From 6 lakh to 8.70 lakh only Outsource fits, and it is recommended. From 8.70 lakh up to 45 lakh the recommendation is Lease, which is the answer at the modelled budget of 10 lakh. At 45 lakh and above it is Buy outright. modelled budget: ₹10 lakh None fits over budget Outsource the only fit Lease recommended in this range Buy now fits switch switch ₹0 ₹6 lakh ₹8.70 lakh ₹45 lakh budget vs total spend over 24 months (segments not to scale)
The documented example (a made-up machining decision). The record's reversal_conditions name the nearest budgets above and below the modelled one at which the recommendation switches: ₹45 lakh and ₹8.70 lakh. The ₹6 lakh edge is plain arithmetic: Outsource, the cheapest option, costs ₹25,000 a month, which is ₹6 lakh over 24 months. Below that, the service still returns the least-bad option, marks it infeasible and says the constraints need a review.

The same conditions, as the record writes them

  • budget_at_leastBudget rises to at least ₹45 lakh: Buy outright becomes the recommendation.
  • budget_belowBudget falls below ₹8.70 lakh: Outsource becomes the recommendation.
  • dimensionOutsource's upside is at least 0.46: Outsource overtakes Lease.

What every record promises

These properties come from the service's own code and tests, not from a roadmap.

  • append-only

    Durable and never edited

    Each record gets a uuid you can store. Once written, a record is not changed: the store refuses any update to a saved row.

  • tenant_id

    Scoped to one tenant

    Reads filter on the id and the tenant together. Another tenant's id gets the same 404 as an id that does not exist.

  • idempotency_key

    Safe to retry

    Send the same key with the same inputs and you get the stored record back, byte for byte, with Idempotent-Replay: true. The engine does not run again.

  • inputs_digest

    Deterministic scoring

    With the optional language-model review off, the same inputs give the same body. A SHA-256 digest of the canonical inputs travels with every record.

  • uncertainty

    Honest about confidence

    Scores rank options; they are not probabilities. Five assessments are reported separately and never averaged into one number.

  • authorization

    Advice, not permission

    authorization.status is always not_authorized. Acting on a decision needs a separate authorization that this service never grants.

  • 422

    Strict about inputs

    Unknown fields, typos in constraint names and money values that cannot be read are refused with the field's location. Nothing is ignored quietly.

  • assumptions

    Guesses are written down

    When the engine reads a horizon from the question or fills a missing value, the record says so. Params it does not model are listed, not dropped.

  • feasibility

    Hard limits are numbers

    An option over budget, past a deadline, above a risk cap or excluded is marked infeasible and ranked below every feasible one.

Status

The API row is a fixed statement. The two GodEngine app rows are read from the status service when this page opens; if that fails, they say unknown.

Decision API
Private beta, by invitation Built and tested, but not switched on for outside callers yet. By design it answers only direct calls from allowed private networks, so there is no public health check to show.
GodEngine app: portfolio status
Unknown
GodEngine app: health check
Unknown Not loaded yet. Without status data, nothing is claimed.