TACTIX · live demo
Smart actions

The agent doesn't
hold the data

A smart action is the Bench's recoverable gap turned into a move you can make today. It isn't a model guessing over raw rows — it's an agent that holds a question, a map of tools, and a reasoning loop, and fetches the answer from clean, pre-computed signals.

Like a sharp analyst dropped into an unfamiliar company with a really good filing system: they don't memorise the files — they know which drawer to open. In this snapshot it has already written 649 real smart actions across 17 stores.

How a smart action is made

Clean signals in, one clear move out

Raw transactions never reach the agent. They're refined upstream into purpose-built gold marts — each one a pre-computed answer to a single question — then exposed as narrow, callable tools. Agents reason beautifully over clean signals and terribly over raw rows, so the Bench only ever hands them clean signals.

Input
Raw transactions
Every order, untouched — far too noisy for a model to reason over directly.
dbt · bronze → silver → gold
Clean signals · “the drawers”
Gold marts — one drawer, one answer
PerformanceComparable periodsForecastWeatherEvents
wrapped as narrow MCP tools · fetch_*()
The agent · reasoning loop
Holds a question and a map of tools — not the data
It opens only the drawers it needs, in order — fetch performance, compare to the own-best ceiling, check forecast, rule out weather and events — then writes the play with context for every number.
context for every number, magnitude for every trend
Smart action · real, dated, priced
critical
Independent · 04 — Capture Labor Hours This Month
Labor optimization$100–$500/day
→ closes part of Independent · 04's recoverable gap ($20.7K/wk)
Each drawer is one narrow tool
Performance
fetch_daily_performance()
What actually happened — revenue, orders, AOV by day-part.
Comparable periods
fetch_comparable_periods()
This store's own best comparable days — the P90 ceiling.
Forecast
fetch_forecast()
What the day was expected to do.
Weather
fetch_weather()
Conditions that move demand, store by store.
Events
fetch_local_events()
Games, concerts, closures nearby.
A smart action, end to end

From a soft day to a move

A real day at Independent · 04. The morning scan flags it's tracking soft, and the agent opens drawers in sequence until it can name the cause — then turns the recoverable gap into a play.

Agent reasoning loop · 2024-09-07
fetch_daily_performance() revenue $3,650 · AOV soft
fetch_comparable_periods() own best for this weekday $12,184
fetch_forecast() expected near baseline
fetch_weather() clear — no demand impact
fetch_local_events() none nearby
diagnosisRevenue is running 70% below your own best for this weekday, with soft AOV — and the forecast, weather and events are all clear. This is an execution gap, not a demand problem.
The smart action it generated — verbatim
Independent · 04 — Capture Labor Hours This Month
$100–$500
watch
criticalLabor optimizationhigh confidence

Independent · 04 currently has 0-0% RPMH and labor_cost entries in recent records (major blind spot).

  • Move: Align labour to the day
Why this — the full reasoning

Independent · 04 currently has 0-0% RPMH and labor_cost entries in recent records (major blind spot). Confidence high. Implement hourly reporting for total_hours and labor_cost_pct this_month so RPMH and cost controls can be calculated before next scheduling cycle. Expected impact: $100-$500 All recent entries show rpmh 0.0 and null labor_cost_pct; fixes enable meaningful scheduling.

Independent · 04 runs $20,700 of recoverable opportunity a week. The Bench sizes that ceiling; the smart action is how a store reaches for it. How often operators follow the play is the adherence lever in the Explorer.
Generated for real stores

649 smart actions, already written

These aren't illustrations. The system has generated 649 dated smart actions across 17 stores in this snapshot — each with a priority, a confidence, an expected dollar impact, and the full reasoning behind it.

By category
Labor optimization498
Third-party prep104
Forecast45
Other2
By priority
critical28
high293
medium294
low34
A few, verbatim
Tuesday May 12 — Soft Day Ahead
$1.7K–$2.3K
softer day
highLabor optimizationhigh confidence

Tuesdays at this location consistently run 30-36% below daily average revenue ($4394 vs $6550 overall) based on 13 observations with a tight range.

  • Move: Right-size labour for the softer day
  • Evidence: 13 comparable days, high confidence
