Microsoft Fabric · Data Platform

Discovery Agent

An AI agent for the pre-build discovery phase of a Fabric data-platform engagement. It ingests meeting transcripts, emails and questionnaires, and maintains a citation-backed requirements catalog, an ADR-style decision log, and surfaces contradictions & gaps — to cut billable discovery hours and produce a defensible trail of who decided what, and why.

6 sub-agents + workflow Foundry coordinator Teams bot Verified live on gpt-5.4 (Foundry, uksouth)

What it does One ingestion event in → an updated, defensible engagement record out.

📥 Ingest anything

A Teams meeting transcript, a forwarded client email, or a filled-in questionnaire. The agent normalizes each into structured, redacted text.

🧾 Build the catalog

Every requirement, decision and open question is extracted with a verbatim citation back to the source, and written into a structured catalog & decision log.

🔎 Surface the hard bits

Contradictions across meetings, missing owners, and unanswered questions are flagged — then turned into a draft next-meeting agenda and follow-up emails for the consultant.

Why it matters

Goal
Reduce consultant hours in discovery (target ~40%) and make the offering cheaper.
Defensibility
Every requirement cites its source; every approved decision carries real approval evidence. Wins the “who approved that?” argument 18 months later.
Human-in-the-loop
The agent flags, the human decides. It never auto-resolves a contradiction, never sends an email, never invents an approver.
Client-facing
The engagement repo is itself a client deliverable — internal-grade structure, client-presentable surface (Teams + SharePoint).

The headline run (real, live gpt-5.4)

Two meetings ingested for a sample asset-management engagement (“Meridian”). Numbers below are from an actual end-to-end run.

22

cited items extracted across two meetings — 0 hallucinated citations

4

decisions tracked as ADRs; the decision-log index matched the ADRs 1:1

2

genuine contradictions surfaced as open questions — neither auto-resolved

Jump to the scenario walkthrough to step through it.

The pipeline One ingestion event runs through seven stages against a single engagement repo. Click a stage.

Inputs & outputs Three ways data comes in; one coherent engagement record comes out.

What the agent produces (the engagement repo)

OutputWhat it isWritten by

Trace one requirement, end to end

The same item as it moves from raw transcript → cited extraction → catalog → (later) refined.

Trace one decision, end to end

Requirements catalogue — Meridian Capital

Fabric Data Platform — Adviser Analytics · phase design_refinement · in-review

Rendered from the real requirements-catalog.yaml. Click any ID to jump to it.

📖 Open the full catalogue explorer — a navigable, searchable site →

Conceptual model — which dimensions relate to which fact (click a node)

f_aum_snapshotfact · adviser x monthd_adviserD-001d_regionD-002d_productD-003
★ schema for f_aum_snapshot — sourced from SE-002

