Prompt Details
Model
(claude-4-6-sonnet)
Token size
2,799
Example input
[USER_INPUT: system_name]: Legacy Invoicing Repository (LIR)
[USER_INPUT: domain_and_config]: domain: energy-utilities retrieval_strategy: schema-aware depth_level: standard
[USER_INPUT: system_description]: A 14-year-old in-house invoicing system for a regional electricity distributor. Handles consumption-based billing for residential and commercial customers, monthly invoice generation with PDF output, and a customer-account-to-meter linkage. Operations team has been using it beyond original scope — when pole maintenance is scheduled, operators trace pole locations by address to identify affected asset IDs and billing accounts. The original developer left the company 4 years ago. Vendor relationship ended when the vendor went defunct in 2022.
[USER_INPUT: database_schema]: TABLES: - customers (customer_id PK, name, account_type, service_address_id FK) - addresses (address_id PK, street, city, zip, lat, lon, pole_id FK) - assets (asset_id PK, asset_type, location_address_id FK, installed_date) - meter_readings (reading_id PK, meter_id FK, read_date, kwh_value) - invoices (invoice_id PK, customer_id FK, billing_period, total_amount, status) - invoice_line_items (line_id PK, invoice_id FK, description, amount) - customer_assets (customer_id FK, asset_id FK, start_date, end_date) - maintenance_log (log_id PK, asset_id FK, scheduled_date, affected_asset_ids, source_system, created_at) - controlled_access_log (access_id PK, user_id, action, timestamp) NOTES: - maintenance_log table is NOT in original specification - addresses.pole_id FK is not documented anywhere - source_system column in maintenance_log = 'WFM-vendor-defunct'
[USER_INPUT: vendor_documentation]: (empty — vendor is defunct, no documentation available)
Example output
# SYSTEM UTILIZATION PROFILE
## Legacy Invoicing Repository (LIR)
**Profiled by:** Stage 1 — Polysynthetic System Profiler™
**Profile date:** 2026-04-19
**Retrieval strategy:** Schema-aware
**Depth level:** Standard
**Domain:** Energy-utilities
---
## Section 1 — System Boundaries
### 1.1 What the System Contains
- **Consumption-based billing** — calculates invoice amounts from meter readings for residential and commercial customers. {Source: system description}
- **Monthly invoice generation with PDF output** — produces invoices on a billing-period cycle and exports them as PDF. {Source: system description}
- **Customer account management** — stores customer records linked to service addresses and account type (residential vs. commercial). {Source: schema — `customers`, `addresses`}
- **Meter reading storage** — retains timestamped kWh readings per meter. {Source: schema — `meter_readings`}
- **Asset-to-customer linkage** — associates physical assets with customer accounts over time via `start_date`/`end_date`. {Source: schema — `customer_assets`}
- **Address-to-pole linkage** — addresses carry a `pole_id` FK, enabling traversal from service address to infrastructure asset. {Source: schema — `addresses.pole_id`}
- **Maintenance logging** — records scheduled maintenance events, including cascaded affected asset IDs. {Source: schema — `maintenance_log`; flagged as out-of-original-spec}
- **Access auditing** — logs user actions with timestamps via `controlled_access_log`. {Source: schema}
- **Ad-hoc pole-tracing workflow** — operations staff trace pole locations by address to identify affected asset IDs and billing accounts during scheduled pole maintenance. {Source: system description}
### 1.2 What the System Excludes
- **Payment processing** — no tables for payments, receipts, or payment gateway integration are present. {Source: schema — absence}
- **Real-time meter data ingestion** — `meter_readings` stores values but the system description names no live feed mechanism or meter-communication protocol. {Source: system description — absence; schema — absence}
- **Customer-facing self-service** — no user interface layer or web portal is described or implied. {Source: system description — absence}
- **Field crew scheduling or dispatch** — maintenance events are logged, but no workflow, crew assignment, or scheduling capability is present in the schema or description. {Source: schema — absence}
- **Network topology modeling** — the system does not model pole-to-pole or pole-to-feeder relationships; `pole_id` is a flat FK on `addresses`, not a graph structure. {Source: schema}
- **Outage management** — no outage, fault, or interruption entities exist. {Source: schema — absence}
- **Regulatory reporting outputs** — no dedicated reporting entities, export formats, or compliance-specific fields are documented. {Source: schema — absence; system description — absence}
### 1.3 Integration Boundaries
| Direction | Counterpart | Data Exchanged | Source of Knowledge |
|---|---|---|---|
| Receives from (inferred) | Meter reading collection system | `kwh_value`, `meter_id`, `read_date` | {INFERRED from: `meter_readings` schema — values must originate somewhere} |
| Receives from (inferred) | Address/geocoding source | `lat`, `lon`, `pole_id` on `addresses` | {INFERRED from: schema — LIR stores geocoded data but no input process is documented} |
| Received from (defunct) | WFM vendor system | Maintenance scheduling records | {Source: `maintenance_log.source_system = 'WFM-vendor-defunct'`} |
| Outbound (stated) | PDF rendering/delivery layer | Monthly invoice PDFs | {Source: system description — "PDF output"; mechanism not documented} |
| Unknown | Any current maintenance scheduling system | Unknown — WFM vendor is defunct | {INFERRED from: schema — `source_system` value suggests replacement may or may not exist} |
---
## Section 2 — Entities and Relationships
### 2.1 Core Entities
**customers**
- Purpose: Represents a billing account holder (residential or commercial).
- Key attributes: `customer_id`, `name`, `account_type`, `service_address_id`
- Lifecycle: Created at account opening; `account_type` distinguishes billing tier. No archival or closure field present. {INFERRED from: schema — absence of status/closure field is a gap}
- Source: Schema
**addresses**
- Purpose: Physical service locations; also serves as a spatial anchor for infrastructure assets.
- Key attributes: `address_id`, `street`, `city`, `zip`, `lat`, `lon`, `pole_id`
- Lifecycle: Created when a customer or asset is registered to a location. No update/decommission mechanism documented.
- Source: Schema; `pole_id` undocumented {Source: schema notes}
**assets**
- Purpose: Physical infrastructure items (type unspecified — meters, poles, transformers, etc.).
- Key attributes: `asset_id`, `asset_type`, `location_address_id`, `installed_date`
- Lifecycle: Created at installation (`installed_date`). No decommission or retirement field. {INFERRED from: schema — absence of end-of-life field}
- Source: Schema
**meter_readings**
- Purpose: Time-series record of energy consumption per meter.
- Key attributes: `reading_id`, `meter_id`, `read_date`, `kwh_value`
- Lifecycle: Created on each read cycle. No deletion or correction mechanism documented. {INFERRED from: schema}
- Note: `meter_id` FK target table is not present in the schema. {TEMPORAL: verify currency as of 2026-04-19 — `meter_id` may reference a missing or external table}
- Source: Schema
**invoices**
- Purpose: Billing record for a customer covering a defined period.
- Key attributes: `invoice_id`, `customer_id`, `billing_period`, `total_amount`, `status`
- Lifecycle: Generated monthly; `status` implies a workflow (draft → issued → paid/overdue?) but valid status values are not documented.
- Source: Schema
**invoice_line_items**
- Purpose: Itemized breakdown of charges within an invoice.
- Key attributes: `line_id`, `invoice_id`, `description`, `amount`
- Lifecycle: Created alongside parent invoice. No amendment mechanism documented.
- Source: Schema
**customer_assets**
- Purpose: Junction entity associating customers with assets over time (e.g., meter assignment).
- Key attributes: `customer_id`, `asset_id`, `start_date`, `end_date`
- Lifecycle: `end_date` NULL implies active assignment. No PK is defined — composite key assumed. {INFERRED from: schema}
- Source: Schema
**maintenance_log**
- Purpose: Records scheduled maintenance events and the asset IDs they affect. Used operationally for pole-tracing workflows.
- Key attributes: `log_id`, `asset_id`, `scheduled_date`, `affected_asset_ids[]` (array), `source_system`, `created_at`
- Lifecycle: Created when maintenance is scheduled. `source_system = 'WFM-vendor-defunct'` indicates historical records came from a now-defunct vendor feed. Current population mechanism is unknown.
- Source: Schema; explicitly flagged as not in original specification {Source: schema notes}
**controlled_access_log**
- Purpose: Audit trail of user actions within the system.
- Key attributes: `access_id`, `user_id`, `action`, `timestamp`
- Lifecycle: Append-only (assumed). Retention policy not documented.
- Source: Schema
### 2.2 Explicit Relationships
| Entity A | Relationship | Entity B | Cardinality | Source |
|---|---|---|---|---|
| customers | has one | addresses (service) | N:1 | Schema FK |
| addresses | optionally references | assets (via `pole_id`) | N:1 | Schema FK (undocumented) |
| assets | located at | addresses | N:1 | Schema FK |
| meter_readings | recorded for | meters (implied) | N:1 | Schema FK — target missing |
| invoices | issued to | customers | N:1 | Schema FK |
| invoice_line_items | belongs to | invoices | N:1 | Schema FK |
| customer_assets | links | customers ↔ assets | M:N | Schema junction |
| maintenance_log | references primary | assets | N:1 | Schema FK |
| maintenance_log | references cascaded | assets (array) | 1:N (array) | Schema — `affected_asset_ids[]` |
### 2.3 Inferred Relationships
- **meters → assets**: `meter_readings.meter_id` almost certainly references a meter, which is an `asset_type` in the `assets` table — but no FK constraint ties them. {INFERRED from: schema structure} — Stakeholder validation required.
- **maintenance_log → addresses**: Operational pole-tracing traverses `maintenance_log → assets → addresses → pole_id`. This join path is operationally depended upon but is nowhere documented as an intended query pattern. {INFERRED from: system description + schema}
- **customers → affected maintenance**: The operations workflow implies a join path from `maintenance_log.affected_asset_ids[]` → `customer_assets` → `customers` to identify billing accounts at risk. This path uses an array column, suggesting either application-side unnesting or a non-standard join. {INFERRED from: system description + schema}
---
## Section 3 — Data Flows
### 3.1 Inbound Flows
| Source | Data | Format/Volume | Trigger | Destination Entity |
|---|---|---|---|---|
| Meter collection system (inferred) | kWh readings per meter | Unknown format; monthly minimum | Scheduled or manual | `meter_readings` |
| Operations staff (manual, inferred) | Maintenance schedules | Unknown; previously via WFM feed | Ad-hoc or scheduled | `maintenance_log` |
| Address/geocoding source (inferred) | `lat`, `lon`, `pole_id` | Unknown | At address creation | `addresses` |
| Operators (manual) | Ad-hoc pole-tracing queries | Interactive | Event-driven (maintenance scheduling) | Read-only traversal |
### 3.2 Internal Flows
- **Meter readings → Invoice generation**: `meter_readings.kwh_value` values for a billing period aggregate into a consumption figure; this drives `invoice_line_items.amount` and rolls up to `invoices.total_amount`. Transformation logic is not documented — presumably application code. {INFERRED from: system description + schema}
- **customer_assets → Invoice scoping**: The system must resolve which asset (meter) belongs to which customer during billing. `customer_assets` provides this, using `start_date`/`end_date` to handle reassignments. {INFERRED from: schema}
- **addresses + pole_id → maintenance impact tracing**: Operators join `addresses.pole_id` against `assets` and `maintenance_log` to identify affected customers. This is an internal read path with no write output documented.
### 3.3 Outbound Flows
| Destination | Data | Format | Trigger | Source Entity |
|---|---|---|---|---|
| Customer / delivery mechanism | Monthly invoice | PDF | Billing cycle completion | `invoices`, `invoice_line_items` |
| Operations team | Pole-trace results (affected accounts) | Unknown — screen output assumed | Ad-hoc query | `maintenance_log`, `assets`, `addresses`, `customers` |
| Audit/compliance consumers (inferred) | Access log records | Unknown | On-demand or periodic | `controlled_access_log` |
---
## Section 4 — Stakeholder Map
### 4.1 Direct Users
| Role | Actions Performed | Frequency | Source |
|---|---|---|---|
| Billing operators | Generate invoices, review line items, manage billing cycle | Monthly | System description |
| Operations team | Trace pole locations to identify affected assets and billing accounts | Ad-hoc, event-driven | System description |
| System administrators (inferred) | Control access, manage user accounts | Periodic | {INFERRED from: `controlled_access_log`} |
### 4.2 Indirect Stakeholders
- **Residential and commercial customers** — receive invoice PDFs; do not interact with the system directly. {Source: system description}
- **Audit / compliance teams** — likely consumers of `controlled_access_log` data, given energy-utility regulatory environments typically require access auditing. {INFERRED from: domain + schema}
- **Field maintenance crews** — act on the output of the operations team's pole-tracing queries but do not interact with LIR directly. {INFERRED from: system description}
- **Finance / accounts receivable** — depend on invoice data for revenue tracking; no direct interface documented. {INFERRED from: domain}
### 4.3 System Owners / Operators
- **Original developer** — departed 4 years ago. No handover documentation referenced. {Source: system description}
- **Current maintainer** — not identified. This is a critical gap: no named owner, incident responder, or access-control authority is documented. {INFERRED from: system description — absence}
- **Vendor** — defunct since 2022. No support relationship exists. {Source: system description}
- {TEMPORAL: verify currency as of 2026-04-19 — confirm whether any internal team member has assumed de-facto ownership and whether that is formally recorded}
---
## Section 5 — Implicit Assumption Inventory
**Assumption 1: `pole_id` values in `addresses` are accurate and maintained**
- Evidence: `addresses.pole_id` is an undocumented FK with no stated maintenance process. The system description says operations staff rely on address-to-pole tracing for maintenance planning.
- Risk if violated: Operations team identifies wrong poles or misses affected accounts, potentially leaving customers without warning before service interruption.
- Validation target: Operations team lead; whoever last updated address records.
**Assumption 2: `maintenance_log` is still being populated by some process**
- Evidence: `source_system = 'WFM-vendor-defunct'` confirms the original feed source no longer exists. The table is actively used (per system description) but no replacement feed is documented.
- Risk if violated: The table may contain only historical records. Operations staff may be querying stale data without knowing it.
- Validation target: Operations team; IT infrastructure owner.
**Assumption 3: `meter_id` in `meter_readings` resolves to a valid asset**
- Evidence: `meter_id` is a FK with no target table in the documented schema. Billing depends on reading records being correctly associated with a customer's metered asset.
- Risk if violated: Orphaned readings produce incorrect or missing invoice amounts. The join path from reading → customer breaks silently.
- Validation target: Database administrator or whoever runs the meter-reading ingestion process.
**Assumption 4: Billing period logic is handled entirely in application code**
- Evidence: No stored procedure, trigger, or scheduling entity appears in the schema. The invoice table has `billing_period` as a field but no generation-trigger mechanism is documented.
- Risk if violated: If the application layer is modified or replaced without understanding the billing logic, invoice generation breaks. The logic is invisible to anyone who only sees the schema.
- Validation target: Any developer who has touched the application layer since the original developer left.
**Assumption 5: `controlled_access_log` satisfies active compliance obligations**
- Evidence: The log exists and records user actions, but retention policy, log completeness, and whether it meets any regulatory standard (e.g., energy sector audit requirements) are not documented.
- Risk if violated: The organization may believe it has an audit trail that regulators would accept when it does not — or the log may be complete but unverified.
- Validation target: Compliance officer; legal team.
---
## Section 6 — Temporal Currency Flags
| Item | Why It Is Temporal | Verification Required |
|---|---|---|
| `maintenance_log.source_system = 'WFM-vendor-defunct'` | Vendor went defunct in 2022. Records created before that date may reflect an operational state that no longer exists. | Confirm last valid record date; identify whether any records post-2022 exist and how they were created. |
| `assets.installed_date` | Asset ages affect whether assets are still active, replaced, or decommissioned. No retirement field exists. | Cross-check against any external asset register to confirm which records are still live. |
| `addresses.pole_id` | Pole assignments change when infrastructure is modified. No `last_updated` field exists on `addresses`. | Confirm with network/infrastructure team whether address-to-pole mappings are current. |
| `customer_assets.end_date` (NULLs) | NULL `end_date` is treated as "active," but with no update process documented, stale open records may exist. | Query for customer-asset associations with `start_date` older than reasonable operational thresholds and validate against active accounts. |
| `invoices.status` | Status values represent a workflow state (presumably: generated → sent → paid/overdue). Without valid status definitions, downstream consumers cannot interpret the field reliably. | Document the valid status values and their meanings as of the current date. |
| System ownership | The original developer left 4 years ago; vendor defunct since 2022. Current maintainer is unknown. | {TEMPORAL: verify currency as of 2026-04-19 — confirm who currently holds operational responsibility} |
---
## Section 7 — Profile Confidence Self-Assessment
**Coverage: Medium**
The schema is reasonably complete and yields a solid entity map, data flow skeleton, and relationship inventory. The system description is specific enough to identify the ad-hoc maintenance-tracing use case, which is the most significant out-of-scope drift in the profile. However, two major structural gaps limit confidence:
1. No vendor documentation exists. The vendor is defunct. This means any behavior that resided in vendor-supplied components (billing calculation logic, PDF generation, the WFM feed) is invisible from available inputs.
2. The application layer is entirely undocumented. Billing period logic, status transitions, meter-reading aggregation, and the PDF generation mechanism are all assumed to exist in code that no current team member may fully understand.
**Gaps by section:**
- **Section 1.3** — Integration boundaries are mostly inferred. The meter-reading ingestion source and the replacement (if any) for the WFM feed are unknown.
- **Section 2.1** — `meter_id` target, `invoice.status` value set, and asset lifecycle are all unresolved.
- **Section 4.3** — No current system owner is identified. This is the single highest-risk gap for Stage 2: without a known owner, there is no clear authority to validate inferences.
**Recommended actions before running Stage 2:**
1. Interview the operations team lead to confirm the pole-tracing workflow in detail — specifically how `maintenance_log` is currently populated post-vendor-shutdown.
2. Identify and interview whoever currently maintains the application layer (if anyone), focusing on billing calculation logic and invoice status transitions.
3. Run a database query to determine: (a) the most recent `maintenance_log.created_at` value, (b) the distribution of `invoice.status` values, and (c) whether any `meter_id` values in `meter_readings` are absent from `assets`.
4. Obtain the current network/infrastructure team's asset register and compare it against `assets` and `addresses.pole_id` for currency.
---
*═══════════════════════════════════════════════════════════════════════════*
*END STAGE 1 OUTPUT*
*═══════════════════════════════════════════════════════════════════════════*
By purchasing this prompt, you agree to our terms of service
CLAUDE-4-6-SONNET
A BA/TBA-grade prompt for producing structured System Utilization Profiles of bespoke or poorly-documented systems — with implicit assumption surfacing
Built for Business Analysts and Technical Business Analysts profiling bespoke, legacy, or vendor-inherited systems. Takes a system description and (optionally) database schema + vendor documentation, and produces a structured System Utilization Profile that captures boundaries, entities, data flows, stakeholder map, and more
...more
Added 4 days ago
