The slowest thing in most operations software is not the database. It is a person clicking through four menu levels because they cannot remember whether a serial number belongs to an asset or an item. Press the key, type three characters, and the answer arrives grouped by what kind of thing it is.
⌘+K· or ·Ctrl+K
Command paletteEsc to close
latitude
Assets
Dell Latitude 5440 — LAP-001 SN12345 · G. Wanjiku
Dell Latitude 7420 — LAP-018 SN87901 · available
Items
Dell Latitude charger, 65W SKU-2210 · 14 on hand
POs
PO-2026-0912 — 5 × Dell Latitude 5440 Sanlam Hardware · received
Employees
Assigned laptops — Latitude custody list 4 employees
Nobody's question comes with a module attached to it.
Somebody walks up holding a serial number. It could be an asset. It could be an inventory item with a barcode. It might appear on a purchase order line, or in a quotation the supplier sent, or on a helpdesk ticket where a user complained about it. In a system organised by module, the person has to guess which one before they can ask — and a wrong guess costs three clicks and a moment of feeling stupid.
A single search that crosses record types removes the guess. You type the thing you know, and the system tells you which kinds of record it belongs to. That is the entire value proposition, and it is worth more in practice than most features that take ten times longer to build.
Mode one — find a record
Type two characters and it starts searching.
Below two characters, the palette shows destinations instead — because a one-letter search returns everything, which is the same as returning nothing. From the second character it queries live, debounced, and swaps the destination list for grouped results.
Results arrive grouped by record type with an icon per group, so the shape of the answer is visible before you read a word of it.
Each row carries a subtitle — the identifier, the status, the counterparty — so two similarly named records are distinguishable without opening either.
Arrow keys walk the results, Enter opens, Escape closes. The mouse is optional throughout.
A “view all results” row carries the same query to the full search page, five per group in the palette and ten per group on the page.
Mode two — go somewhere
Empty, it is an index of the product.
Open the palette without typing and you get the destination list: every significant screen in the product, grouped the way the sidebar is grouped, filtered to what your role can actually open. It is the fastest route to a page whose name you know and whose location you do not.
Sections mirror the sidebar — Overview, Operations, Inventory, Assets, Procurement, Sales, Accounting and the rest — so the palette reads as a map rather than a pile of links.
Every entry carries the same permission its route carries. A user without accounting never sees Journal Entries, rather than seeing it and bouncing off a 403.
A handful of entries are actions rather than destinations. Light and dark theme sits at the top of the list, above the links, because it acts and leaves you where you are.
The theme switch deliberately does not close the panel — the panel is itself themed, so you can flip it twice and watch the difference.
Sixteen groups, one query
What actually gets searched, and what each row tells you.
Not a marketing round number. This is the list, and it includes the two groups people are always surprised by: settings pages and connector pages, because “where do I turn off the emails” is a search query as much as a vendor name is.
Itemsname, barcode → item detailAssetsasset code, name, barcode, serial → asset recordVendorsname, company, email → vendor fileSuppliersprequalification applications by applicantCustomerscompany, contact name, email → customer 360Invoicesnumber, customer, amount → invoicePurchase ordersPO number, vendor → order and receiptsRFQstitle, reference → RFQ and responsesQuotationsreference, vendor → quotation comparisonExpensesdescription, category, reference → claimEmployeesname, employee number, job title → recordProjectsname, code → project workspaceTaskstitle, project → task detailTicketssubject, requester, reference → ticket threadSettings pagesthe settings screen itself, by name or aliasConnectorsintegration pages — Slack, QuickBooks, M-Pesa
The two settings groups are the sleeper feature. The single most common support question in any operations product is a variant of “where is the setting for…”, and the answer is almost never the word the person searched for. So settings pages carry aliases: search 2fa and you reach the security policy; search too many emails and you reach notification preferences; search cost center and you reach departments. The same word-start match rule is implemented on the server, in the browser and in the mobile app, so a settings page is findable identically on all three.
Why the list is different for everybody
A shortcut to a page you cannot open is not a shortcut. It is a small daily insult.
Before the destination list was a registry, it was a flat block of links shown to everybody. A storekeeper opened the palette, saw Journal Entries and Chart of Accounts, pressed Enter, and got a permission error. That happens once and the person stops trusting the palette. Now every entry declares the permission its route declares, and the list is built per user.
Operations manager32 entries
Dashboard
Approvals Hub
Ops Control Tower
Items
Inventory Adjustments
Stock Transfers
Assets
Asset Pool Movements
Asset Custodians
Procurement Requests
Purchase Orders
Vendors
Journal Entries
Chart of Accounts
General Ledger
Budgets
Holds inventory, assets, procurement and accounting permissions, so the whole list is reachable and every Enter opens something.
Storekeeper9 entries
Dashboard
Approvals Hub
Ops Control Tower
Items
Inventory Adjustments
Stock Transfers
Assets
Asset Pool Movements
Asset Custodians
Procurement Requests
Purchase Orders
Vendors
Journal Entries
Chart of Accounts
General Ledger
Budgets
Same palette, same keystroke, seven fewer rows. Nothing greyed out and nothing to bounce off — the entries simply are not there.
The same principle governs the search half, and it is a stronger guarantee: every query is scoped to the signed-in user's workspace in the query itself, not filtered afterwards. With no workspace and no query there is nothing to search and the result is empty groups rather than a leak, which is the correct failure direction for a feature that touches sixteen tables at once.
The destination list
An index of the product, in the order the product is organised.
Places to go, not things to do. Actions — raising a request, opening a modal, starting a count — live in the quick-action machinery beside it rather than being mixed into a list of pages, because a list where half the rows navigate and half of them fire is a list nobody can predict.
Overview
Dashboard
Reports
Awra Insights
Settings
Operations
Approvals Hub
Ops Control Tower
Alerts
Anomalies
Scan & Act
Inventory
Items
Inventory Adjustments
Inventory Counts
Inventory Traceability
Stock Transfers
Warehouses & Locations
Assets
Assets
Asset Movements
Asset Pool Movements
Asset Custodians
Asset Scan
Asset Reports
Procurement
Procurement Requests
RFQs
Quotations
Purchase Orders
Vendors
Supplier Performance
Strategic Sourcing
Supplier Prequalification
Sales
POS
Customers
Customer Invoices
Credit Notes
Payments Register
Accounting
Journal Entries
Expenses
Budgets
Chart of Accounts
General Ledger
Appearance
Light theme
Dark theme
Follow system
Appearance is at the top of the real list rather than the bottom, and it is the one section that is not a set of destinations. That placement is deliberate: it is the only entry somebody opens the palette specifically to use twice in a row.
The whole keymap
Four keys. There is no fifth thing to learn.
A palette with twelve shortcuts is a palette nobody uses, because remembering the shortcuts is the same problem as remembering the menu. This one has four, the modifier is correct on both platforms without a setting, and every other route into it is a click.
Keys
What happens
⌘K
Opens the palette from anywhere in the product, with the field focused and empty. On Windows and Linux the same chord is Ctrl+K — the platform is detected rather than configured, so nobody has to find a keyboard setting.
Esc
Closes it, from any state, including mid-search. The same key closes it whether you are looking at destinations or results, which is the point of having one escape.
↑↓
Walks whichever list is currently showing. Section headings are skipped, so arrowing down never lands on a title you cannot open, and the active row scrolls itself into view rather than disappearing off the bottom.
↵
Opens the highlighted row. On a search result that is the record; on a destination that is the page; on the theme entries it applies the theme and leaves the palette open.
There is also a visible trigger in the topbar showing the chord, for the substantial number of people who will never learn a keyboard shortcut and should not have to. The palette is not a power-user secret; it is the primary navigation for anybody who wants it to be.
One implementation detail worth stating
Search results are markup built from your data, which is exactly where injection lives.
A palette result row is assembled in the browser from values that arrived over the network — a vendor name, an item description, somebody's typed reference. The server-side template engine never touches it, so the escaping the rest of the product gets for free does not apply here. This is the single most common place a web application gets this wrong.
Every interpolated value in the palette's result renderer — the title, the subtitle, the icon class and the destination URL — goes through one shared escaper, defined once and loaded from the head of every layout. Not a copy per page: there were nine copies of that function in this codebase before they were consolidated, and two of them declared the same global name, which is a syntax error that silently discards the entire script block it appears in. Consolidating it is the reason the palette and every modal on the page cannot take each other down.
This is fast lookup, not a search engine. The difference matters.
Search is the feature people most often oversell, because a demo with three records looks identical to a demo with three hundred thousand. Here is what this actually is.
What sits beside it
Finding a record is half of it. The other half is doing something with it.
This is the least glamorous feature in the product and the one experienced users notice within an hour. It does not change what the system can do. It changes how long it takes to get to it, on every single task, for everybody, forever.
Type the serial number. The system says which record types it belongs to.
New starters find things
A person on day two can reach any screen they have permission for without learning the menu tree.
Settings stop being a support ticket
Search 2fa, or cost center, or too many emails, and land on the right screen.
Nobody hits a permission wall
The destination list is built from your own role, so every Enter opens something.
Hands stay on the keyboard
Four keys, both platforms, and a visible trigger for the people who prefer the mouse.
One search box, sixteen answers
The question does not have to be sorted into a module before it can be asked.
'Are search results safe to render?', 'a' => 'Yes, and it is worth stating because this is the classic place a web application gets it wrong. Palette rows are assembled in the browser from data that arrived over the network, so the server-side template escaping the rest of the product enjoys does not apply. Every interpolated value in the result renderer — the title, the subtitle, the icon class and the destination URL — goes through one shared escaper defined once and loaded from the head of every layout. There is exactly one such function in the codebase, and a page that declares its own fails the build.'], ]" />
Help Center
Need a quick answer while you read?
Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.
Demo booking
Book a focused AWRA demo
Share a few details so we can send the confirmation email and route your request to the right AWRA team.
1
Request received AWRA has your demo context and contact details.
2
Check your email We send confirmation and follow-up from the AWRA team.
3
Book calendar slot Pick a time for a focused workflow walkthrough.
We use necessary cookies for secure sessions. With your permission, we also use cookies and browser storage for preferences, analytics, and demo engagement. Privacy Policy
AWRA OpsHub
Cookie settings
Cookie Consent Manager
Necessary cookies stay on for login, CSRF protection, and security. You can choose the optional categories below.
Overview
General Information
AWRA uses cookies and browser storage to keep public pages secure, remember selected preferences, measure website performance, and manage demo engagement prompts.
You can choose whether functional and marketing engagement storage apply. Analytics measurement is always active in this AWRA setup.
These settings apply to AWRA public website experiences such as the homepage, feature pages, pricing calculator, blog, help center, and request-demo page. Authenticated dashboard and vendor portal sessions still rely on required security cookies.
Required
Always active
Functional
Optional
Analytics
Always active
Marketing
Optional
For more context on privacy handling, open the Privacy Policy.
Required Cookies
Required Cookies
Always Active
Required cookies and storage support basic website delivery, secure sessions, request protection, and remembering the consent choice itself.
These cannot be switched off from this manager because disabling them would break login/session behavior, form protection, or the ability to remember the privacy choice you save.
Cookie details
Session security: keeps secure server sessions working while browsing AWRA.
CSRF protection: helps verify form submissions and protect requests.
Consent record: stores the preference decision so the banner does not keep asking after a choice is saved.
Examples: Laravel session cookies, CSRF tokens, and the AWRA consent preference record.
Duration: session security can expire with the browser/session; saved consent can last longer so the same browser remembers the choice.
Functional Cookies
Functional Cookies
Functional storage improves the public website experience by remembering interface choices, helper states, dismissed notices, and short-lived interaction preferences.
Turning this off does not stop secure required cookies or analytics. It only limits optional convenience memory.
If disabled, AWRA may show some helper prompts again or forget non-essential display choices. Core public pages, contact forms, and request-demo forms still work.
Cookie details
UI preferences: remembered display choices and helper states where available.
Dismissed notices: session-level or preference-level memory for notices the visitor has closed.
Frequency helpers: optional browser storage that prevents repeated prompts when allowed.
Examples: localStorage or sessionStorage values for dismissed banners, guide/helper states, and lightweight public-page preferences.
Effect when off: AWRA avoids optional convenience memory unless it is also allowed through marketing and engagement preferences.
Analytics Cookies
Analytics Cookies
Always Active
Analytics helps AWRA understand public page performance, traffic patterns, and content usefulness so we can improve the marketing website.
This category does not by itself enable demo popups, exit-intent prompts, or advertising pixels. Those are controlled by Marketing & engagement.
In this AWRA setup, Google Analytics and Google Tag Manager measurement are treated as mandatory website measurement and remain active.
Cookie details
Google Analytics / GTM: measures aggregate traffic and page activity.
Performance insight: helps identify which public pages, docs, and demo paths visitors use.
Operational signal: supports website quality decisions without enabling demo popups by itself.
Examples: Google measurement identifiers such as GA/GTM tags and related browser identifiers set by Google scripts.
Use: page views, source/referrer trends, public content performance, and product education page effectiveness.
Marketing & engagement
Marketing & engagement
Marketing and engagement storage supports demo prompts, exit-intent prompts, campaign attribution, and future advertising pixels.
When disabled, AWRA will not auto-open demo or exit-intent popups. CTA buttons can still open a form because that is a direct visitor action.
When enabled, AWRA can remember that a visitor already saw, dismissed, or submitted a demo prompt so the same popup is not repeated aggressively.
Cookie details
Demo prompt memory: tracks whether an auto prompt or exit prompt was recently dismissed.
Demo submission memory: avoids asking again after a visitor submits a demo request.
Campaign context: keeps source page, referrer, and UTM context available for demo requests.
Examples: popup frequency caps, demo-submitted flags, engagement source fields, and UTM/referrer context.
Effect when off: auto demo prompts and exit-intent prompts stay blocked; normal navigation and manually clicked CTA buttons still work.