Logical model — entities, columns, keys & relationships · the modeller (#56412) output

FK_AdviserIDFK_RegionIDFK_ProductID ⚠ DQ-001d_adviserAdviserID · PKAdviserNaturalID · NKAdviserName… +SCD2 audit colsd_regionRegionID · PKRegionNaturalID · NKRegionNameRegionCode · SCD1d_productProductID · PKProductNaturalID · NKProductName… +SCD2 audit colsf_aum_snapshotAUMSnapshotNaturalID · NKFK_AdviserID → d_adviserFK_RegionID → d_regionFK_ProductID → d_product ⚠+ MonthEnd, AUM, AUM_PriorMonth
Star schema · f_aum_snapshot grain adviser × month · 3 conformed dimensions. ⚠ FK_ProductID unresolved — see DQ-001. Click an entity for its columns.
PK surrogate   NK natural   FK foreign key   SCD2 history   DQ flag
d_adviser dimension grain adviser · SCD2 · from SE-001
ColumnTypeNull?KeyNotes
AdviserIDstringnoPKSurrogate — deterministic hash of the natural key
AdviserNaturalIDstringnoNKadviser_ref from the CRM
AdviserNamestringyes
AdviserEmailstringyesPII
RegionNamestringyesDescriptive — adviser home region
Statusstringnodefault 'active'
Valid_FromtimestampnoSCD2effective-from
Valid_TotimestampyesSCD2null = current row
Is_CurrentbooleannoSCD2current-row flag
d_region dimension grain region · SCD1
ColumnTypeNull?KeyNotes
RegionIDstringnoPKSurrogate
RegionNaturalIDstringnoNKregion_ref
RegionNamestringyes
RegionCodestringyes
d_product dimension grain product line · SCD2 · status: draft (D-003)
ColumnTypeNull?KeyNotes
ProductIDstringnoPKSurrogate
ProductNaturalIDstringnoNKproduct_ref
ProductNamestringyes
ProductLinestringyes
Valid_FromtimestampnoSCD2
Valid_TotimestampyesSCD2
Is_CurrentbooleannoSCD2
f_aum_snapshot fact grain adviser × month · from SE-002
ColumnTypeNull?KeyNotes
AUMSnapshotNaturalIDstringnoNKcomposite adviser_ref|month_end
FK_AdviserIDstringnoFK → d_adviser
FK_RegionIDstringnoFK → d_region
FK_ProductIDstringnoFK → d_product DQ-001100% 'NO_PRODUCT' — silver→product join broken
MonthEnddatenograinsnapshot month-end
AUMdecimal(18,2)nomeasure (M-001)
AUM_PriorMonthdecimal(18,2)yesmeasure — for MoM % (M-002)
LastModifiedDatetimestampnowatermarkincremental key

1 · Use cases

IDUse caseSponsorSuccess criteriaStatusLinks
UC-001Month-end board reporting
Board, Exec
Alex HardyChief Distribution OfficerBoard pack auto-produced by 5th working day with adviser performance by region and product lineapprovedD-0003
📋 Q2.2🎙 00:00:14
UC-002Adviser performance monitoring
Distribution leadership, Regional heads
Maria OkaforHead of Distribution OpsEarly-warning view of advisers whose AUM is declining, refreshed for regional headsconfirmed
📋 Q2.3🎙 00:00:25

2 · User stories

IDStoryUse caseOwnerSourcesMetricsStatusSrc
US-001As a board member I want the month-end board pack to show adviser performance by region
→ superseded by US-010
UC-001Alex HardyCDOS-001 S-002M-001confirmed
🎙 00:00:14
US-010As a board member I want the month-end board pack to show adviser performance by region AND product line, monthlyUC-001Alex HardyCDOS-001 S-002M-001confirmed
🎙 00:00:08
US-002As a regional head I want advisers flagged when AUM drops >10% month-on-month
→ superseded by D-0004
UC-002Maria OkaforHead of Distribution OpsS-002M-002confirmed
🎙 00:00:25
US-003As a regional head I want a self-service dashboard refreshed dailyUC-002Maria OkaforHead of Distribution OpsS-001 S-002confirmed
🎙 00:00:33
US-005As a board member I want the AUM trend over the last 12 months, not just a snapshotUC-001Alex HardyCDOS-002M-003confirmed
🎙 00:01:46
US-011As an auditor I want a data-lineage view showing where each reported figure came fromUC-001TBDAuditordraft
🎙 00:02:20

3 · Source systems

S-001 Salesforce CRM Salesforce approved
BusinessMaria OkaforHead of Distribution Ops
TechnicalDev PatelCRM Platform Lead
DataMaria OkaforHead of Distribution Ops
Access: REST API (Bulk API 2.0) + nightly exportRefresh: nightlyVolume: 2,400,000 rows, 18.0 GB, +12.0%/yrClass: confidentialPII: name, email, phone
📋 Q4.1 (S-1)🎙 00:00:55
S-002 Finance / AUM ledger In-house (Oracle) confirmed
BusinessRaj SinghFinance Director
TechnicalDev PatelCRM Platform Lead
DataRaj SinghFinance Director
Access: DB read replica (ODBC)Refresh: nightlyVolume: 58,000,000 rows, 140.0 GB, +20.0%/yrClass: internalno PII
📋 Q4.1 (S-2)🎙 00:01:26
S-003 Custodian feed Multiple custodians draft
BusinessRaj SinghFinance Director
TechnicalTBDstakeholder
DataTBDstakeholder
Access: Refresh: weekly file dropVolume: Class: no PII
📋 Q4.1 (S-3)

4 · Data-quality findings

IDSourceIssueSevAffectsOwnerRemediationStatus
DQ-001S-002FK_ProductID is 100% 'NO_PRODUCT' on the AUM snapshot — silver→product join brokenhighUS-010Raj SinghFinance DirectorConfirm product key mapping in finance ledger; fix silver join before product-line reportingopen
DQ-002S-001Wealth-team advisers are not yet in the CRM — still on the old spreadsheetmediumUS-001 US-010Maria OkaforHead of Distribution OpsMigrate wealth-team advisers to CRM, or define an interim sourceopen

5 · Conformed silver entities

IDEntityGrainBusiness keySCDOwnerSourcesStatus
SE-001conformed_adviserone row per adviseradviser_refscd2Maria OkaforHead of Distribution OpsS-001confirmed
SE-002aum_snapshotone row per adviser per monthadviser_ref month_endnoneRaj SinghFinance DirectorS-002confirmed

6 · Fact × Dimension × Metric matrix

f_aum_snapshot grain adviser x month · owner Raj SinghFinance Director
conformed dims: d_adviser d_region d_product · from SE-002
IDMetricDefinitionUsed byPlacementOwnerStatus
M-001AUM
AUM (month-end), AUM by region, AUM by product line
Assets under management at month-end, summed to the reporting grainUS-010Board pack p.1; regional dashboardRaj SinghFinance Directorconfirmed
M-002AUM MoM change %
MoM %, MoM % vs PY
(AUM_this_month - AUM_prior_month) / AUM_prior_monthUS-002Adviser early-warning viewMaria OkaforHead of Distribution Opsdraft
M-003AUM 12-month trend
rolling 12m, YTD, FYTD
AUM by month over a rolling 12-month windowUS-005Board pack trend chartRaj SinghFinance Directorconfirmed

7 · Dimensions

IDDimensionGrainSCDSource SEOwnerStatus
D-001d_adviseradviserscd2SE-001Maria OkaforHead of Distribution Opsconfirmed
D-002d_regionregionscd1Maria OkaforHead of Distribution Opsconfirmed
D-003d_productproduct linescd2Raj SinghFinance Directordraft

8 · Non-functional requirements

IDCategoryRequirementTargetOwnerStatus
NFR-001SLABoard pack ready by the 5th working day of the month<= 5th working day, 99% of monthsAlex HardyCDOconfirmed
NFR-002Data residencyAll client data remains in the UK regionUK South only; no cross-region replicationDev PatelCRM Platform Leadconfirmed
NFR-003RetentionRetain monthly AUM snapshots7 yearsRaj SinghFinance Directordraft

9 · Open questions & contradictions

OQ-001open→ resolve in sources_qualityRaj SinghFinance Director
Which system owns the fee data — CRM or finance?
surfaced from: transcript kickoff @ 00:01:38: 'let's park the fee ownership question'
OQ-002open→ resolve in design_refinement
Reporting cutoff: 5th working day or 5th calendar day?
surfaced from: transcript kickoff @ 00:01:58
OQ-003open→ resolve in sources_quality
⚠ CONTRADICTION (requirement-vs-requirement): is the client source of truth the CRM (kickoff) or the finance system (follow-up)?
surfaced from: A) US-003 'CRM is the source of truth' vs B) follow-up @ 00:02:10 'finance system should own the client list, not the CRM'

