About
Applied Physics
AI Solutions
Team Contact
PHASE 1 · GROUNDED Q&A + GANTT · 4–6 WEEKS

Answers in English, numbers from the solver.

The first phase a client can actually use. Ask a question in plain language; the system picks a query, runs it against the graph, solves the schedule with a constraint solver, and lets the local LLM write the sentence around results it is not allowed to invent. Every number is substituted, never generated. Every claim carries a fact ID.

GlassBox Console OILSIM · as-of 2026-05-06 · transaction time
Is milestone M3 still achievable, and what is driving the risk?

Milestone M3 is not achievable on its current date. The earliest feasible completion is 20 June 2026, which is 9 days beyond the committed date gbx:event10042.

The driver is a vendor deliverable that slipped three weeks gbx:event9981. It sits on the critical path through PROJ-142, so its slack is negative and no resequencing of the remaining tasks recovers the date solve:cpsat-4471.

Note that this slip was true from 28 April but only reached the system on 6 May, three days after the go decision gbx:event9981.

✓ 3 of 3 claims cited · citations verified against source facts
critical path · resource-levelled · as-of 2026-05-06
Design freeze
PROJ-101 build
Vendor deliverable 7+3w
PROJ-142 integrate
QA cycle
Milestone M3
Apr 1Apr 20May 10Jun 1Jun 20
critical path complete float available committed M3 date
▾ proof · "earliest feasible completion is 20 June 2026"
query template milestoneFeasibility · params M3, as-of 2026-05-06
fact gbx:task142 dependsOn gbx:vendorDeliverable7 gbx:event9981
source jira · PROJ-142 changelog · valid 2026-04-28 · observed 2026-05-06
solve CP-SAT cpsat-4471 · critical path 44d · slack −9d · 0.4s
narration qwen3-14b · temp 0 · numbers substituted, not generated
✓ deterministic · same events + same query = same answer SPARQL 34ms · CP-SAT 0.4s · narration 1.2s local model · no data left the network
End-of-phase demo The May-3 audit demo runs end to end on a real Jira export: re-derive an old status report byte-identically, then show the four facts that were true but unknown when the decision was made.
01 · Where phase 1 fits

The stack after this phase

Phase 0's foundation gets its first four consumers: structured retrieval, the constraint solver, a tightly bounded LLM, and the interface a client actually touches. The canvas and full GraphRAG come later.

L7Presentation

Answer console, critical-path Gantt, as-of slider, proof explorer v1. React · frappe-gantt

new
L6Local LLM

Two jobs only: pick a query template from the question, and narrate results with enforced citations. LM Studio · temp 0

new
L5Business-logic canvas

Client-specific rules arrive next phase. React Flow

phase 2
L4Symbolic core · CP-SAT

Critical path, slack, resource-levelled projection, what-if scenarios. OR-Tools

new
L3Retrieval · templates

A library of about 30 parameterized SPARQL templates. Vectors and prose come in Phase 3. SPARQL 1.1

partial
L2Knowledge graph

Built in Phase 0, now queried in anger. Oxigraph

running
L1Dual-clock EventDB

Now also logs every question, query, solve, and model call. PostgreSQL

running
L0Connectors · Jira

Unchanged from Phase 0. webhooks + backfill

running
The phase where it becomes usableexecutive briefing

Phase 1 is where your team can start asking questions in ordinary English and getting answers they can defend. It adds four things to the foundation: a library of the questions project managers actually ask, a scheduling engine that works out what is genuinely on the critical path, a local AI that writes the answer, and a screen that shows the working behind every claim.

This is the phase that wins or loses the business case, because it is the first time anyone outside the build team sees value.

DurationFour to six weeks after Phase 0. Roughly two months from a standing start to a usable system.
Who benefits firstPMO and programme leads. The weekly status pack stops being assembled by hand from screenshots.
HardwareA single machine. A graphics card makes answers faster but is not required for correctness.
02 · Phase 1 architecture

The query path, and the wall down the middle of it

Read the diagram left to right and the design argument is visible: the language model sits in two small amber boxes at the edges, and everything that produces a number, a date, or a comparison sits in the deterministic band between them. The dashed line is the boundary that agent products do not have.

Web UI · answer console question · as-of date · clock selector 1 Orchestrator API · FastAPI binds as-of scope to every downstream call Audit sidecar writer query hash · fact IDs · rule and model versions · as-of NEURAL PLANE · LANGUAGE ONLY · TEMPERATURE 0 · EVERY CALL LOGGED AS AN EVENT 2 natural-language question, no data values in the prompt yet Intent classifier structured · narrative · mixed Template selector + parameter fill picks 1 of ~30 queries · chosen query shown to user Template registry versioned SPARQL 1.1 · hand written · reviewed SYMBOLIC PLANE · DETERMINISTIC · THIS IS WHERE EVERY NUMBER COMES FROM 3 a chosen template plus bound parameters, never free-form generated SQL Knowledge graph · Oxigraph scoped to as-of date and clock PROV-O links kept with every row Query executor SPARQL 1.1 · exact result set 34ms typical on a 200k triple graph Schedule solver · OR-Tools CP-SAT resource-constrained, so critical path is correct critical path · slack · earliest feasible date · what-if 4 Result set · typed values with provenance { earliest_finish: 2026-06-20, slack_days: -9, critical: [PROJ-142, vendorDeliverable7], facts: [event9981, event9967] } NEURAL PLANE · NARRATION ONLY Narrator writes sentences around the result set · must cite a fact ID per claim · numbers substituted after generation 5 Citation verifier each cited ID must exist and support its claim unsupported sentences flagged or dropped before display 6 7 verified answer returns the model never sees a calculator, a calendar, or a comparison operator. it receives finished values and writes prose around them. every prompt, response, model id and weights hash is stored as an event, so an answer from six months ago can be re-derived exactly.
symbolic, deterministic neural, language only persistent store
The wall down the middle of the diagramexecutive briefing

