DEV Community

Deepa K.K
Deepa K.K

Posted on • Edited on

Turning MultiValue Batch Reports Into AI-powered Morning Briefings : Value-Driven Legacy Modernization With Decoupled AI Agents

We Don't disrupt Our MultiValue System. We Let AI Read Its Reports.

A blueprint for leveraging local, air-gapped LLM agents to extract structured intelligence from enterprise batch reports — driving massive operational ROI while completely bypassing the risks of a system rewrite

The Modernization Dilemma: Data Abundance, Operational Latency

Our core database infrastructure has executed nightly batch jobs for years. These background phantom processes are stable, reliable, and deeply trusted, quietly routing operational reports into native output queues (PH and HOLD files) exactly as they always have.

Every morning, operations teams must manually sift through hundreds of pages of dense text spools to find critical exceptions, financial discrepancies, and supply chain risks. While the vital data is available, manually extracting actionable insights creates a costly bottleneck. This stretches decision latency, ties up premium management hours, and delays critical business responses.

Rather than replacing the core infrastructure, this architecture introduces a non-intrusive, decoupled AI consumption layer on top of trusted workflows.

The Solution: Read-Only AI Modernization

The new pipeline reads the same overnight reports, extracts structured facts, understands relationships across multiple reports, and delivers a clear, role-specific morning digest to managers, finance teams, warehouse staff, and executives. Existing BASIC programs, PROC jobs, and phantom schedules remain unchanged.

The batch jobs continue to run exactly as before. The only difference is what happens next.

From Raw Text to Intelligent Summary

Why This Matters

Most organizations already have valuable information hidden inside overnight reports. The challenge is not generating the data; it is getting the right information to the right people at the right time.

The AI digest provides:

  • Faster visibility into operational issues
  • Cross-report insights that traditional reports cannot easily reveal
  • Decision-focused summaries tailored to different business roles

What the AI Layer Adds

Faster Visibility

A warehouse manager receives an early morning reorder summary containing exact product names, shortage volumes, and vendor details. The information already existed in the report; now it arrives earlier and in a more actionable format.

Cross-Report Insight

Traditional reports show one business view at a time. The AI digest can connect information across multiple reports.

For example, a product may appear in:

  • A reorder report
  • An overstock report
  • An open orders report

Viewing these relationships together often reveals the real operational problem.

Decision-Oriented Summaries

Reports provide numbers.

The AI digest provides context.

Instead of presenting isolated figures, it highlights the business situation and identifies the actions that matter most today.

A Pattern That Works Across Industries

The same approach applies wherever MultiValue systems generate nightly operational reports.

Industry What runs in PH / HOLD every night Who should receive the digest
Distribution & Wholesale Inventory valuation, reorder alerts, AR aging, slow-movers, open orders GM, warehouse manager, purchasing, sales manager
Healthcare Patient billing, insurance AR, supply consumption, appointment fill rates, claims outstanding Revenue cycle manager, CFO, operations director
Manufacturing WIP status, material consumption, scrap rates, machine downtime, production variance Plant manager, production scheduler, quality manager
Financial Services Daily Finish Reports, Trial Balance report, Loan aging, collections pipeline, disbursements, compliance flags, portfolio health Branch manager, collections manager, compliance officer
Retail & POS Daily sales by category, stock movement, margin analysis, returns, shrinkage Store manager, buyer, loss prevention
Property Management Rent roll, lease expiry pipeline, maintenance work orders, vacancy rate, arrears Property manager, asset manager, landlord reporting
Education ERP Enrolment figures, fee collection, outstanding balances, attendance, timetable conflicts Registrar, finance director, academic head
Government & Public Sector Case volumes, processing backlogs, compliance deadlines, budget consumption Department head, compliance officer, finance

The reports already exist. The AI layer simply makes them more accessible and useful.

Example Workflow

Overnight Processing

  1. Existing phantom jobs generate reports.
  2. A scheduled extractor reads PH and HOLD records.
  3. Structured facts are extracted into JSON.
  4. An AI agent generates role-specific summaries.
  5. Personalized digests are delivered automatically by email.

No changes are required to existing MultiValue business logic.

What the digest looks like

Using our working example — a produce distribution company running a MultiValue server — here is what currently lives in PH (phantom jobs) and HOLD (spooled reports) every morning:

INVENTORY REORDER REPORT                 Date: 06-07-2026   Time: 04:48pm
============================================================================================
Product   Name                      OnHand     Min   Short  ToOrder     Est. Value
--------------------------------------------------------------------------------------------
5972      Red Tomatoes                8999   10001    1002     2002     $43,803.76
4309      Butter Beans                  15    1001     986     1086     $76,128.60
1055      Pears                         45     180     135      153     $13,376.79
1701      Piñon Nuts                    50     150     100      115      $3,297.05
--------------------------------------------------------------------------------------------
Products needing reorder : 8
Estimated reorder value  : $143,273.02
Enter fullscreen mode Exit fullscreen mode
SLOW-MOVING / OVERSTOCK REPORT          Run: 06-07-2026  04:48pm
================================================================================
 Rank  Product Name                      OnHand  SoldYr  Excess     Excess Val
--------------------------------------------------------------------------------
    1  4303  Black Beans                  10620     165   10455  $1,132,590.15
    2  4054  Jalapeños                     8987     217    8770  $1,131,330.00
    3  9663  Chinese Cabbage               9395     224    9171    $910,221.75
    4  9632  Mandarin Oranges             10729     140   10589    $899,006.10
  ...154 more lines...
TOTAL (158 overstocked)                          $37,044,938.10
Enter fullscreen mode Exit fullscreen mode
ACCOUNTS RECEIVABLE REPORT                        Run: 06-07-2026  04:48pm
====================================================================================================
CustID  Customer Name              Orders    Ship Balance   Order Balance    Credit Limit    Status
----------------------------------------------------------------------------------------------------
7777    Betterway Store                 3       $9,598.69       $9,847.69      $20,000.00        OK
9999    Utotem Convenience              6      $21,336.36      $22,751.36      $32,000.00        OK
6873    Ko-Z Korner Store               6      $17,512.10      $18,468.26      $28,000.00        OK
Enter fullscreen mode Exit fullscreen mode

This is what the AI digest turns that data into, delivered to each audience at every morning.

Sample AI-generated digest report

Implementation Architecture: Tested on Rocket U2 (UniData and UniVerse) environments utilizing a local, on-premises LLM agent pipeline.

The diagram below shows the complete pipeline from overnight batch run to morning email delivery. The key boundary to notice is the one in the middle: raw PH and HOLD text stays entirely on the server side.Only a few tokens of highly compressed, structured JSON cross the network to the localized LLM environment.

Component 1 — JSON extraction schema

Every PH and HOLD report gets one schema entry. A single generic parser handles all of them. Adding a new report means adding one entry — no code changes to anything else.

# schema_registry.py — the only file that changes between domains
SCHEMAS = {
    "INV_REORDER": {
        "entity_fields": {
            "PRODUCT":  ["product_id", "name"],
            "QUANTITY": ["on_hand", "shortage", "to_order"],
            "MONEY":    ["est_value"],
        },
        "row_pattern": r'^(?P<product_id>\d{4})\s+(?P<name>[\w\s]+?)\s{2,}...',
        "alerts": [
            {"field": "shortage", "op": ">", "value": 100, "severity": "HIGH"},
            {"field": "on_hand",  "op": "=", "value": 0,   "severity": "CRITICAL"},
        ],
    },
    # SLOW_MOVING, RECEIVABLES, MONTHLY_SALES follow the same pattern
}
Enter fullscreen mode Exit fullscreen mode

Component 2 — Nightly extractor

The extractor executes overnight via a cron schedule or triggers directly from a MultiValue BASIC routine upon batch completion:

! From our existing batch program — fires after reports complete
EXECUTE "python3 /opt/digest/nightly_extractor.py"
Enter fullscreen mode Exit fullscreen mode

The script interfaces directly via native Python integration (such as u2py), pulling active PH and HOLD queue records. It executes schema-driven regex extraction, tags business entities with spaCy, and maps cross-document relationships using a NetworkX entity graph.

The output is consolidated into a single, immutable JSON audit file. Because every data point narrated by the LLM later maps cleanly to this JSON file, the system maintains a perfect trail of data lineage.

Component 3 — REST API

Create a REST FastAPI server. Returns the pre-computed JSON for any date. Zero computation at request time — pure file read, under 50ms.

@router.get("/digest/{run_date}")
def get_digest(run_date: str, token=Depends(verify_jwt)):
    path = OUTPUT_DIR / f"digest_{run_date.replace('-','')}.json"
    if not path.exists():
        raise HTTPException(404, "No digest for this date — extractor runs at 03:00")
    return json.loads(path.read_text())
Enter fullscreen mode Exit fullscreen mode

Component 4 — Extracted JSON

What crosses the network. Real output from the produce distribution example.