10 · Decision log

IDDecisionStatusDecidedApproverEvidenceAffects
D-0001Use the CRM as the system of record for the client-adviser relationshipapproved2026-05-12Priya ShahmeetingUS-003 S-001
D-0002Defer the fee-data ownership decision until Raj is presentproposedRaj Singh
D-0003Self-service dashboard refresh frequency set to dailyapproved2026-05-19Maria Okaforteams-cardUS-003
D-0004Drop the 10% AUM-drop flag from the current phase scopeapproved2026-05-19Alex HardymeetingUS-002

Logged questionnaire response

Submitted by Priya Shah (Meridian Capital) on 2026-05-08.

Q-IDAnswer
Q1.1Alex Hardy, Chief Distribution Officer, alex.hardy@meridiancapital.com
Q1.5Dev Patel, CRM Platform Lead (technical approver)
Q1.6Alex Hardy, CDO (business approver)
Q2.2The month-end board pack, produced automatically by the 5th working day
Q2.3a) Which advisers are under-performing? b) AUM by region and product line? c) 12-month AUM trend?
Q3.2Month-end takes 3 days of manual Excel; no single adviser view
Q4.1 (S-1)Salesforce CRM
Q4.2 (S-1)Maria Okafor, Head of Distribution Ops
Q4.7 (S-1)Modified-date column (SystemModstamp)
Q4.8 (S-1)Yes — name, email, phone
Q4.1 (S-2)Finance / AUM ledger (Oracle, in-house)
Q8.2All client data must remain in the UK
▸ raw requirements-catalog.yaml (verify the schema)
frontmatter:
  template_version: '0.2'
  template_type: requirements-catalog
  engagement:
    client: Meridian Capital
    project: Fabric Data Platform — Adviser Analytics
    start_date: '2026-05-12'
  phase: design_refinement
  phase_signoff:
    use_case: SO-001
    data_custodians: SO-002
  status: in-review
  linked_questionnaire: 00-intake/responses/2026-05-08-meridian-intake.md
  linked_decisions_dir: 03-decisions/records
