US Brand Signal Rule Router avatar

US Brand Signal Rule Router

Pricing

Pay per event

Go to Apify Store
US Brand Signal Rule Router

US Brand Signal Rule Router

Route normalized US-brand signals through ordered, explicit rules into a deterministic machine-readable plan. No network, destinations, webhooks, or inferred identity.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Turn normalized US-brand intelligence signals into one deterministic routing plan. Supply explicit signal rows and ordered rules; receive every signal exactly once with its matched route IDs, unmatched IDs, per-route counts, warnings, and reproducible digests. The Actor does not send messages, call destinations, fetch URLs, or infer brand identity.

Input

Send 1-50 inline signals and 1-20 rules in firstMatch or allMatches mode. This complete synthetic example can be pasted into the Apify input editor:

{
"schemaVersion": "1.0",
"mode": "firstMatch",
"signals": [
{
"signalId": "sig-nike-launch-001",
"brandName": "Nike",
"eventType": "product_launch",
"severity": "high",
"confidence": 0.96,
"sourceName": "brand-monitor-fixture",
"country": "US",
"analysisStatus": "unreviewed",
"observedAt": "2026-08-05T10:00:00.000Z"
},
{
"signalId": "sig-acme-incident-002",
"brandName": "Acme Labs",
"eventType": "safety_incident",
"severity": "critical",
"confidence": 0.91,
"sourceName": "brand-monitor-fixture",
"country": "US",
"analysisStatus": "reviewed",
"observedAt": "2026-08-05T10:01:00.000Z"
},
{
"signalId": "sig-unmatched-003",
"brandName": "Contoso",
"eventType": "news_item",
"severity": "low",
"confidence": 0.42,
"sourceName": "press-fixture",
"country": "US",
"analysisStatus": "unknown",
"observedAt": "2026-08-05T10:02:00.000Z"
}
],
"rules": [
{
"ruleId": "rule-critical",
"routeId": "risk-review",
"eventType": null,
"severity": "critical",
"confidenceMin": 0.8,
"confidenceMax": null,
"sourceName": null,
"country": "US",
"analysisStatus": null
},
{
"ruleId": "rule-launch",
"routeId": "launch-review",
"eventType": "product_launch",
"severity": null,
"confidenceMin": 0.9,
"confidenceMax": null,
"sourceName": "brand-monitor-fixture",
"country": "US",
"analysisStatus": "unreviewed"
},
{
"ruleId": "rule-high-confidence",
"routeId": "confidence-review",
"eventType": null,
"severity": null,
"confidenceMin": 0.9,
"confidenceMax": 1,
"sourceName": null,
"country": null,
"analysisStatus": null
}
]
}

Rules can match only eventType, severity, inclusive confidenceMin/confidenceMax, sourceName, country, and analysisStatus. There is no expression language, regex, code, URL, webhook, or destination field. In firstMatch, the first matching rule wins. In allMatches, every matching route is retained in rule order.

Dataset result

A successful run writes exactly one paid routing plan:

{
"schemaVersion": "1.0",
"mode": "firstMatch",
"signals": {
"sig-acme-incident-002": { "matchedRouteIds": ["risk-review"] },
"sig-nike-launch-001": { "matchedRouteIds": ["launch-review"] },
"sig-unmatched-003": { "matchedRouteIds": [] }
},
"unmatchedSignalIds": ["sig-unmatched-003"],
"routeCounts": { "risk-review": 1, "launch-review": 1, "confidence-review": 0 },
"warnings": ["unmatched_signals_present"],
"inputDigest": "sha256:421ee443a0061e0fe0654b61c18dc4bec9a6beca8c61a77ba20e0091517e2a37",
"resultDigest": "sha256:a13b4f9a49fc68740a41b5bbbc4a07767c6280d609389b1e3dfbd379e3203c23"
}

Signal IDs and route IDs are JSON object keys, so each appears once. Signals are ordered by UTF-8 bytes for output and digest purposes. Rule order remains semantic.

OUTPUT receipt

The default KVS key OUTPUT records confirmed delivery and billing truth:

{
"schemaVersion": "1.0",
"status": "result-found",
"deliveryState": "confirmed_paid_result",
"planDigest": "sha256:a13b4f9a49fc68740a41b5bbbc4a07767c6280d609389b1e3dfbd379e3203c23",
"attemptedPushCount": 1,
"datasetWriteCount": 1,
"resultChargeDelta": 1,
"confirmedResultChargeCount": 1,
"chargedCount": 2,
"eventChargeLimitReached": false,
"datasetItemBillingEvent": null
}

