Review Aspect & Sentiment Labeller
Batch Map-Reduce style labeling for product reviews with Choice + Noul fraud markers.
Architecture overview
Offline pipelines can fan out many Jev AI tools workers to tag complaint aspects and suspicious review patterns without paying generative output tokens.
Lightweight classifiers miss nuance; generative LLMs are costly at 10M+ row scale.
Official input pricing + free output metering is designed for high-volume classification-shaped work (typesafe.ai).
Official API schema (field names from docs.typesafe.ai)
Source: TypeSafe HTTP API reference. Question IDs below this table are directory example compositions — you choose them.
| Field | Type | Range | Notes |
|---|---|---|---|
| state | string | object | array | Plain text or structured JSON | Content to evaluate. Shared across all questions in one request. |
| model | string | e.g. "jev-latest" | Optional; defaults to TypeSafe flagship alias when omitted in SDKs. |
| questions.<id>.type | "choice" | "score" | "noul" | Exactly one of three primitives | Question ID is chosen by you; answers return under the same keys. |
| questions.<id>.instructions | string | Natural-language judgment | The actual question sent for inference (IDs are not sent to the model). |
| questions.<id>.criteria (choice) | Record<option, string | null> | 1–255 options | Map of option key → rubric description. |
| questions.<id>.criteria (score) | string[] | ≥ 2 ordered levels | Ordered level descriptions; score is a weighted position along them. |
| questions.<id>.criteria (noul) | { true?: string; false?: string } | Optional | Optional clarification of yes/no meanings. Answer field is noul ∈ [0, 1]. |
| answers.<id> (choice) | { type, choice, probabilities, confidence } | choice ∈ criteria keys; confidence ∈ [0, 1] | Probabilities sum to 1 across options. |
| answers.<id> (score) | { type, score, legend, probabilities, confidence } | score may fall between levels | legend maps level index → description. |
| answers.<id> (noul) | { type, noul } | noul ∈ [0, 1] | Probability that the answer is yes. No separate confidence field. |
| usage | { input_tokens, output_tokens } | Non-negative integers | Token accounting for the request. |
Example composition for this Jev AI tools workflow
Sample state and question keys are illustrative compositions for this directory page — not a separate official product API. Primitives remain Choice / Score / Noul.
Feedback: "Product arrived with crushed packaging and scuffed corners. Customer support was slow to respond."
Runnable call examples
Endpoint: https://api.typesafe.ai/v1/systemone (official). Requires your own TYPESAFE_API_KEY.
curl
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":{"review":"REVIEW_TEXT"},"model":"jev-latest","questions":{"complaint":{"type":"choice","instructions":"Primary complaint category","criteria":{"damaged_packaging":"Packaging","defective_hardware":"Defect","slow_support":"Support","shipping_delay":"Shipping"}},"is_fraud":{"type":"noul","instructions":"Suspicious bot-farm pattern?"}}}'TypeScript
import { choice, noul, TypeSafeClient } from "@typesafe-ai/sdk";
const client = new TypeSafeClient();
const results = await Promise.all(
reviews.map((review) =>
client.systemOne({
state: { review },
model: "jev-latest",
questions: {
complaint: choice("Primary complaint category", {
damaged_packaging: "Packaging damage",
defective_hardware: "Product defect",
slow_support: "Support delay",
shipping_delay: "Late shipping",
}),
is_fraud: noul("Suspicious bot-farm pattern?"),
},
})
)
);Python
from typesafe_sdk import Choice, Noul, TypeSafeClient
with TypeSafeClient() as client:
results = [
client.system_one(
state={"review": review},
model="jev-latest",
questions={
"complaint": Choice(
instructions="Primary complaint category",
criteria={
"damaged_packaging": "Packaging damage",
"defective_hardware": "Product defect",
"slow_support": "Support delay",
"shipping_delay": "Late shipping",
},
),
"is_fraud": Noul(instructions="Suspicious bot-farm pattern?"),
},
)
for review in reviews
]Latency & cost (source attribution)
Official end-to-end latency range: ~70–500ms; many calls land near ~100ms from US West Coast (source: typesafe.ai / TypeSafe public materials, 2026-09). Official list price: $0.042 / 1M input tokens; output tokens free (source: typesafe.ai, as of 2026-09). Card latency figures are illustrative compositions within that published range — not independent lab measurements by this directory.
- Card illustration on this page: ~86ms (illustrative, within official range — not a lab run by jevaitools.com).
- Official list price: $0.042 / 1M input tokens; output tokens free (source: typesafe.ai, as of 2026-09).
This directory has not published an independent measurement script for this page. To measure yourself: call the official endpoint with your key, record wall-clock p50/p95 andusage.input_tokens, and keep the date of the run.
Comparison with generative LLMs on the same decision task
TypeSafe publishes workflow evaluations where Jev is compared with frontier LLMs on accuracy, cost, and latency (company materials, 2026). Those multipliers are vendor-reported ceilings, not results measured by this directory. Run the same questions through an LLM structured-output adapter on your labeled set before choosing a stack.
Suitable for
- Offline labeling of review corpora
- First-pass fraud heuristics before human audit
- Spark/Beam style map stages calling System One
Not suitable for
- Writing review responses
- Legal fraud determinations
- Open taxonomy discovery without a criteria map
Common failure modes
- Criteria that overlap (support vs shipping)
- Multilingual reviews without language-aware state
- Treating Noul as a calibrated fraud probability without labeled evaluation
Other Jev AI Tools
This site is an independent third-party directory and is not affiliated with, endorsed by, or operated by TypeSafe AI.