use_cases:
- id: UC-001
  title: Month-end board reporting
  audience: Board, Exec
  sponsor:
    name: Alex Hardy
    role: Chief Distribution Officer
    email: alex.hardy@meridiancapital.com
  success_criteria: Board pack auto-produced by 5th working day with adviser performance
    by region and product line
  status: approved
  source:
  - type: questionnaire
    ref: Q2.2
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:14
    quote: the month-end board pack has to show adviser-level performance broken down
      by region
  linked_decisions:
  - D-0003
- id: UC-002
  title: Adviser performance monitoring
  audience: Distribution leadership, Regional heads
  sponsor:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  success_criteria: Early-warning view of advisers whose AUM is declining, refreshed
    for regional heads
  status: confirmed
  source:
  - type: questionnaire
    ref: Q2.3
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:25
    quote: flag any adviser whose AUM dropped more than ten percent month on month
  linked_decisions: []
user_stories:
- superseded_by: US-010
  id: US-001
  story: As a board member I want the month-end board pack to show adviser performance
    by region
  use_case: UC-001
  owner:
    name: Alex Hardy
    role: CDO
    email: alex.hardy@meridiancapital.com
  linked_sources:
  - S-001
  - S-002
  linked_metrics:
  - M-001
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:14
    quote: adviser-level performance broken down by region
  linked_decisions: []
- id: US-010
  story: As a board member I want the month-end board pack to show adviser performance
    by region AND product line, monthly
  use_case: UC-001
  owner:
    name: Alex Hardy
    role: CDO
    email: alex.hardy@meridiancapital.com
  linked_sources:
  - S-001
  - S-002
  linked_metrics:
  - M-001
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/followup-2026-05-19.vtt
    timestamp: 00:00:08
    quote: by region AND product line now, still monthly
  linked_decisions: []
- superseded_by: D-0004
  id: US-002
  story: As a regional head I want advisers flagged when AUM drops >10% month-on-month
  use_case: UC-002
  owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  linked_sources:
  - S-002
  linked_metrics:
  - M-002
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:25
    quote: dropped more than ten percent month on month
  linked_decisions: []
