﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<data-set>
  <relations format-version="4" relations-version="20160101" main-table="LLMPrompt" stable-sharing="True">
    <link from="LLMPrompt (PromptID)" to="LLMPrompt (PromptID)" type="FromMaster" updateable="False" />
  </relations>
  <layout>
    <table name="LLMPrompt" recursion="(PromptID) = (PromptID)" />
  </layout>
  <data>
    <LLMPrompt>
      <row PromptID="PROJ_EXEC_SUM" IsActive="0" Name="Project Executive Summary (CUST)" ConnectionID="MYOB-MANAGED" ScreenID="PM301000" ActionName="Generate Executive Summary">
        <column name="PromptInstruction"><![CDATA[<html><head><style type="text/css">/* RTE style begin */
body.rich {
    margin: 0px;
    padding: 0px;
    font-family: Arial;
    font-size: 14px;
}

.rich ol, .rich ul { margin-top: 0px; margin-bottom: 0px;}
.rich .imgbrdr {
    border: solid 1px;
}
.richIcon {
    display: inline-block;
    background-image: url(Images/sprite_main5.png);
    background-repeat: no-repeat;
    width: 15px;
}
.richAttach {
    background-position: -2px -122px;
}
.richImg {
    background-position: -2px -1120px;
}
.richScreen {
    background-position: -24px -1032px;
}
.richArticle {
    background-position: -24px -1054px;
}

/* Correct box */
.rich .GrayBox {
    border: solid 1px #CCCCCC;
    background-color: #F9F9F9;
    padding: 4px;
    /*margin: 4px;*/
    width: 98%;
}
.rich .hintcell
{
    height: 36px;
    width: 32px;
    vertical-align: middle;
}

.rich .warncell
{
    height: 36px;
    width: 32px;
    vertical-align: middle;
}

.rich .boxcontent{ width: 100% }
.rich pre { font-size:1.3em }

.rich iframe{
    border: none;
}
.rich iframe.iframeBorder, .rich img.iframeBorder {
    border: solid black 1px;
}

.rtetable > tbody > tr > td, .rtetable > tr > td { white-space: nowrap }
.rtetable:not(.header-no-style) > tbody > tr:first-child > td, .rtetable:not(.header-no-style) > tr:first-child > td { background-color: #f4f5f7 }


.rich pre.source-highlighted {background-color: #F0F0FF;}
.rich pre.source-highlighted .nu, .rich .sourcetable .nu { color: brown; }
.rich pre.source-highlighted .kw, .rich .sourcetable .kw { color: blue; }
.rich pre.source-highlighted .cmt, .rich .sourcetable .cmt { color: green; }
.rich pre.source-highlighted .sl, .rich .sourcetable .sl { color: brown; }
.rich pre.source-highlighted .br, .rich .sourcetable .br {color: darkgreen; }

.rich pre.source-highlighted .add, .rich .sourcetable .add { background: palegreen; }
.rich pre.source-highlighted .del, .rich .sourcetable .del { background: pink; }

.rich table, .rich tr, .rich td, .rich img, .rich iframe {
    cursor: default;
}
.layout .rtecell {
    vertical-align: top;
    font-size: small;
}
.rtetable > tbody > tr > td, .rtetable > tr > td { vertical-align: top; }

.rich p{
    margin:0px 5px 0px 0px;
}
.rich .align-center{
    text-align: center;
}
.rich .align-right{
    text-align: right;
}
.rich .align-left{
    text-align: left;
}
.rich li[style*='text-align: center'], .rich li[style*='text-align: right'] {
list-style-position: inside;
}

.rtetable { empty-cells: show; border: solid 1px black; border-collapse:collapse; }
.rtetable > tbody > tr > td, .rtetable > tr > td {
    border: solid 1px black;
    height: calc(1.5em + 14px);
    min-width: 20px;
    padding: 0px 5px;
    line-height: 1.428em;
}

.rich table.rtetable {
    font-family: arial;
    font-size: small;
    margin: 10px 0;
}

.rich .rtetable > tbody > tr > td, .rich tbody > tr > th {
    border-width: 1px;
    border-style: solid;
    border-color: #c1c7d0;
    padding: 7px 10px;
    vertical-align: top;
    text-align: left;
    min-width: 8px;
}

.rich .rtetable > tbody > tr > th {
    background-color: #f4f5f7;
}

.rich blockquote.shift {
    margin-right: 0px;margin-top: 0px; margin-bottom: 0px;
}
.rich img[data-expand] {
    display: block;
}
.rich p, .rich p.richp  {font-family: arial; font-size: small}
.rich blockquote.shift h1, .rich blockquote.shift h2, .rich blockquote.shift h3, .rich blockquote.shift h4, .rich blockquote.shift h5, .rich blockquote.shift h6 {
    margin-top: 0px;
}
.rich, .rich * {
    word-wrap: break-word;
}
.sourcetable {background-color: #F0F0FF; font-family: monospace; width: 100%}
.sourcetable tr {
    margin: 0px;
    padding: 0px;
}
.sourcetable td {
    margin: 0px;
    padding: 0px;
    white-space: nowrap;
}
.sourcetable > tbody > tr > td:first-child, .sourcetable > tr > td:first-child
{
    width:1px;
}

.filelist {
    /*display:inline-block;*/ padding: 5px;
}

.rich .toc {
    /*display:inline-block;*/ padding: 5px;
}
.rich .toc .header,.rich  .wikilist .header,.rich  .filelist .header {
    font-size: 1.7em;
}
.rich .toc li,.rich  .filelist li {
    margin: 5px 0px;
}
.rich .wikilist div {
    margin: 10px;
}

.rich .layout {min-height: 2.5em; display:table; width:100%; border-spacing:5px; table-layout:fixed; empty-cells: show;}
.rich .layout .rtecell {display:table-cell; height: 2.5em}
.rich .layout .rteside {width: 25%}

/*
.rtetable {
    border-collapse:collapse;
}
.rtetable > tbody > tr > td, .rtetable > tr > td {
    border: 1px solid #ddd;
    padding: 7px 10px;
    vertical-align: top;
    text-align: left;
}*/
.rich blockquote.realbq {
    border-left-color: lightblue;
    border-left-width: 1px;
    border-left-style: solid;
    margin-top: 0px;
    margin-bottom: 0px;
    padding-left: 5px;
}
.rich body {font-family: arial; font-size: small}

.rich .GrayBox {
    margin-left: 8px;
}

.rich .sourcetable { font-size:1.3em;}
/* RTE style end */</style></head><body class="rich"><p><span style="font-family: Arial; font-size: 14px;">## Context Instructions</span></p><p><span style="font-family: Arial; font-size: 14px;">You are an AI assistant working in Acumatica ERP. Act as a project controls analyst preparing a concise status update for executives and clients. Write in professional Australian English. Be factual and neutral: report only what the supplied data shows, never invent figures, dates, risks, or commitments. Round currency to whole dollars and always state the figures that justify any statement you make about progress or budget position.</span></p><p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">## Task Description</span></p><p><span style="font-family: Arial; font-size: 14px;">Produce a short, at-a-glance executive summary of a single project's current status — its stage, who owns it, its budget-versus-actual position, and the state of its tasks — written for a reader who has not opened the project.</span></p><p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">## Instructions with Input Data</span></p><p><span style="font-family: Arial; font-size: 14px;">Summarise the status of this one project using only the data below. Do not compare it to other projects and do not infer a portfolio view.</span></p><p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">Project header:</span></p><p><span style="font-family: Arial; font-size: 14px;">- Project ID: ((Project.ContractCD))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Project description: ((Project.Description))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Status: ((Project.Status))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Customer: ((Project.CustomerID.AcctName))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Project manager: ((Project.OwnerID.DisplayName))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Start date: ((Project.StartDate))</span></p><p><span style="font-family: Arial; font-size: 14px;">- End date: ((Project.ExpireDate))</span></p><p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">Project-level budget vs actual (revenue summary):</span></p><p><span style="font-family: Arial; font-size: 14px;">- Revised budgeted revenue: ((ProjectRevenueTotals.CuryRevisedAmount))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Actual revenue to date: ((ProjectRevenueTotals.CuryActualAmount))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Invoiced to date: ((ProjectRevenueTotals.CuryInvoicedAmount))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Remaining to invoice: ((ProjectRevenueTotals.CuryAmountToInvoice))</span></p><p><span style="font-family: Arial; font-size: 14px;">- Contract completed (%): ((ProjectRevenueTotals.ContractCompletedPct))</span></p><p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">Tasks on this project:</span></p><div data-foreach-view="Tasks"><p><span style="font-family: Arial; font-size: 14px;">- Task ((Tasks.TaskCD)) — ((Tasks.Description)) — Status ((Tasks.Status)) — Completed ((Tasks.CompletedPercent))%</span></p></div><p><span style="font-family: Arial; font-size: 14px;"><br></span></p>Write the summary so it covers, in this order: (1) one opening line naming the project, its customer and its current status; (2) the budget-versus-actual position, quoting revised budget, actual and amount remaining to invoice, and the overall completion percentage; (3) a brief read on task progress (how many tasks, how many completed/in progress, and any notable in-progress task). Keep it to roughly 90–130 words as well-formed HTML: two or three short <p> paragraphs, optionally with a short <ul> for the budget-versus-actual figures. Use only <p>, <ul>, <li>, <strong>; no markdown. If a figure is missing, omit that point rather than guessing.<p><span style="font-family: Arial; font-size: 14px;"><br></span></p><p><span style="font-family: Arial; font-size: 14px;">## Output Data Field</span></p><p><span style="font-family: Arial; font-size: 14px;">Generate the following and return it in the output field:</span></p>1. @((Project.UsrMYDEExecSummary))(string): The finished executive summary as well-formed HTML — two to three short <p> paragraphs (optionally a <ul> for the budget figures); clean HTML only (<p>, <ul>, <li>, <strong>), no <html>/<body>/wrapper, script or style tags, no markdown.</body></html>]]></column>
        <column name="OutputExamples"><![CDATA[## Output Format Example:
{
  "((Project.UsrMYDEExecSummary))": "<p>Office Fitout for ABC Constructions is currently Active, managed by J. Smith. The project commenced in March 2026 with expected completion in October 2026.</p><p>Financially the project is tracking well: revised budgeted revenue is $480,000, with $312,000 recognised as actual to date and $90,000 still remaining to invoice. The contract is approximately 65% complete.</p><p>Of 8 project tasks, 5 are complete and 2 are in progress — notably Level 3 joinery — with 1 not yet started. No tasks are on hold.</p>"
}

## Important Note:
  Return only valid JSON containing exactly the one output key from the Instructions tab
  ("((Project.UsrMYDEExecSummary))") and no other keys. Do not wrap the JSON in markdown
  fences, and do not add any commentary before or after it. The value must be a well-formed HTML
  string (<p> paragraphs, optionally a <ul> for figures), with no wrapper/script/style tags and no
  markdown, respecting every formatting rule stated on the Instructions tab.]]></column>
      </row>
    </LLMPrompt>
  </data>
</data-set>