NULOGIC · SOLUTIONS · NERVE

The retail agentic platform
that actually ships actions.

Nerve is a multi-agent AI platform for mid-market retailers. It reasons over your real data across commerce, marketing, inventory and paid media — then proposes reversible actions your team can approve, reject, or reverse with full audit trail. Purpose-built for the retailer sized $100M–$2B GMV, where dashboards aren't enough and enterprise consultants are overkill.

Launch live demo See the architecture What works today
4
Production agents · Sprint 0
18
Connector capabilities defined
3
Dispatch modes · single / sequential / concurrent
0
Mock words in the agent layer
Today's demo

Four signals. Four dispatch patterns. One platform.

Each act below is a real signal routed through the real Supervisor, reasoned over by real operation agents, and materialized into a reversible Decision Card. Reasoning text is scripted for rehearsal-safety; every other moving part is production code. One env-var flip (NERVE_DEMO_MODE=live) points the same code at live Anthropic.

To run the demo: start the server locally with uvicorn nerve.api.main:app --host 127.0.0.1 --port 8765 --app-dir src from services/nerve-core/, then click Launch live demo above. Full runbook at docs/DEMO_README.md.
ACT 1
OOS Orchestrator
Nitro Pro Max Air 3 goes out-of-stock at Store #42 during an active promo. Inventory agent transfers 48u from DC-01 and pauses the $4.2k/day Google Ads campaign. Both actions reversible.
single dispatchinventory.v1
ACT 2
Slow-mover Remediation
Whole product line aging out. Supervisor consults Inventory (frames the problem) then Merchandising (prices the response) sequentially. One card, two agents collaborated.
sequential dispatchinventory → merch
ACT 3
Margin Defense
Competitor cut price. The agent reasons to HOLD instead of matching — we're already outselling 3:1 and chasing would evaporate $140K margin. Judgment calls, not reflex.
single dispatchmerchandising.v1
ACT 4
Viral Moment
TikTok virality, traffic up 14× in 20 min. Four agents reason concurrently. Inventory pre-stages. Paid Media auto-caps bids (L3 auto-executed). Merch swaps hero. CX drafts back-soon copy. One unified plan under 10s.
concurrent · 4-wayinventory + pm + merch + cx
Architecture

The system in three views.

Every diagram below reflects real code in services/nerve-core/. Nothing aspirational. Rendered live from the engineering source-of-truth at docs/ARCHITECTURE.md.

1. The layered stack

Signals come in from retail systems, get normalized into NCRS, reasoned over by agents, and become reversible actions routed back out through connectors. Every layer speaks NCRS — not Shopify field names, not Manhattan field names — so one agent works across every customer without bespoke code.