- id: US-003
  story: As a regional head I want a self-service dashboard refreshed daily
  use_case: UC-002
  owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  linked_sources:
  - S-001
  - S-002
  linked_metrics: []
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:33
    quote: a self-service dashboard they can look at themselves, refreshed daily
  linked_decisions:
  - D-0003
- id: US-005
  story: As a board member I want the AUM trend over the last 12 months, not just
    a snapshot
  use_case: UC-001
  owner:
    name: Alex Hardy
    role: CDO
    email: alex.hardy@meridiancapital.com
  linked_sources:
  - S-002
  linked_metrics:
  - M-003
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:01:46
    quote: the AUM trend over the last twelve months, not just a snapshot
  linked_decisions: []
- id: US-011
  story: As an auditor I want a data-lineage view showing where each reported figure
    came from
  use_case: UC-001
  owner:
    name: TBD
    role: Auditor
  linked_sources: []
  linked_metrics: []
  status: draft
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/followup-2026-05-19.vtt
    timestamp: 00:02:20
    quote: a data lineage view showing where each reported figure came from
  linked_decisions: []
sources:
- id: S-001
  name: Salesforce CRM
  vendor: Salesforce
  business_owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  technical_owner:
    name: Dev Patel
    role: CRM Platform Lead
    email: dev.patel@meridiancapital.com
  data_owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  access_method: REST API (Bulk API 2.0) + nightly export
  refresh_cadence: nightly
  volume:
    largest_table_rows: 2400000
    total_gb: 18.0
    annual_growth_pct: 12.0
  change_detection: SystemModstamp (modified-date)
  contains_pii: true
  pii_categories:
  - name
  - email
  - phone
  data_classification: confidential
  status: approved
  source:
  - type: questionnaire
    ref: Q4.1 (S-1)
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:55
    quote: the CRM. All the client-to-adviser mapping is in the CRM
  linked_decisions:
  - D-0001
- id: S-002
  name: Finance / AUM ledger
  vendor: In-house (Oracle)
  business_owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  technical_owner:
    name: Dev Patel
    role: CRM Platform Lead
    email: dev.patel@meridiancapital.com
  data_owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  access_method: DB read replica (ODBC)
  refresh_cadence: nightly
  volume:
    largest_table_rows: 58000000
    total_gb: 140.0
    annual_growth_pct: 20.0
  change_detection: CDC (ledger)
  contains_pii: false
  pii_categories: []
  data_classification: internal
  status: confirmed
  source:
  - type: questionnaire
    ref: Q4.1 (S-2)
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:01:26
    quote: the AUM numbers come out of the finance system
  linked_decisions: []
- id: S-003
  name: Custodian feed
  vendor: Multiple custodians
  business_owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  technical_owner:
    name: TBD
    role: stakeholder
  data_owner:
    name: TBD
    role: stakeholder
  refresh_cadence: weekly file drop
  volume: {}
  pii_categories: []
  status: draft
  source:
  - type: questionnaire
    ref: Q4.1 (S-3)
  linked_decisions: []
data_quality_findings:
- id: DQ-001
  source_id: S-002
  issue: FK_ProductID is 100% 'NO_PRODUCT' on the AUM snapshot — silver→product join
    broken
  severity: high
  affects_user_stories:
  - US-010
  owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  remediation: Confirm product key mapping in finance ledger; fix silver join before
    product-line reporting
  status: open
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:01:31
    quote: the AUM numbers come out of the finance system. Different team owns that
- id: DQ-002
  source_id: S-001
  issue: Wealth-team advisers are not yet in the CRM — still on the old spreadsheet
  severity: medium
  affects_user_stories:
  - US-001
  - US-010
  owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  remediation: Migrate wealth-team advisers to CRM, or define an interim source
  status: open
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:01:05
    quote: the wealth team advisers aren't actually in the CRM yet
