Ad-Hoc Reporting: Pick the Tables, Build It or Ask It, Keep the Answer

An admin reporting workbench over the tables the platform has already published — eight data domains, a visual builder with joins and filter trees, a plain-language mode that writes one read-only statement you can inspect, and a library where every saved report keeps both its definition and its last result.

BR Ad Hoc never offers a table that has not been catalogued with labels and field metadata, runs nothing but reads, and stores a saved report as normalized rows — tables, joins, columns, filters, group-by, order-by — rather than a blob. It reports on SuccessFactors-fed records and on records that arrived from Workday, UKG, ADP, Dayforce or Paycom through HRIS Sync, in the same builder, with the same rules.

8 data domainsVisual or plain languageRead-only · SELECT onlyDefinition + result, both keptAny HRIS records
BR Ad HocDashboard · 2026 · benefits opsRead-only148Saved reports · 202637Runs today1.8 sAverage run time97.4%Success rateWaived medical by locationVisual · 412 rows · 1.2 ssuccessWho moved PPO → HDHP in July?AI query · first 100 rows · in browserunsavedCarrier invoice variance by periodSaved report · run 61 rowssuccessACA employee-months under 95%Template → customized · new reportsavedDeductions vs elections mismatchVisual · join reused a tablerejectedDependants over 26 still coveredFavourite · 23 rows · exported CSVsuccessDefinition and result are two different thingsA saved report is rows — tables, joins, columns, filters; a run is a dated result with every cell.A plain-language run stays in the browser until it is saved.Illustrative dashboard · your domains, your tables, your runs

Eight Domains, Two Ways to Ask, One Read-Only Engine

An administrator chooses one or more published data domains and the tables inside them, then either assembles columns, joins and filters by hand or asks a question in English. The platform runs a read-only select against those tables. A save stores the definition as normalized rows and the result as a run with every cell — while a plain-language run stays in the browser until someone decides it is worth keeping. That is the whole app, and everything on this page is one of those steps looked at closely.

8published data domains — Benefits, Intelligent Services Delivery, Payroll Core, Integrations & Payroll Reconciliation, HRIS Master Data, ACA Reporting, Finance & Controlling, BR Configuration
6builder tabs — Select, Join, Where, Group by, Order by, Advanced — each with suggestions that are rule-built and test-executed before they are shown
5,000rows at most on a visual run, whatever the header says; a plain-language run is prompted for the first 100
0statements that write — the visual path compiles a select and the AI path is rejected unless it begins with SELECT

Working Flow — Who Clicks What, in Order

The whole app in ten steps, exactly as it runs: one dashboard, one wizard, two ways to build, one read-only run, one library. The right-hand column is the rule the platform enforces at that step.

#Who · whereWhat happensThe rule at this step
1Admin opens BR Ad Hoc
Dashboard
KPI tiles for the year — saved reports, runs today, average time, success rate — plus the ten most recent runs and quick actions into the builder, AI mode, the library and templatesTrends compare to the prior year to date; runs today compare to yesterday
2Starts a new report
Setup wizard · step 1
Picks one or more data domains and at least one published table inside themOnly tables in the metadata catalog are offered — never a raw database table
3Chooses how to build
Setup wizard · step 2
Visual builder or plain-language AI; the choice can still be switched hereOpening a library or template item skips the wizard entirely
4Builds it by hand
Visual builder
Select · Join · Where · Group by · Order by · Advanced tabs; per-tab suggestions are rule-built from field metadata and test-executed before they are offeredA join must start from a table already in the chain and add a new one; aggregation forces every other selected column into the group list
5Runs it
Result panel
The definition is compiled into one read-only select; the run is stored with every result cell; the first 50 rows come back inline, the rest page from the runRow limit is validated up to 100,000 on the header and clamped to 5,000 at execution
6Or asks it
AI query
Types a question; a relevance check runs first; the schema is built from field metadata; a commercially available language model writes one SELECT limited to 100 rows; a security check rejects anything that is not a read; the rows stay in the browserNothing is written to the run history until the admin saves — the save turns the executed statement into the same structured definition the visual builder uses
7Saves it
Library
The definition is validated against the catalog, stored as normalized rows — tables, joins, columns, filter tree, IN-lists, group-by, order-by — then run once and page 1 loads into the gridIf that first run fails, the report stays saved and the message says so; AI-built reports carry an AI-generated flag
8Reads the result
Table · Charts · Insights · Export
Six chart types built server-side from the stored cells; an Insights tab with average, min, max, outliers and empty-cell counts on the rows shown; CSV or JSON export of a stored successful runCharts need two columns and at least one numeric; export is for stored runs, so an unsaved AI run is saved first
9Comes back to it
Report Library
Run, edit in builder, duplicate, favourite, delete, edit metadata, preview the presentation SQL; tabs All · Visual Builder · AI Generated · Favorites; search by name, description, tags, category and source tableMetadata edits change the header only and never re-run the report; delete cascades runs, cells and every child row
10Starts from a template
Report Templates
Run a template in place, or Customize — a duplicate that becomes a new library report on its next save; categories follow the first table's domainA template is a saved report with a template flag; there is no second data model

