Building compliant software in insurance / The rules that reach your code
State-by-state data security requirements for insurance software
More than 25 states have adopted some version of the NAIC Insurance Data Security Model Law, and each adopted version can differ in its notification deadline, its size threshold, and its exemptions. An application licensed in a dozen states needs a way to represent that variation, not a single rule that happens to be right for the state the team thought about first.
Key takeaways
- The model law is a template. States adopt it with their own edits, so the notification deadline, threshold, and exemptions are not the same everywhere.
- A hardcoded single rule will be wrong for at least one state the moment a company operates in more than one.
- The fix is a configuration structure keyed by state, reviewed by whoever tracks the legal requirement, checked automatically for coverage gaps.
- A missing configuration entry for a newly licensed state is a common and serious gap, and it is easy to check for automatically.
A team that reads the NAIC Insurance Data Security Model Law once and implements "the" notification rule has usually implemented one state's version of it, whichever state they happened to be looking at. That is a reasonable mistake to make once. It becomes a real liability the moment the company is licensed in a second state whose adopted version differs.
Why the variation exists
The NAIC drafts model laws as templates for state legislatures. A state legislature can adopt a model law as written, adopt it with amendments, or decline to adopt it at all. The Insurance Data Security Model Law has been adopted by more than 25 states as of early 2026 [1], and the versions differ in specifics: how many business days a licensee has to notify the commissioner after determining a breach occurred, the number of affected consumers that triggers a notification requirement, and which categories of licensee, such as smaller agencies below a certain size, are exempt from parts of the law.
This is not a minor detail to smooth over. A notification sent on the deadline for one state, applied to a policyholder in a state with a shorter window, is a missed deadline, and a missed deadline is exactly the kind of finding an examination exists to surface.
What a configuration-first design looks like
The practical fix is to treat the state-specific numbers as data, not as logic. A table, keyed by state, holding at minimum: the number of days to notify the commissioner, the number of days to notify affected consumers, the size threshold that triggers a notification obligation if the state has one, and any exemption that applies to the licensee's category of business in that state.
The application's notification workflow then looks up the relevant row based on the policyholder's state, rather than embedding a specific day count in the workflow's code. Adding a new state, once the company gets licensed there, becomes an entry in that table, reviewed by whoever is responsible for tracking the state's actual adopted requirements, rather than a change to application logic reviewed by an engineer who is not positioned to know whether the new state's deadline is 3 business days or 5 calendar days or something else entirely.
The check that actually matters here
Configuration alone is not the safeguard. The safeguard is a check that compares the configuration table against the list of states the company is actually licensed in, and fails when the two do not match.
This catches the single most common failure mode we would expect to find in a growing insurance company's software: a state gets added to the list of active licenses, sales and underwriting start writing policies there, and nobody tells the engineering team, because from their perspective the application already works everywhere. Six months later a claim in that state triggers an incident, and the notification workflow either uses a default that may not match the state's actual requirement or fails outright because no row exists.
The check itself is simple to state and worth writing before the configuration table is even fully populated: for every state where the company holds an active license, assert that a configuration row exists, and assert that the row's values were reviewed within some defined period rather than inherited unchanged from when the state was first added. That second half matters because states amend their own adopted versions over time, and a row that was correct in 2022 is not guaranteed to still be correct.
Multi-state policyholders and the harder edge case
A subtler case worth naming: a policyholder can move states after a policy is written, or a business policyholder can have operations spanning several states. Which state's rule applies to a breach affecting that policyholder is a legal question, not a technical one, but the application has to be able to represent the answer once counsel has one. That means the data model needs to track the state relevant to notification, which is not automatically the same as the mailing address on file, and the notification workflow needs to be able to apply more than one state's rule to a single incident when the affected population spans states, which is the normal case for any insurer operating regionally.
Exemptions are part of the same table
States that adopted the model law frequently carved out exemptions, commonly for licensees below a certain size or for those already subject to an equivalent federal standard. An exemption is not a reason to skip building the configuration entry for that state. It is a value in the same table: whether the exemption applies to this specific business, in this specific state, verified by counsel, represented as data so a change in the business's size or structure can be checked against it rather than assumed to still hold.
Building this alongside the notification workflow itself
State-by-state configuration is the input side of the requirement. What the application does once a breach is determined, how quickly it identifies affected policyholders and fires the correct notifications, is covered on incident response and breach notification in your application, which picks up directly from the configuration structure described here.
Building the configuration mechanism correctly the first time, even while the company only holds a handful of licenses, is cheaper than discovering the gap after the fifteenth state is added under sales pressure and nobody remembered to revisit the notification logic. If your application currently has a single hardcoded notification rule and you are licensed in more than one state, that is the first thing worth checking. Get in touch if you want a second opinion on what your current configuration actually covers.
Common questions
Is the NAIC Insurance Data Security Model Law the same in every state?
No. It is a template that each state legislature can adopt as written, adopt with amendments, or decline to adopt. More than 25 states had adopted some version as of early 2026, and the adopted versions commonly differ in the notification deadline, the size threshold that triggers a notification requirement, and which categories of licensee are exempt.
What happens if an insurance application hardcodes a single state's notification rule?
It will apply the wrong deadline the moment a policyholder in a different state is affected by a breach, since that state's adopted version of the model law may specify a different number of days or a different threshold. A missed state-specific deadline is exactly the kind of finding an examination is designed to catch.
How should state-specific insurance compliance rules be represented in software?
As configuration data rather than application logic. A table keyed by state, holding the notification deadlines, thresholds, and exemptions for that state, lets the application look up the relevant values based on the policyholder's state rather than embedding one state's numbers directly into the workflow's code.
What is the most common compliance gap when an insurer expands into a new state?
The company becomes licensed and starts writing policies in the new state before the engineering team's state configuration table is updated with that state's specific notification requirements. From the application's perspective nothing has changed, since it already works everywhere, which is exactly why this gap tends to go unnoticed until an incident occurs there.
How do you check that an insurance application's state configuration is complete?
Compare the list of states the company holds an active license in against the list of states with a configuration entry, and fail the check when a licensed state has no entry. This is a straightforward automated comparison and it catches the specific gap that causes the most real incidents.
Does a state exemption mean no configuration entry is needed for that state?
No. An exemption is a value within the same configuration structure, not a reason to skip the entry, since whether the exemption applies depends on the specific business's size or category in that state and can change over time. Representing it as data lets a change in the business be checked against the exemption rather than assumed to still apply.
What happens when a policyholder's relevant state for notification differs from their mailing address?
The state relevant to a breach notification is a legal determination, not automatically the mailing address on file, particularly for a policyholder who has moved or a business policyholder with operations in multiple states. The application's data model needs to be able to track and apply the legally relevant state rather than assuming it matches the address field.
Should state configuration values be reviewed after they are first entered?
Yes. States can amend their own adopted version of the model law over time, so a configuration value that was correct when a state was first added is not guaranteed to remain correct. A useful check flags configuration rows that have not been reviewed within a defined period rather than trusting a value indefinitely.
References
- [1] NAIC, Insurance Data Security Model Law (#668): adopted in some form by more than 25 states as of early 2026, with variation in notification timelines, size thresholds, and exemptions across adopting states.
- NAIC Model Law Guide, RadarFirst: a state-by-state summary of adoption status and the specific variation in notification requirements.
Related reading
What a good technical spec looks like when a model writes the code
The old advice was to keep specs short and stop where writing the code is faster. That advice assumed a person was reading it. When a model writes the code, the cost of an unanswered question moves, and so does the right length of a spec.
How to plan a migration you cannot pause
The big-bang cutover is popular because it is easy to describe and easy to schedule. It is also the version where you find out whether it worked at the moment you can least afford to be wrong.
More in The rules that reach your code
Incident response and breach notification in your application
An incident response plan is usually a document describing what people will do. The part that lives in the application is different and gets far less attention: identifying exactly which policyholders were affected, and firing a notification within a clock that starts the moment a breach is determined, not the moment someone gets around to writing the notice.
Model Audit Rule controls for software teams
The NAIC Model Audit Rule applies to insurers above a premium threshold and requires an independent annual audit covering internal control over financial reporting. It explicitly permits automated and computer-assisted techniques to support that control, which is the opening for a software team to turn an annual audit scramble into something closer to continuous evidence.