A property underwriter reading a statement of values looks for four things on every row: construction, year built, sprinklers and values that add up. Each blank is a question, and each question is priced. On our illustrative manufacturer, two of nine locations carry blanks, the schedule is thirteen months old, and nobody has asked how many drivers the fleet has this year.
This post follows the data-gap chaser through that clean-up: what the SOV engine flags and why, how exposures are compared with last year, the two controls that fire, and the request that goes to the client. Every client, location and figure is illustrative.
| Actors | Account manager, the client's risk manager or CFO, placement broker |
|---|---|
| Trigger | The SOV is imported or updated; exposures are entered; Analyze runs |
| Lines | Property (SOV), and every line that rates on an exposure: GL and umbrella on revenue, auto on vehicles and drivers, workers compensation on payroll and employees |
| Agents involved | Data-gap chaser, submission builder, supervisor agent |
| Decisions | What to ask the client for; whether a gap is acceptable to market with |
| Outcome | A schedule an underwriter can rate without a list of questions, and exposures that explain their own changes |
| What is measured | Share of SOV locations with gaps, SOV age at submission, exposures missing at the 90-day mark |
What the SOV engine checks on every row
The statement of values check runs six tests per location. The thresholds are fixed in the engine, so the same schedule always produces the same list:
| Issue | Severity | The test |
|---|---|---|
| Construction class missing | High | The construction field is blank |
| Building value missing | High | No building value on the row |
| TIV doesn’t add up | High | TIV differs from building + contents + business income by more than a dollar |
| Year built missing | Medium | No year built |
| Sprinkler status unknown | Medium | The sprinkler field is blank |
| Roof more than 20 years old | Low | Roof year more than 20 years before today |
A location with any high or medium issue counts as “with gaps”. The schedule also returns TIV by state and by construction, the sprinklered share of TIV and the largest location — the shape an underwriter scans first.
Here: nine locations, $123M of TIV, 73.1% of it sprinklered. Location 5 has no construction class; location 8 has unknown sprinklers and a roof more than twenty years old. That is two of nine locations, 22.2%, against a 10% tolerance — and the schedule was last updated on September 14, 2025.
Exposures: this year against last
Each line needs certain exposures: revenue for general liability, umbrella and cyber; vehicles and drivers for auto; payroll and employees for workers compensation. The exposure engine lists each one with this year’s value, last year’s and the change, marks what a line needs but nobody collected, and lists any change of 15% or more so the submission can explain it.
On our manufacturer, revenue is up 7.8% to $182M, payroll up 8.1%, vehicles up from 100 to 106 — and drivers are blank. Last year’s file had 119 drivers against 100 vehicles, which is exactly why the agent says the driver count should be chased first: an auto underwriter will not quote without it.
exposure data"] --> B["SOV engine:
6 tests per row"] A --> C["Exposure engine:
needed by line,
change on last year"] B --> D{"Gaps over 10%?
SOV over a year old?"} D -- yes --> E["Controls warn:
SOV_QUALITY, SOV_STALE"] B --> F["Data-gap chaser:
reads the facts"] C --> F F --> G["Prepared: ask the client
for the missing items"] G --> H{"Account manager:
accept, change,
reject, ask"} style E fill:#fff4e2,stroke:#f4a03a style H fill:#e8f8f4,stroke:#10b981,stroke-width:2px
Step by step
Two of nine locations with gaps (22.2%), SOV 410 days old, drivers not collected, three changes listed.
SOV_QUALITY (more than 10% of rows with gaps) and SOV_STALE (older than 365 days). Each writes a warning to the decision record and an insight on Home; neither blocks.
“Ask the client for 4 items the markets need”: this year’s drivers, construction at location 5, sprinklers at location 8, an updated SOV. It never invents a value the client didn’t give.
Accepted with a note about the roof at location 8. The send is a dry run in the demo.
The client’s spreadsheet is imported as CSV; every row is re-tested. If location 8’s roof is still old, it stays a low-severity note the submission states rather than hides.
With gaps under 10% and the SOV fresh, neither control fires on the next run, and the readiness checklist picks up 2.5 of its 9.5 weight.
The open items that closed drop out of the submission’s flagged list; the ones that did not stay flagged in the package itself.
What the screens show
What the agents prepared, and what each rests on
| Agent | What it prepared | What it cites | Who decides |
|---|---|---|---|
| Data-gap chaser | Ask the client for the 4 items the markets need | SOV rows 5 and 8; exposure data (drivers not collected) | Account manager |
| Submission builder | Flag the same items as open in the package | The SOV check and exposure engine | Placement broker |
| Supervisor | Record the two warnings | SOV_QUALITY, SOV_STALE | Nobody needs to sign off a warning |
Edge cases
| What happens | What InsightPlacement does |
|---|---|
| No SOV at all on a property renewal | The SOV checks are unmet with “No SOV on file”; the exposure row for TIV is marked missing. |
| TIV entered without its components | Building value missing (high) — the engine will not assume the split. |
| A line with no property | The SOV checks do not apply and drop out of the readiness weight. |
| The client cannot answer a gap | Reject the item with a note; it stays flagged in the submission so the underwriter sees it stated, not missing. |
The decision record for this step
| Section | Hit | Outcome |
|---|---|---|
| Control | SOV_QUALITY: 2 of 9 locations with gaps (22.2%) | warn |
| Control | SOV_STALE: updated 2025-09-14 | warn |
| Agent | Data-gap chaser: ask the client for 4 items (accepted) | proceed |
For the account team
The request names the row and the field. Your client fills four blanks instead of answering an open “please update your SOV”.
For broker IT
The SOV import goes through the platform’s upload checks; documents land in the object store, not on a server’s disk.
For practice leaders
The share of locations with gaps and the SOV’s age at submission are two numbers that predict how many underwriter questions a renewal will draw.
Questions we get asked
Can we change the 10% tolerance?
Yes. SOV_QUALITY is a placement control in the Rules Studio; a practice leader can draft a new threshold, test it against real placements and publish it.
Does the model ever fill in a missing value?
No. The data-gap chaser’s contract is that it never invents a value the client didn’t give, and the grounding check throws away any answer carrying a number that isn’t in its facts.

