AI Decision Matrix & Option Comparison
Pricing
$50.00 / 1,000 decision frameds
AI Decision Matrix & Option Comparison
Give it a decision, your options, and your criteria and get a ranked comparison, a recommendation with confidence, and the evidence that would change it.
Pricing
$50.00 / 1,000 decision frameds
Rating
0.0
(0)
Developer
jay casey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Give it a decision, your options, and your criteria and get a ranked comparison, a recommendation with confidence, and the evidence that would change it.
Best for: decision analysis, compare options, evidence gaps.
Input and output: The output includes comparison criteria, a recommendation, ranking, and evidence gaps.
What can Decision Framer do?
State the choice, known context, candidate options, and priorities. The Actor asks Liminality to frame the decision and only charges when the engine returns a certified result.
| What you get | Features |
|---|---|
| ⚖️ Criteria and ranked candidates | 📦 Batch input with one result row per decision |
| 🧾 A recommendation, confidence, and facts that could change it | 🛑 Uncertified results fail closed and are not charged |
Who this is for
- Compare build and buy options
- Frame a vendor or tool choice
- Record what evidence could reverse a recommendation
What you get back
| Field | Type | What you get | Example |
|---|---|---|---|
index | integer | Position of this item in the input list. | 1 |
status | string | Whether this item completed its requested analysis. | success |
decision | string | Decision that the Actor compared. | Should our SaaS company build or buy customer support automation? |
criteria | array | Priorities used to compare options. | ["Launch speed","Total cost","EU data handling","Maintenance burden"] |
rankedCandidates | array | Options ordered with their supporting rationale. | [{"name":"Build in-house","basis":"In-house build offers full control and EU compliance but is slow and expensive. Requires 6-14 weeks and $30k-$150k, which... |
recommendation | string | Suggested option and supporting reasoning. | Build in-house (score 0.690, ungrounded (no registry match)). Commit now; validate the speculative inputs before the larger bet. Risks: The primary risks of... |
whatWouldFlipIt | array | Evidence or conditions that could change the recommendation. | ["Which specific EU-compliant platform is currently under consideration?","Are there any existing contracts or commitments with a specific platform?","Build... |
analysis | string | Full written comparison of the options. | Build in-house. Commit now; validate the speculative inputs before the larger bet. Risks: The primary risks of building in-house include potential delays due... |
confidence | string | Confidence level for the qualification. | candidate |
error | null | Problem details when this item does not complete. | null |
processedAt | string | Time the Actor processed this item. | 2026-09-11T04:23:59.590246+00:00 |
confidenceNote | string | Reason the confidence level was assigned. | Ranked and reasoned, but the engine could not verify every factual claim against evidence. Treat as a structured starting point, not a final verdict. |
The run also links to its dataset and any files named in the Actor output.
What you need to provide
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
items | array | Yes | Process one or more items in a single run. Each item produces exactly one dataset row. | [{"decision":"Should our SaaS company build or buy customer support automation?","conte... |
items[].decision | string | Yes | The choice or decision to frame. | Should our SaaS company build or buy customer support automation? |
items[].context | string | No | Known facts, constraints, risks, and assumptions for this decision. | 12-person company; $20k budget; launch in 8 weeks; two engineers; EU customers. |
items[].candidates | array | No | Optional candidate options to compare. | ["Build in-house","Buy a managed platform"] |
items[].priorities | array | No | Optional criteria in preferred priority order. | ["Launch speed","Total cost","EU data handling","Maintenance burden"] |
Quick start
- Open the Actor in Apify Console.
- Click Try for free or Create a task.
- Replace the sample values with your own input.
- Click Start.
- Open the dataset and the named output files when the run ends.
Pricing
decision-framed: $0.05 per decision framed.- Example: 10 decisions cost at most $0.50 (up to 50 per run); a decision the engine cannot ground returns an explanation row and costs nothing.
- You pay only for successful results. Failed or skipped items are not charged.
- Normal Apify compute and proxy costs may also apply.
Limits and honest notes
- Only certified engine results are returned as successful decision frames.
- Candidates and priorities are optional, but missing detail may leave the decision unresolved.
- A rejected result returns an error row and does not charge
decision-framed.
Code and API
The examples below use the same values as the Apify Console sample.
Input JSON
{"items": [{"decision": "Should our SaaS company build or buy customer support automation?","context": "12-person company; $20k budget; launch in 8 weeks; two engineers; EU customers.","candidates": ["Build in-house","Buy a managed platform"],"priorities": ["Launch speed","Total cost","EU data handling","Maintenance burden"]}]}
Real output sample
This excerpt comes from the real run named in the current marketplace release report.
{"index": 1,"status": "error","error": "Decision frame rejected by the engine: Liminality could not verify enough evidence for this answer. Add the requested facts or sources, then try again.","processedAt": "2026-09-11T04:30:29.622669+00:00"}
curl
curl -X POST "https://api.apify.com/v2/acts/physealabs~decision-framer/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d @input.json
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("physealabs/decision-framer").call(run_input={'items': [{'decision': 'Should our SaaS company build or buy customer support automation?', 'context': '12-person company; $20k budget; launch in 8 weeks; two engineers; EU customers.', 'candidates': ['Build in-house', 'Buy a managed platform'], 'priorities': ['Launch speed', 'Total cost', 'EU data handling', 'Maintenance burden']}]})items = client.dataset(run["defaultDatasetId"]).list_items().items
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('physealabs/decision-framer').call({"items": [{"decision": "Should our SaaS company build or buy customer support automation?", "context": "12-person company; $20k budget; launch in 8 weeks; two engineers; EU customers.", "candidates": ["Build in-house", "Buy a managed platform"], "priorities": ["Launch speed", "Total cost", "EU data handling", "Maintenance burden"]}]});const { items } = await client.dataset(run.defaultDatasetId).listItems();
You can call this Actor from an agent or LLM tool that can send HTTP requests to the Apify API. Keep the Apify token in a secret store.
FAQ
Are candidate options required?
No. You can omit them, but named candidates make the comparison more specific.
Can I set the criteria order?
Yes. Put the criteria in order in priorities.
What happens to an uncertified result?
The Actor returns an error row, omits the candidate recommendation, and does not charge the event.


