Homeowners and flood documents,
without the template headache.
A declaration packet is dozens of forms, endorsements, and state notices, included or excluded by condition. Today that lives in code, behind a deploy. Mezdoc makes it one versioned workflow: edit without code, fill by API, sign with an audit trail.
Today, changing one sentence means a deploy.
Picture a Tuesday afternoon. Compliance wants one line on the California wildfire notice reworded before renewals go out. Sounds like a five-minute fix. It is not. The document lives in code, HTML and Liquid that reaches into a policy snapshot like data.policy.characteristics[0].cov_a, so the change needs an engineer, a pull request, and a deploy window.
Now multiply that by every state, every carrier form, and every declaration, endorsement, and cancellation you send. The templating was never the hard part. Living with it is.
<h1>Declarations</h1>
<p>Insured: {{ data.policy.holder.name }}</p>
{% if data.policy.characteristics[0].cov_a > 0 %}
<p>Coverage A: {{ data.policy.characteristics[0].cov_a
| currency }}</p>
{% endif %}
{% if data.policy.state == "CA"
and data.policy.fire_zone == "very_high" %}
{% include "ca_wildfire_fair_plan_notice" %}
{% endif %}
{% for e in data.policy.endorsements %}
{% include e.template_id %}
{% endfor %}No UI - engineers only
Documents are HTML and Liquid in a repo. Compliance cannot fix a notice or swap a logo; they file a ticket and wait for an engineer.
Versioning is brittle
Changes ride the platform deploy pipeline. There is no clean per-document history, no staging-versus-production pin, and rollback is a redeploy. Someone edits a template and production breaks.
Every edit is a deploy
Changing one sentence means a code change, a config redeploy, and a slow render feedback loop. A wording fix that should take a minute takes a release.
Logic is duplicated
The same condition (if state is CA, if flood zone is A or V) gets rewritten across many templates. Drift is inevitable and hard to audit.
Costly for what it is
You pay premium platform pricing for a document engine that still needs your engineers for every change. The value does not match the bill.
Hard to test
Validating a change means rendering against sample data through a slow loop, with no instant preview of how the final packet looks.
Change one fact. Watch the packet rebuild.
This is the whole idea, made tangible. Flip the risk state, the flood zone, the coverage, or a checkbox, and the document set assembles itself. Every row tells you the exact condition that put it in or left it out. No template was edited. Nothing was deployed.
{
"state": "CA",
"flood_zone": "A",
"coverage_a": 750000,
"roof_age": "15yr+",
"water_backup": true,
"scheduled_items": false,
"mortgagee": true
}alwaysalwayswater_backup is oncoverage_a >= 750,000scheduled_items is onroof_age >= 15 yearsstate == "CA"state in FL, TXstate == "FL"flood_zone in A, Vflood_zone == "V"mortgagee is presentThis is a live preview of the rules, running in your browser. The real API takes the same fields and returns the rendered, signed PDFs.
Every document, and the rule that includes it.
You bring the form content. Mezdoc handles the templating, the conditions, and the assembly. This is the whole set a homeowners and flood program tends to touch, grouped the way you would actually think about it.
- Declarations page
always - Homeowners policy formHO-3
always - Personal property replacement costHO 04 90
if replacement cost
- Water back-up & sump overflowHO 04 95 / 06 95
if water_backup selected - Ordinance or law, increasedHO 04 77
if coverage_a >= 750,000 - Scheduled personal propertyHO 04 61
if scheduled_items - Premises alarm creditHO 04 16
if alarm_system - Roof payment schedule (ACV)RPS
if roof_age >= 15 - Named-storm / wind-hail deductible
if peril == named_storm
- Wildfire + FAIR Plan noticeCA
if state == "CA" - Hurricane / named-storm noticeFL / TX
if state in FL, TX - Sinkhole acceptance / rejectionFL
if state == "FL" - Fraud + replacement-cost disclosures
by state
- NFIP Homeowner / Dwelling / General Property formNFIP
if flood_zone in A, V - Flood declarations page
if flood bound - Increased Cost of ComplianceICC
if substantial loss - Coastal / V-zone endorsement
if flood_zone == "V"
- Notice of cancellation
if transaction == cancellation - Notice of nonrenewal
if transaction == nonrenewal - Reinstatement notice
if reinstated - Change endorsement + revised dec
if transaction == endorsement - Mortgagee / lienholder copy
if mortgagee present
One engine for declarations, endorsements, and cancellations.
The same field vocabulary and the same condition language cover every document set across the life of the policy. Build it once, reuse it everywhere.
Declaration
New business and renewal. Assemble the dec page, base form, selected endorsements, state notices, and flood forms by condition.
Declarations, HO-3, HO 04 95, HO 04 77, CA wildfire notice, NFIP form, mortgagee copy
Endorsement
Mid-term change. Issue the change endorsement and a revised declarations page, with the 30-day explanation when an endorsement reduces coverage.
Change endorsement, revised declarations, coverage-change explanation, mortgagee notice
Cancellation and nonrenewal
Notice days and wording vary by state and reason. Generate the right notice, plus reinstatement and lienholder copies, every time.
Notice of cancellation, notice of nonrenewal, reinstatement notice, mortgagee or lienholder copy
Keep your core system. Swap the document layer.
Your policy admin or rating system stays the system of record. It POSTs the policy JSON to a Mezdoc workflow and gets back the assembled, signed packet. No re-platforming, no migration project.
- Mezdoc is the document and eSign layer, not a policy admin or rating engine.
- You bring your own carrier forms and notice wording; we template and assemble them.
- Native single-signer eSign with an audit trail (IP, user agent, SHA-256 of the PDF). In active development.
POST https://api.mezdoc.com/v1/workflows/homeowners-declaration/runs
{
"environment": "production",
"idempotency_key": "decl_2026_06_01_00481",
"data": {
"policyholder_name": "Acme Holdings",
"coverage_a": 750000,
"state": "CA",
"fire_zone": "very_high",
"flood_zone": "A",
"water_backup_limit": 10000,
"mortgagee": "First National"
}
}Questions teams ask first.
What documents are in a homeowners insurance policy packet?
A bound homeowners policy is a packet, not a single PDF: a declarations page, a base policy form (for example an HO-3), the attached endorsements (water back-up HO 04 95, ordinance or law HO 04 77, scheduled property HO 04 61, and others), any state-mandated notices, and, when flood is bound, the NFIP or private flood forms. Which documents are included depends on the coverage, the property, and the state.
How do conditional document inclusions work?
Each document carries an include or exclude rule written in one condition language. Examples: include the California wildfire and FAIR Plan notice when the state is CA and the property is in a very high fire-hazard zone; include the NFIP flood form when the flood zone is A or V; attach water back-up HO 04 95 only when the insured selected it; add the mortgagee notice only when a mortgagee is present. Workflow-level fields are entered once and map into every document in the packet.
Can I keep my core system and use Mezdoc only for documents?
Yes. Mezdoc is the document generation, assembly, and eSign layer, not a policy admin or rating system. Your core system stays the system of record and POSTs policy JSON to a Mezdoc workflow; Mezdoc returns the assembled, signed packet. There is no re-platforming.
How is this different from hand-coded Liquid or Velocity templates?
Hand-coded templates live in code, so only engineers can change a sentence, every edit waits on a deploy, and versioning rides the platform pipeline. Mezdoc gives a visual editor your ops and compliance teams can use, real per-template versioning with staging and production pinning, instant preview, and the same condition language across structured PDFs, dynamic documents, and workflows.
Do you support flood (NFIP) documents?
Yes. The NFIP Homeowner Flood Form, Dwelling Form, and General Property Form, the flood declarations page, and private flood carrier forms can all be templated and assembled by rule, including ICC and zone-driven conditions.
Turn your declaration packet into a workflow.
Show us the forms and the conditions you handle today. We will map them to a workflow and show you a first assembled packet in your shape.