silver_entities:
- id: SE-001
  name: conformed_adviser
  grain: one row per adviser
  business_key:
  - adviser_ref
  scd: scd2
  data_owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  sources:
  - S-001
  sensitivity: confidential
  status: confirmed
  source:
  - type: questionnaire
    ref: Q4.1 (S-1)
  linked_decisions: []
- id: SE-002
  name: aum_snapshot
  grain: one row per adviser per month
  business_key:
  - adviser_ref
  - month_end
  scd: none
  data_owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  sources:
  - S-002
  status: confirmed
  source:
  - type: questionnaire
    ref: Q4.1 (S-2)
  linked_decisions: []
facts:
- name: f_aum_snapshot
  grain: adviser x month
  source_silver_entities:
  - SE-002
  conformed_dimensions:
  - d_adviser
  - d_region
  - d_product
  owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  metrics:
  - id: M-001
    name: AUM
    variations:
    - AUM (month-end)
    - AUM by region
    - AUM by product line
    definition: Assets under management at month-end, summed to the reporting grain
    used_by_stories:
    - US-010
    placement: Board pack p.1; regional dashboard
    metric_owner:
      name: Raj Singh
      role: Finance Director
      email: raj.singh@meridiancapital.com
    status: confirmed
    source:
    - type: transcript
      sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
      timestamp: 00:00:14
      quote: adviser-level performance broken down by region
  - id: M-002
    name: AUM MoM change %
    variations:
    - MoM %
    - MoM % vs PY
    definition: (AUM_this_month - AUM_prior_month) / AUM_prior_month
    used_by_stories:
    - US-002
    placement: Adviser early-warning view
    metric_owner:
      name: Maria Okafor
      role: Head of Distribution Ops
      email: maria.okafor@meridiancapital.com
    status: draft
    source:
    - type: transcript
      sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
      timestamp: 00:00:25
      quote: dropped more than ten percent month on month
  - id: M-003
    name: AUM 12-month trend
    variations:
    - rolling 12m
    - YTD
    - FYTD
    definition: AUM by month over a rolling 12-month window
    used_by_stories:
    - US-005
    placement: Board pack trend chart
    metric_owner:
      name: Raj Singh
      role: Finance Director
      email: raj.singh@meridiancapital.com
    status: confirmed
    source:
    - type: transcript
      sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
      timestamp: 00:01:46
      quote: the AUM trend over the last twelve months
dimensions:
- id: D-001
  name: d_adviser
  grain: adviser
  scd: scd2
  source_silver_entity: SE-001
  data_owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  status: confirmed
  source:
  - type: questionnaire
    ref: Q4.1 (S-1)
- id: D-002
  name: d_region
  grain: region
  scd: scd1
  data_owner:
    name: Maria Okafor
    role: Head of Distribution Ops
    email: maria.okafor@meridiancapital.com
  status: confirmed
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:00:14
    quote: broken down by region
- id: D-003
  name: d_product
  grain: product line
  scd: scd2
  data_owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  status: draft
  source:
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/followup-2026-05-19.vtt
    timestamp: 00:00:08
    quote: by region AND product line
nfrs:
- id: NFR-001
  category: SLA
  requirement: Board pack ready by the 5th working day of the month
  target: <= 5th working day, 99% of months
  owner:
    name: Alex Hardy
    role: CDO
    email: alex.hardy@meridiancapital.com
  status: confirmed
  source:
  - type: questionnaire
    ref: Q1.3
  - type: transcript
    sharepoint_url: https://contoso.sharepoint.com/sites/meridian/transcripts/kickoff-2026-05-12.vtt
    timestamp: 00:01:58
    quote: is it the fifth working day of the month or the fifth calendar day
- id: NFR-002
  category: Data residency
  requirement: All client data remains in the UK region
  target: UK South only; no cross-region replication
  owner:
    name: Dev Patel
    role: CRM Platform Lead
    email: dev.patel@meridiancapital.com
  status: confirmed
  source:
  - type: questionnaire
    ref: Q8.2