One Report, Six Rooms

Follow a benefits administrator answering “which employees waived medical this year, by location?” — from the dashboard, through the wizard, built by hand and then asked in plain language, into the library — and the same report over an entity that runs Paycom.

The dashboard — the year at a glance, then straight into work.

The home screen opens on four tiles computed for the calendar year: saved reports created this year, runs started today, the average execution time of successful runs, and the success rate. Trends compare to the prior year to date, and runs today to yesterday; for time, lower is better and the arrow says so. Beneath them sit the ten most recent runs, newest first, and four quick actions — the visual builder, the plain-language mode, the library and the templates — plus the shared application launcher and the Essential Insights strip every admin app carries.

What the dashboard shows

  • Saved reports this year — active, non-template definitions
  • Runs today, average run time and success rate, each with a trend
  • The ten most recent runs with status and row count
  • Quick actions into the builder, AI mode, library and templates

Why it matters

An administrator sees whether the reporting estate is healthy before opening a single report.

Deeper dashboard charts — run trends, status mix, top tables, execution-time buckets — are computed by the service and not yet placed on this home screen; they are a roadmap item, not a claim.

DASHBOARD · KPI TILES · CALENDAR YEAR 2026Saved reports148 this year▲ 12% vs prior year to dateactive · non-templateRuns today37 since midnight▲ 6 vs yesterdayall statusesAverage run time1.8 s · successful runs▼ 0.3 s — lower is betteryear to dateSuccess rate97.4% · one decimal▲ 0.8 pts vs prior YTDsuccess ÷ all runsRecent activity · newest first · ten rowsEach row names the report, the mode (visual, AI, saved, template), the status and the rowcount — and opens the run in the builder in read-only mode.Illustrative tiles · computed for the year on the server

Rules of the Builder — What the Platform Enforces

Ad-hoc does not mean unguarded. Every report, visual or plain-language, passes the same set of rules before a single row is read.

RuleHow it worksWhy it is there
Which tables can be queriedOnly rows in the published table catalog, each with a friendly label, technical name, schema and domain; fields come from the field catalog with type, key and required flagsThe builder cannot reach a table nobody has labelled and assigned to a domain
JoinsInner, left, right or full; each join starts from a table already in the chain and must add a new table — reusing one is rejectedNo accidental self-joins or loops; every chain is a path
FiltersA tree: groups combine with AND or OR; conditions use =, ≠, <, >, ≤, ≥, LIKE, BETWEEN, IN, IS NULL, IS NOT NULL; IN-list values are stored one per rowA filter is data, not a string — it can be edited, previewed and audited
Group byIf any selected column is aggregated (SUM, COUNT, AVG, MIN, MAX), every non-aggregated selected column must be in the group listA visual report never compiles into an invalid statement
Row limitHeader limit validated from 1 to 100,000; execution clamps to 1–5,000; the AI path is prompted for the first 100 rowsA report is a working set, not a bulk extract
Reads onlyThe visual path compiles a select; the AI path must begin with SELECT — a leading UPDATE, DELETE, DROP, INSERT, ALTER, CREATE, TRUNCATE, EXEC, MERGE, GRANT or REVOKE is rejected before anything runsNothing in this app can change a benefits record
Employee codes as textDepartment, location, company and the other employee code fields are joined to the code-to-text master automatically and shown as text when it existsA report reads as words, not codes — and groups by the text correctly
Effective dates in AI modeWords like history, past, prior, last year, expired or archive ask for expired rows; every other question asks for current rows — only on tables that carry begin and end datesA plain-language question about “current” enrollments does not silently return history
Save and re-saveA definition is validated against the catalog before it is stored; on update every child row is replaced and the header keeps its id; saving never deletes previous runsHistory survives edits; an unresolvable definition is refused, not half-saved
Run historyRuns of a saved report accumulate; an unsaved visual run replaces the previous unsaved run for that person; an AI run is browser-only until savedThe run log holds what people chose to keep, not every experiment