{
  "facts": {
    "reorder":    { "count": 8, "total_value": 143273.02,
                    "items": [{"name":"Butter Beans","shortage":986,"est_value":76128.60}] },
    "overstock":  { "count": 158, "total_excess": 37044938.10 },
    "receivables":{ "customers": 106, "total_balance": 1368842.78, "over_limit": [] }
  },
  "alerts": [
    {"severity":"CRITICAL","message":"Cherimoya ZERO STOCK — SKU 1307"},
    {"severity":"HIGH",    "message":"Butter Beans critically short — 986 units"}
  ],
  "entity_graph": {
    "nodes": 1705, "cross_report_edges": 674,
    "customers_in_multiple_reports": {
      "Betterway Store": ["OPEN_ORDERS","RECEIVABLES"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Fits local LLM model, no cloud required.

Component 5 — Autonomous AI agent

Operating every business morning, the orchestration agent fetches the pre-processed JSON data, filters priority exceptions based on target audiences, maps contextually relevant insights, and renders HTML briefings via automated email distribution.

AUDIENCES = {
    "executive":  {"recipients":["gm@co.com"],        "lens":"Revenue impact and top 3 actions only."},
    "operations": {"recipients":["warehouse@co.com"],  "lens":"Every alert. Full product names and quantities."},
    "finance":    {"recipients":["finance@co.com"],    "lens":"AR balances and credit utilisation only."},
}

for audience, cfg in AUDIENCES.items():
    narrative = ollama.chat(
        model="llama3",
        messages=[
            {"role":"system","content":"Use ONLY the provided numbers. End with 3 PRIORITY ACTIONS."},
            {"role":"user",  "content": f"{cfg['lens']}\n\n{json.dumps(facts)}"},
        ],
        options={"temperature": 0.2}
    )
    send_email(render_html(narrative, facts, alerts), cfg["recipients"])
Enter fullscreen mode Exit fullscreen mode

The agent autonomously decides which severity level each audience receives, whether to skip an audience if no relevant alerts exist, and what tone to use. The GM gets three bullets. The warehouse manager gets every product line. Finance gets AR only.
.

Benefits

Before After
Reports read by a few specialists Information reaches decision makers
Siloed reports Cross-report intelligence
Manual briefings Automated morning digests
Limited visibility Role-specific insights
Reactive decisions Earlier action

Beyond Daily Morning Briefings

While AI-generated morning briefings provide a quick summary of overnight batch processing results, the same architecture can evolve into a more intelligent operational assistant for MultiValue environments.

Because the AI agent receives structured JSON data extracted from existing PH and HOLD files, it can perform tasks beyond simple summarization.

Trend Analysis

The AI agent can compare current results with historical data and identify emerging trends.

Examples:

Inventory shortages increasing week-over-week
Growing accounts receivable balances
Rising transaction volumes
Recurring operational bottlenecks

Rather than reporting numbers, the AI can explain what is changing and why it matters.

Predictive Insights

By analyzing historical patterns, the AI agent can provide early warnings before issues become critical.

Examples:

Products likely to go out of stock within the next few days
Customers approaching credit limits
Growing payment exception trends
Potential workload spikes for support teams

This shifts operations from reactive monitoring to proactive management.

Data Quality Validation

The AI agent can act as an additional validation layer by checking report consistency and identifying anomalies such as:

Missing data
Unexpected value changes
Report format variations
Totals that do not reconcile

This helps improve confidence in nightly processing results.

Intelligent Recommendations

Instead of only describing issues, the AI agent can suggest possible actions.

For example:

Reorder inventory from preferred suppliers
Escalate high-risk accounts
Prioritize critical exceptions
Create operational follow-up tasks

This transforms reports into actionable business intelligence.

Conversational Operations Assistant

Future implementations could allow users to interact directly with the summarized data.

Examples:

Why did shortages increase today?
Which customers contributed most to overdue balances?
Show me the top five operational risks from last night's processing.

What This Changes

This approach modernizes a MultiValue environment without disrupting the systems that already work.

The batch jobs remain untouched.

The reports remain intact.

The operational knowledge built over years remains valuable.

What changes is accessibility: the right people receive the right information, in the right format, at the right time.

That is modernization without a rewrite.

Final Thoughts

Many MultiValue environments already possess the data needed to drive better decisions. The opportunity is not to replace existing systems, but to make their output more accessible and actionable.

By combining structured extraction, lightweight APIs, and local AI models, organizations can transform overnight reports into business-ready morning briefings without changing the applications that already work.

Modernization does not always require replacement.

Sometimes it simply means making existing information easier to use.

Top comments (0)