- id: NFR-003
  category: Retention
  requirement: Retain monthly AUM snapshots
  target: 7 years
  owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  status: draft
  source:
  - type: questionnaire
    ref: Q8.4
open_questions:
- id: OQ-001
  question: Which system owns the fee data — CRM or finance?
  surfaced_from: 'transcript kickoff @ 00:01:38: ''let''s park the fee ownership question'''
  phase_to_resolve_in: sources_quality
  owner:
    name: Raj Singh
    role: Finance Director
    email: raj.singh@meridiancapital.com
  status: open
- id: OQ-002
  question: 'Reporting cutoff: 5th working day or 5th calendar day?'
  surfaced_from: transcript kickoff @ 00:01:58
  phase_to_resolve_in: design_refinement
  status: open
- id: OQ-003
  question: 'CONTRADICTION (requirement-vs-requirement): is the client source of truth
    the CRM (kickoff) or the finance system (follow-up)?'
  surfaced_from: A) US-003 'CRM is the source of truth'  vs  B) follow-up @ 00:02:10
    'finance system should own the client list, not the CRM'
  phase_to_resolve_in: sources_quality
  status: open
decision_log_index:
- id: D-0001
  title: Use the CRM as the system of record for the client-adviser relationship
  status: approved
  date_decided: '2026-05-12'
  approver: Priya Shah
  affects:
  - S-001
  - US-003
- id: D-0002
  title: Defer the fee-data ownership decision until Raj is present
  status: proposed
  affects:
  - OQ-001
- id: D-0003
  title: Self-service dashboard refresh frequency set to daily
  status: approved
  date_decided: '2026-05-19'
  approver: Maria Okafor
  affects:
  - US-003
- id: D-0004
  title: Drop the 10% AUM-drop flag from the current phase scope
  status: approved
  date_decided: '2026-05-19'
  approver: Alex Hardy
  affects:
  - US-002

The agents Each one enforces its own guardrail in code, not just in the prompt. All merged to main.

Scenario: the Meridian engagement Two meetings, ingested one after another. Step through what the agent actually did (live gpt-5.4).

Legend: added superseded (refined / retired) flagged for the consultant

The bigger picture Discovery is one of three layers. Two more sit between it and the build agents.

A client engagement runs left → right. Discovery is built. The modelling & mapping layer is newly ticketed (the missing middle). Build already exists and consumes a mapping file.

The handoff that ties it together

approved requirements catalogue ──▶ conceptual + logical model ──▶ source-to-target mapping file ──▶ BUILD agents ──▶ tested table + PR (discovery, built) (modeller #56412) (mapper #56413, → build's MappingParser) (existing)

The mapper's output is exactly what the build agents' MappingParser already reads — so the modelling/mapping layer is the clean bridge between “what the client wants” and “the table that gets built”.

Newly created tickets (this layer was missing)

TicketAgentRole

Code-enforced guarantees The trust story — each is a structural invariant with unit tests, not a prompt instruction.

Status & honest gaps What's shipped, and what's deliberately not done yet.

✅ In main (tested, live-verified)

ComponentTicketWhat

🚧 Remaining

ItemTicketNote

⚠ Where I'm not confident — the testing

  • Every LLM-backed agent is unit-tested with a mocked model — that proves the plumbing and guardrails, not the model's judgment or that the real prompts produce valid output.
  • There is no committed real-LLM / precision-recall eval harness yet (the live checks were throwaway scripts). Quality is currently eyeballed, not measured.
  • Two real bugs this build (decision-tracker dedup; decision-index divergence) were caught by manual audit, not the test suite — evidence the mock-only strategy has a blind spot.
  • #55695 is scoped to close exactly this: a labelled eval set + scored harness + a scaffolded-repo integration test. It should land before shadow mode.

Generated from real end-to-end runs of the discovery agent on gpt-5.4 (Azure AI Foundry, ai-colleagues, uksouth). Open this file in any browser — no internet required.