System Architecture · Flow
LumicIQ — end-to-end flow
One canonical event stream → a learned attention gate → an LLM agent reasoning over composed context & scoped knowledge → a routed, quantified recommendation to the right person. Every call is audited; outcomes feed back to improve the prompts.
Source
Spine / projection
Detect
Agent / LLM
Deliver
Storage
data / control flow
learning feedback
events
proposed
archive
prompt layers
LLM call
RAG
state + memory
LlmCallRecord
weekly · prompt evolution
01 · SOURCES
Sensors & adapters
POS · traffic · inventory
weather · video · simulator
02 · SPINE
Event Hubs
RelayEvent · ULID idempotent
partition hash(tenant, store)
03 · ATTENTION
Interestingness
learned gate · no per-tenant config
03 · FLOOR
SafetyNet
~10 hardcoded critical conditions
04 · REASONING
The Agent
StoreAgent.single@1.0 · per (tenant,store)
composes the 5 context layers + NOW
validates → suggestion or answer
writes memory + audit
CONTEXT
Composed context
VerticalPack · Tenant · Store
LLM
ILlmProvider
OpenRouter · per-task models
05 · ROUTE
Router
recipient + channel · escalation
06 · CHANNELS
Deliverers
SignalR · push · earpiece · sms
07 · HUMAN
Client · React Native
act · dismiss · delegate · ask
PROJECT
StateProjection
emit-then-project · idempotent
OPERATIONAL
Stores
Cosmos · Redis · Azure SQL
current truth · memory · config
KNOWLEDGE
Vector index · RAG
Azure AI Search
platform → enterprise → store
AUDIT
Immutable record
Blob + ADX
every prompt + response · SOC 2
08 · LEARN
Learning loop
outcomes → backtest → prompt evolution → ship via experiments
Agent-primary (ADR-0003): no rules engine — the InterestingnessDetector is the learned cost-control gate, the SafetyNet the never-miss floor, the Agent the reasoner. Structured context is composed; unstructured knowledge is retrieved (ADR-0004 / RB-012). The Router never edits agent-authored content. Every LLM call writes an immutable LlmCallRecord — the audit, backtest, and prompt-evolution substrate. Fail-closed multi-tenancy throughout; idempotent on eventId; traceable by correlationId. Azure-targeted; runs locally on .NET Aspire until the cutover gate.