Why this — the full reasoning

Tuesdays at this location consistently run 30-36% below daily average revenue ($4394 vs $6550 overall) based on 13 observations with a tight range. Confidence: high given repeated, recent samples. With Tue May 12 in next week's window, it's worth reviewing whether your current plans align with the expected lower volume that day. Expected impact: $1,700-$2,300 13 DOW observations; Tue avg revenue 4394 vs overall 6550.

Tuesday May 5 — Softer Day Expected
$2K–$2.3K
softer day
highLabor optimizationhigh confidence

Tuesdays at this location historically run about $2000-$2250 below the overall daily average (avg $4,281 vs.

  • Move: Right-size labour for the softer day
Why this — the full reasoning

Tuesdays at this location historically run about $2000-$2250 below the overall daily average (avg $4,281 vs. $6,409), based on 13 past Tuesdays with a tight range. As you finalize next week's plans, May 5 is worth a closer look given this pattern. It's worth reviewing whether your current plans align with the expected softer volume that day. Expected impact: $2,000-$2,250 Tuesday avg revenue $4,281.05 vs overall $6,409.22 (sample 13).

Tuesday Apr 28 — Soft Day Ahead
$1.9K–$2.2K
softer day
highLabor optimizationhigh confidence

Tuesdays at this location historically run 30-37% below the daily average revenue ($4,066 vs $6,134) — based on 13 past Tuesdays with a tight range.

  • Move: Right-size labour for the softer day
Why this — the full reasoning

Tuesdays at this location historically run 30-37% below the daily average revenue ($4,066 vs $6,134) — based on 13 past Tuesdays with a tight range. High-confidence pattern. As you finalize next week's plan, Apr 28 is worth a closer look given this trend. It's worth reviewing whether your current plans align with the expected lower volume that day. Expected impact: $1,900-$2,200 Tuesday avg revenue $4,066 vs overall $6,134 (n=13).

Tuesday May 26 — Soft Day Ahead
$1.4K–$2K
softer day
highLabor optimizationhigh confidence

Tuesdays at this location consistently run 20-28% below daily average revenue (roughly $5,145-$5,716 vs $7,145 overall).

  • Move: Right-size labour for the softer day
Why this — the full reasoning

Tuesdays at this location consistently run 20-28% below daily average revenue (roughly $5,145-$5,716 vs $7,145 overall). High-confidence pattern based on weekday history across the sample. With Tue May 26 in next week's window, it's worth reviewing whether your current plans align with the expected lower volume that day. Expected impact: $1,400-$2,000 Tuesday is the weakest weekday in the store's 88-day sample (average $5,190).

For store owners

A question behind the counter, an answer in seconds

Operators don't open a BI tool — they ask. The agent answers conversationally on a phone, with the context baked in: every number carries its comparison, every trend its direction and size, and the date range it covers. Two ways it routes:

Backward routing · explain the past
Why was Saturday slow?
Saturday did $3,650 — about 70% under your own best Saturday ($12,184). Weather was clear and there were no events, so this looks like an execution gap, not demand. Want the play to recover it?
Forward routing · prepare for today
What should I watch for today?
You're forecast near your weekly target, but lunch tends to run soft on this weekday. Run the upsell play 11:30–1:30 and keep one extra hand on front-of-house — that's where the gap usually opens.
Why it's safe to share

Your data stays yours

Scope is a property of the tools, not a rule we ask the model to follow. The agent reasons in display names, never raw IDs, and can only ever fetch what a user is allowed to see — which is exactly why this benchmark can be shown without exposing a single store's real name.

Scope lives in the tools
Scoped client wrappers + row-level security decide what's reachable — not a prompt the model could be talked out of.
Names, not IDs
The agent works in display names like “Downtown,” never numeric IDs, so cross-store access is architecturally impossible.
Clean signals only
It sees pre-computed answers, never raw transaction rows — less to leak, and far better reasoning.
Gap → captured
The Bench finds it. Smart actions close it.

See the recoverable opportunity sized across the network, then dial in how often operators follow the plays.

Open the Explorer →Watch a store demo