A successful receipt requires the custom result-found counter proof 0 -> 1, the documented SDK aggregate chargedCount: 2 (paid result-found plus zero-price default Dataset item), and a boolean eventChargeLimitReached value. The local/test harness may use chargedCount: 1 only with that exact counter proof. The boolean is preserved in OUTPUT; true means the successful current charge left no room for the next event of that type. Contradictory delivery data fails closed. Failure truth distinguishes a confirmed paid Dataset result from a confirmed charge whose push delivery is unknown. If KVS or Actor exit fails after a confirmed paid push, the failure signal retains the plan digest, exact charge delta, Dataset-delivery fact, and OUTPUT write count; the Actor never retries the paid push.

API and MCP usage

After the Actor is public, submit the same input through the Apify API:

curl -sS -X POST \
'https://api.apify.com/v2/acts/zinin~us-brand-signal-rule-router/runs?waitForFinish=60' \
-H 'Authorization: Bearer YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
--data @input.json

An MCP client connected to Apify can pass the same object to its Actor-call tool:

{
"actorId": "zinin/us-brand-signal-rule-router",
"input": {
"schemaVersion": "1.0",
"mode": "firstMatch",
"signals": [{
"signalId": "sig-demo-001",
"brandName": "Demo Brand",
"eventType": "recall",
"severity": "critical",
"confidence": 0.95,
"sourceName": "synthetic-fixture",
"country": "US",
"analysisStatus": "unreviewed",
"observedAt": "2026-08-05T10:00:00.000Z"
}],
"rules": [{
"ruleId": "rule-risk",
"routeId": "risk-review",
"eventType": "recall",
"severity": null,
"confidenceMin": 0.9,
"confidenceMax": null,
"sourceName": null,
"country": "US",
"analysisStatus": null
}]
}
}

This is an invocation shape, not a claim that a separate MCP server or catalog registration already exists.

Pricing and discounts

Pay per event uses only Actor start plus one result-found routing plan. There is no default Dataset-item event.

Apify tierDiscountStartRouting planSuccessful total
FREE0%$0.00500$0.02000$0.02500
BRONZE5%$0.00475$0.01900$0.02375
SILVER10%$0.00450$0.01800$0.02250
GOLD15%$0.00425$0.01700$0.02125
PLATINUM18%$0.00410$0.01640$0.02050
DIAMOND20%$0.00400$0.01600$0.02000

The buyer cap is checked before routing. Missing, mixed, extra, or malformed event prices fail closed. Each separate Actor run is a separate purchase; there is no cross-run replay ledger.

Limits and validation

  • 1-50 signals and 1-20 rules; serialized canonical input is at most 256 KiB.
  • Runtime target: LIMITED visibility, 512 MB memory, 90 seconds.
  • IDs are unique bounded ASCII values and cannot be all-numeric. Text is NFC, at most 128 Unicode characters and 256 UTF-8 bytes; BOM and Unicode line/paragraph separators are rejected.
  • Confidence values are finite, between zero and one, and canonicalized on a nine-decimal grid.
  • Timestamps are strict UTC ISO values with milliseconds, valid calendar dates, and years from 0001 through 9999.
  • No Dataset input, BYOK, proxy, fetch, destination call, state, replay, ledger, or inferred identity.

These optional neighboring Actors were independently read back as public and non-deprecated in the fleet pre-ship receipts. This Actor does not call them.

ActorHow it fits
Intent Signal AggregatorProduce hiring and news intent signals before deterministic routing.
Company Profile LookupAdd explicit company context before building normalized signal rows.
Shopify Store IntelligenceProduce public catalog and merchant observations for a routing workflow.
Funding Round TrackerSupply funding signals that can be mapped to analyst routes.
Patent Filing MonitorSupply patent events for research and competitive-intelligence routes.

FAQ

Does a route ID send a message? No. It is only a machine-readable label in the plan.

Can a rule run code or regex? No. Unknown fields and non-explicit predicates are rejected.

What happens to unmatched signals? They remain in signals, appear in unmatchedSignalIds, and produce one warning.

Are input permutations stable? Signal permutations produce the same plan and digests. Reordering rules can change firstMatch results by design.

Does the Actor deduplicate separate runs? No. Every run is an independent purchase.

Store text

SEO title: US Brand Signal Rule Router | Deterministic Routing Plan

Meta description: Route normalized US-brand intelligence signals through safe ordered rules into one deterministic machine-readable plan with exact digests and billing receipts.

Keywords: US brand intelligence, signal routing, rule engine, deterministic JSON, marketing automation, MCP Actor

Built by zinin.