The Six Screens of BR Ad Hoc

One admin app, six screens, one read-only engine underneath — described exactly as they run.

1

Dashboard

Four year-scoped tiles — saved reports, runs today, average time, success rate — with trends, the ten most recent runs and quick actions into every other screen.

Year-scopedRecent runs
2

Setup Wizard

Domains and published tables first, visual or plain-language second; skipped when a saved report or template is opened.

8 domainsCatalog only
3

Visual Builder

Select, Join, Where, Group by, Order by and Advanced with rule-built, test-executed suggestions; compiles to one read; Save validates, stores and runs.

6 tabsTested suggestions
4

AI Query

Relevance check, schema from the catalog, one SELECT limited to 100 rows, a security check, the statement shown; browser-only until saved.

SELECT onlyInspectable
5

Results Panel

Table paging from stored cells, six server-built chart types, an on-screen statistics tab, CSV and JSON export of stored successful runs.

6 chart typesCSV · JSON
6

Library & Templates

Run, edit, duplicate, favourite, delete, metadata and SQL preview; tabs by mode and favourites; templates by domain category that customize into new reports.

4 tabsCustomize = duplicate

Export-and-Spreadsheet Reporting vs. BR Ad Hoc

Most benefits reporting still means an export, a pivot table and a file nobody can reproduce. Here is what changes when the report lives on the platform.

The momentExport and spreadsheetBR Ad Hoc
“Which tables can I use?”Whatever the export happened to contain.The published catalog — eight domains, labelled tables and fields, nothing raw.
Joining enrollment to payrollVLOOKUP, and hope the keys match.A typed join from a table already in the chain, one field pair, validated before it runs.
“Can I just ask?”No.One plain-language question → one read-only statement you can read, first 100 rows, saved only if you say so.
A filter on departmentCodes, copied by hand.Codes shown as text from the master, and grouped correctly.
Someone edits the sheetThe number changes and nobody knows.The definition is rows; the run keeps every cell; a save never deletes history.
“Send me last quarter's version”A file on a laptop.The library — last result stored, run again on request, duplicate to customize.
An entity on another HRISA second export from a second system.The same tables, with entity and source as columns, through HRIS Sync.
AI query mode — not a chatbot

Ask the Tables and Read the Statement That Answered

The plain-language mode is a query engine with a language model in one step of it. It checks relevance, builds the schema from the catalog, writes one read-only statement, refuses anything else, runs it and shows you the statement beside the rows. It does not remember your last employee conversation, it does not act, and it is deliberately isolated from the employee Athena assistant.

  • “Which employees waived medical this year, by location?” — one statement over Elections and Employee, codes shown as text
  • “Show the ones who moved PPO to HDHP in July” — the effective-date hint keeps it to current rows
  • “Only the ones with a dependant over 26” — a new statement, still read-only, still first 100 rows
  • “Save this as a report” — the statement becomes a definition, flagged AI-generated, run properly and kept
  • “What's the average deduction here?” — answered from the rows on screen by the Insights tab — arithmetic, no model