This is the most important picture in the whole proposal. The amber boxes are the AI. They appear only at the two ends: understanding what you asked, and phrasing the reply. Everything between them, every date, comparison and calculation, happens in the deterministic middle band.

Put bluntly: the language model is never given a calculator, a calendar, or a decision to make. It receives finished figures and writes prose around them. If the model has a bad day, the sentence reads oddly. The number is still right.

Why this matters commerciallyPublished research shows AI hallucination cannot be eliminated, only contained. This architecture contains it structurally.
The verification stepBefore you see an answer, a separate check confirms every sentence is supported by a real record. Unsupported claims are removed.
Model independenceChange the AI model tomorrow and the reported figures do not move. Only the writing style changes.
03 · What gets built

Six components, one strict boundary

The boundary is the whole design: the LLM chooses which question to ask the graph and writes prose around the result. It never computes, compares, or dates anything.

Query template library

About 30 parameterized SPARQL queries covering the questions PMs actually ask. Template-first beats free-form generation, and every query is shown before it runs.

SPARQL 1.1

CP-SAT scheduler

Resource-aware critical path, slack, and earliest feasible dates. Classic CPM without resource constraints misidentifies critical tasks, so we never use it.

OR-Tools (Apache-2.0)

Narration with citations

The model writes only from retrieved facts, and every sentence must carry fact IDs. Numbers are substituted from query results after generation.

local LLM · temp 0

Citation verifier

A post-hoc check that each cited ID exists and supports its claim. Uncited or unsupported sentences are flagged or dropped before display.

NLI-style check

Gantt with as-of slider

Critical path and slack overlays, redrawn from historical graph state as the slider moves. Time-scrubbing a schedule is the demo people remember.

frappe-gantt (MIT)

Proof explorer v1

Click any claim to unfold facts, queries, solver runs, source events, and both timestamps. Ugly is acceptable in v1; complete is not optional.

PROV-O traversal
What the six pieces do for the businessexecutive briefing

Two of these deserve attention. The scheduling engine is the same class of technology used in industrial planning: it accounts for who is actually available, rather than assuming unlimited resources. That is why its view of the critical path can differ from your current tool's, and usually why it is right.

The citation checker is the other. It is an automated referee that reads the AI's answer and deletes any sentence it cannot trace to a record. You only ever see the sentences that survived.

About the critical pathClassic scheduling ignores resource limits and therefore misidentifies which tasks are truly critical. We solve it properly.
Question coverageAround thirty question templates cover the large majority of routine PMO enquiries. They are reviewed, versioned and shown before running.
What-if analysisMoving a person or a date is solved, not estimated. You get a defensible earliest finish date rather than an opinion.
04 · Under the hood

How a question becomes a cited answer

Five stages, and the language model touches only the first and the fourth. Everything load-bearing happens in between.

interpret

Question to template

The model classifies intent and fills parameters. The chosen query is shown to the user.

retrieve

SPARQL on the graph

Exact, deterministic results, scoped to the selected as-of date and clock.

compute

CP-SAT solve

Critical path, slack, feasible dates. Every number in the answer originates here.

narrate

Sentences with IDs

The model writes prose around the results and must cite each claim.

verify

Citation check

Unsupported sentences are flagged or removed. Then the answer is shown.

guardrail numbers substituted from results, never generated guardrail temperature 0, model and weights hash logged guardrail every prompt and response stored as an event guardrail free-form query generation only as a shown fallback
The journey of a single questionexecutive briefing

You ask something. The system decides which of its known question types you meant and shows you the query it is about to run. It fetches exact records, calculates the schedule, hands the finished figures to the AI to phrase, then checks that phrasing against the records before displaying it.

The guardrails listed underneath are contractual commitments, not aspirations. Every prompt, every reply, and the exact model version are stored, so an answer given today can be reproduced and explained years later.

SpeedRoughly a second for the data work, a few seconds for the writing. Comparable to waiting for a report to open.
TransparencyThe query is shown before it runs. Nothing is retrieved on your behalf that you cannot see.
ConsistencyThe same question with the same as-of date returns the same numbers, every time, by design.
05 · Acceptance

Exit criteria and the client demo

This is the phase that wins deals, so its acceptance bar is the sales demo itself.

The May-3 audit demo

  1. Open the status report the client's team received on 3 May.
  2. Re-derive it today, as of 3 May on the transaction clock. It is identical.
  3. Switch to the valid clock at the same date. Four facts appear that nobody knew.
  4. Open the Gantt: the vendor slip was already on the critical path that morning.
  5. Click the claim, unfold the proof, land on the raw Jira payload.
  6. Close with the question no agent product can answer: "what would you have shown me?"
The demonstration that closes the argumentexecutive briefing

The acceptance test is a specific scenario run on your own data. We take a status report your team received on a past date, regenerate it exactly, then switch to the other clock and reveal the facts that were true that morning but had not yet reached anyone. Finally we open one claim and follow it down to the original ticket.

No competing product can perform this demonstration, because their reasoning happened in a context window that no longer exists.

Best audienceAnyone who has been burned by a surprise slip. The demo answers "could we have known?" with evidence.
Preparation neededOne historical status report and the corresponding project export. Nothing is staged or pre-selected by us.
Decision pointThis is the natural go or no-go gate. Roughly two months in, with a working system rather than a prototype.