flowchart TB
    subgraph RS["Retail systems (real tenant data)"]
        direction LR
        RS1[Shopify · orders · inventory]
        RS2[Klaviyo · email · SMS]
        RS3[Google Ads · Meta Ads]
        RS4[Manhattan · WMS · OMS]
    end
    subgraph CONN["Connector layer"]
        direction LR
        CBASE["Adapter ABC · 18 capabilities
idempotency · reversal · rate-limit"] C1[Shopify]:::spc C2[Klaviyo]:::spc C3[Google Ads]:::spc C4[Manhattan]:::spc end subgraph DATA["Data layer"] NCRS["NCRS · Pydantic + Postgres
row-level security · partitioned"] VEC["Vector store · Qdrant (Sprint 2)"] STREAM["Event log · Redis Streams (Sprint 1)"] end subgraph AGENTS["Agent layer"] SUP["Supervisor
single · sequential · concurrent"] P1[Inventory]:::pack P2[Merchandising]:::pack P3[Paid Media]:::pack P4[CX]:::pack P5[Supply Chain · Sprint 2]:::soon P6[Finance · Sprint 2]:::soon SUP --> P1 & P2 & P3 & P4 & P5 & P6 end subgraph LLM["LLM gateway"] GATEWAY["Hybrid · scripted ↔ Anthropic"] end subgraph API["HTTP + SSE"] SIG["POST /v1/signals"] DEC["/v1/decisions/* · approve · reject · reverse"] SSE["/v1/decisions/stream · SSE"] end subgraph UI["UI surface"] OP["Operator UI
black canvas"] PORTAL["Portal
leadership + customer"] end RS ==> CONN CONN ==> NCRS NCRS ==> AGENTS AGENTS <--> LLM AGENTS ==> DEC SIG --> SUP DEC <--> OP SSE --> OP OP <--> PORTAL classDef spc fill:#1a0a20,stroke:#8939A1,color:#fff classDef pack fill:#0a1a2a,stroke:#61629D,color:#fff classDef soon fill:#0a0a14,stroke:#3E616A,color:#888,stroke-dasharray:3 3
Every class, function, and file in this diagram exists today in services/nerve-core/. Items marked "Sprint 1/2" are Postgres-backed + real connectors + additional agent packs.

2. How one signal becomes one decision

A signal arrives. The Supervisor decides routing — one agent, two agents sequentially, or N agents concurrently. Everything composes into a single auditable Decision Card. L3 auto-executes are marked at compose time so operators see them as already-done.

sequenceDiagram
    autonumber
    participant Retail
    participant API as POST /signals
    participant Sup as Supervisor
    participant Agent as Operation agents
    participant LLM
    participant Store as Decision store
    participant UI as Operator UI

    Retail->>API: signal
    API-->>Retail: 202 Accepted
    API->>Sup: enqueue
    Sup->>Store: allocate decision_id
    Sup->>UI: trace · routed_to (SSE)
    Sup->>LLM: routing reasoning
    LLM-->>UI: reasoning tokens (SSE)

    alt single · sequential · concurrent
        Sup->>Agent: consult (1..N agents)
        Agent->>LLM: agent reasoning
        LLM-->>UI: reasoning tokens (SSE)
        Agent-->>Sup: draft actions + alternatives
    end

    Sup->>Sup: compose Decision Card
    Sup->>Store: put(status=pending)
    Store-->>UI: decision event (SSE)

    UI->>API: approve
    API->>Store: fire actions
    Store-->>UI: execution events (SSE)
    opt reversal
        UI->>API: reverse
        Store-->>UI: reversal events (SSE)
    end
    
Code path: nerve.agents.supervisornerve.agents.{inventory,merchandising,paid_media,cx}nerve.core.decision_store. Dispatch mode is decided by supervisor routing logic per signal type.

3. Event lifecycle over the wire

One SSE channel (GET /v1/decisions/stream) fans out every event to every subscribed client. Events are typed so the UI can route by event: field. Volume is roughly 150–250 reasoning chunks per agent per signal, plus trace + decision + execution + reversal events.

stateDiagram-v2
    direction LR
    [*] --> Idle: subscribe (hello event)
    Idle --> Signal: POST /signals
    Signal --> Routing: trace · routed_to
    Routing --> Reasoning: reasoning · per token
    Reasoning --> Composing: final agent returns
    Composing --> Pending: decision · status=pending
    Pending --> Approved: decision · status=approved
    Approved --> Executing: execution · state=sent
    Executing --> Executed: execution · state=acked
    Executed --> Reversed: reversal
    Reversed --> Closed
    Pending --> Rejected: decision · status=rejected
    Rejected --> Closed
    Executed --> Closed: no reversal
    Closed --> Idle: next signal
    
Keepalive pings every 15s. Native EventSource reconnects automatically. Redis Streams backs this in Sprint 1 so SSE is a view, not the source of truth.
Operation agents

Eight operation packs. One grammar.

Every agent speaks NCRS. Every action carries its own reversal contract. Every decision type declares its autonomy level (L1 advise / L2 one-click / L3 auto-execute). Agent specs are YAML-defined and CI-validated.

INVENTORY · v1 · LIVE

Inventory

OOS orchestration, inter-store transfers, replenishment advisement, ATP arbitration. Owns stockout and slow-mover signals.

MERCHANDISING · v1 · LIVE

Merchandising

Markdown ladders, margin defense, hero swaps, promo calibration. Owns pricing and assortment signals.

PAID MEDIA · v1 · LIVE

Paid Media

Bid caps, campaign pauses, creative rotation. Auto-executes L3 below-threshold actions (wasted-spend mitigation).

CX · v1 · LIVE

Customer Experience

PDP microcopy, back-in-stock alerts, post-purchase communications. Owns the shopper-visible touchpoints.

SUPPLY CHAIN · v0.5

Supply Chain

PO management, vendor negotiation advisement, inbound ATP, carrier routing decisions.

OPS · v0.5

Store Operations

Staffing signals, shrinkage detection, in-store fulfillment capacity, click-and-collect routing.

FINANCE · v0.5

Finance

Margin watch, contribution-margin attribution, promotional ROI, markdown/markdown-cancel accounting.

LOYALTY · v0.5

Loyalty & Retention

LTV-aware targeting, churn signals, win-back sequencing, tier-ladder optimization, reward issuance.

Transparency

What actually works today vs what's next.

This is for leadership, not marketing — so it's honest. If you clone the repo right now, here's exactly what runs and what doesn't.

Capability
Today (Sprint 0)
Next (Sprint 1 · April 20→)
NCRS data grammar
Pydantic v2 models + Postgres DDL with RLS, partitioned InventoryPosition
Materialized views for hot reads, additional entity types (PromoCalendar, VendorTerms)
Agent reasoning
Scripted via LLM gateway (deterministic, rehearsal-safe)
Live Anthropic tools-mode, per-agent prompt templates + structured output
Decision store
In-memory · production-shaped API (put/approve/reverse/subscribe)
Postgres backed, Redis Streams for fan-out, durable across restarts
Connectors
Adapter ABC · 18 capabilities · idempotency + reversal contracts
Shopify (orders + inventory), Klaviyo (email), Google Ads (bid management)
SSE event stream
Typed events · reasoning · trace · decision · execution · reversal · ping
Persistent offset replay (late subscribers catch up), multi-tenant channel isolation
Multi-tenancy
Row-level security at Postgres, header-based tenant context in API
Slug → UUID resolution, Auth0/Cognito real auth, per-tenant feature flags
Operator UI
Black-canvas streaming reasoning, composite cards, approve/reject/reverse
Multi-decision timeline, tenant switcher, decision history, evidence panel
Roadmap

Sprint 0 shipped. Pilot in 8 weeks.

Scoped against an actual RRS pilot conversation. Post-pilot we focus on scale (more connectors, more packs), not more wow.

SPRINT 0 · DONE
Foundations + live demo
  • NCRS schema + RLS migrations
  • Agent + Connector specs
  • Supervisor · 3 dispatch modes
  • 4 operation agents
  • SSE event fan-out
  • Operator UI · black canvas
  • 4-act Demo Conductor
SPRINT 1 · APR 20 → MAY 3
Real AI + real persistence
  • Anthropic tools-mode · all 4 acts
  • Postgres decision store
  • Redis Streams event log
  • Shopify connector (v1)
  • Tenant slug resolution
SPRINT 2 · MAY 4 → 17
Connectors + packs
  • Klaviyo + Google Ads
  • Supply Chain + Ops packs
  • Vector store (Qdrant)
  • Eval harness + golden sets
PILOT · JUN 1 →
First customer live
  • Auth0 + tenant onboarding
  • Audit export (SOC-2 prep)
  • Observability dashboards
  • On-call + runbook
  • RRS as design-partner customer
GA · Q3 2026
Multi-customer scale
  • Self-serve onboarding
  • Connector marketplace (partner)
  • Finance + Loyalty packs
  • SLAs · uptime · DR