How AI-Powered Analytics keeps models in their lane
AI Query BR Ad Hoc · Elections · Employee · Dependants
Which employees moved from PPO to HDHP in July, by location?
AI Query · relevant · one read-only statementGenerated over Elections and Employee (HRIS Master Data) and ran it: SELECT TOP 100 Employee.Location, Employee.Id, Elections.PriorPlan, Elections.NewPlan … WHERE prior plan is PPO and new plan is HDHP and the effective date is in July 2026 — current rows only. 412 employees match; the first 100 are shown, grouped by location text. The statement is visible above the grid.
Show statementSave as report
Only the ones with a dependant over 26, and save it.
AI QueryRewrote the statement with a join to Dependants and a birth-date condition: 23 employees. Saved as “PPO → HDHP movers with dependants over 26” — the statement was converted into a definition (two joins, three conditions), flagged AI-generated, and run once so the result is stored. It is now in the library under AI Generated.
Open in builderExport CSV
Ask a question about the selected tables…

Why Benefits, Payroll and Finance Teams Choose BR Ad Hoc

A Catalog, Not a Database

Only published, labelled tables and fields — eight domains an administrator can actually read.

Build It Without a Data Scientist

Joins, filter trees, grouping and sorting that the builder keeps valid, with suggestions that were tested before they were offered.

Ask It and See the Query

One plain-language question, one read-only statement shown beside the rows, saved only when you choose.

Reads Only, by Construction

The visual path compiles a select; the AI path is refused unless it is one — nothing here can change a record.

Definition and Result, Both Kept

A saved report is rows you can edit and audit; a run keeps every cell; history survives every re-save.

One Builder, Any HRIS

SuccessFactors records and Workday, UKG, ADP, Dayforce or Paycom records in the same tables, with entity as a column.

Four Reports, End to End — How the Screens Fit Together

The screens are one path. A report starts on the dashboard, is scoped in the wizard, built or asked, run and read, then kept in the library where it can be re-run, edited, duplicated or turned into a template for the next person. Four stories show the path in use.

  • The Open Enrollment check — Benefits picks BF + HR, builds waived-medical-by-location visually, saves it, favourites it and re-runs it every Monday of the window — same definition, a new stored result each time
  • The payroll question nobody had a report for — Payroll picks PC + BF and asks “deductions that don't match an active election this period” — reads the statement, saves it as an AI-generated report, exports CSV for the reconciliation desk
  • The ACA month under threshold — Compliance opens the ACA template, runs it in place, then Customize — a duplicate that becomes their own report with one extra filter on the ALE member
  • The audit request — Finance opens a favourite from last quarter: the last stored result is still there, the SQL preview shows the definition in readable form, and a fresh run is one click if they want today's rows
  • The mixed-HRIS group — HR adds Entity as a column to the same waived-medical report and runs it across the SuccessFactors plants and the Paycom distribution centres in one result
See the workspaces built on the same tables — Essential Insights
BR Ad HocReport Library · Tue 09/29 · benefits opsNew report148Saved reports31AI generated12Favourites9TemplatesReportModeLast runStateWaived medical by locationVisual · ★todaysuccessPPO→HDHP · dependants 26+AI generatedtodaysuccessDeductions vs electionsAI generatedtodayexportedACA months < 95% (custom)From template09/28successInvoice variance by periodVisual · ★09/28successDependants over 26Visual · ★09/27successMismatch by wage typeVisual09/26errorNew hires no election · 60dVisual09/25successThis month31 of 148 reports were built from a plain-language questionEvery AI-generated report carries its statement and its definition0 writes — every run is a readSuggested questions · test-run“Total employer premium by planand month” · “Employees withmore than one open election” ·“Invoices without a matchingenrollment this period”SuggestedEach suggestion was executedagainst your tables before itwas listed; pick one to open itin AI query mode.Use this questionSuggestions are templates, test-run firstIllustrative library

Bring the Report You Build in Excel Every Month. Build It Once Here.

Tell us which export you pivot every month — waivers, deductions, invoices, ACA months. We'll pick the domains in the wizard, build it visually on your tables, ask the same question in plain language, show you the statement, save both, and export the result — in your tenant.

Published catalog · 8 domainsRead-only · SELECT onlyDefinition + result keptStatement always visible

Ad-Hoc Reporting FAQs

Build It or Ask It. Either Way, Keep It.

Published tables, a builder that stays valid, a question mode that shows its statement, and a library that keeps both the definition and the result — over SAP SuccessFactors records and every record from another HRIS.