Template gallery / architectural-request-response
Architectural review response letter template
Architectural review committee decision letter in four states selected by `decision`: approved, approved with conditions, denied or deferred. The verdict is the largest thing on the page after the association's name, set between two rules; the conditions print as a numbered record with a box the owner can tick and the evidence the committee wants back; the dates that apply are a ruled band with the lapse date in brick red.
chromium default PDF 21 top-level fields Billed per page
Fields
The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.
| Field | Type | Required | Description |
|---|---|---|---|
| accent | string | optional | The association's navy. It sets the verdict word on an approval; a denial or deferral takes the brick red instead, and the keylines stay black ink. A hex colour or a CSS colour keyword. It is interpolated into the stylesheet, so nothing else is accepted. |
| letter_date | string (date) | required | |
| decision | "approved" | "conditional" | "denied" | "deferred" | required | Drives the whole page: the headline word, whether it is set in navy or brick red, and which sections print. `denied` hides the dates band and turns the appeal heading into a right to appeal. |
| decided_on | string (date) | required | |
| association | object { name, address, phone, email, … } | required | |
| committee | object { name, members } | optional | |
| vote | string | optional | Recorded tally, printed in the footer. |
| owner | object { name, salutation, address_line1, city_state_zip } | required | |
| property | object { address, unit } | required | |
| request | object { id, title, submitted_on, description, … } | required | |
| guidelines | string | optional | The provisions the committee measured the application against. |
| opening | string | optional | Replaces the default opening paragraph. |
| conditions | array of object { title, text, evidence } | optional | Printed only when the decision is conditional. Each one is a thing the owner must do or the approval does not hold. |
| reasons | array of string | optional | Findings, or the grounds for a denial. |
| resubmit | string | optional | What a version of the application would have to look like to be approved. |
| timeline | object { begin_by, begin_note, complete_by, complete_note, … } | optional | The three-column ruled date band under the letter. Hidden when the decision is a denial. |
| appeal | object { statement, request_by, send_to, body, … } | optional | |
| reminder | string | optional | Replaces the default "this is not a building permit" paragraph. |
| valediction | string | optional | |
| signer | object { name, title } | required | |
| copies | string | optional |
Default render options
Applied unless you override them. Options are part of the cache key.
| page_size | "Letter" |
| margin | {"top":"0.75in","right":"0.75in","bottom":"0.95in","left":"0.75in"} |
| print_background | true |
Example payload
This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.
{
"letter_date": "2026-09-16",
"decision": "conditional",
"decided_on": "2026-09-14",
"association": {
"name": "Heron Bay Homeowners Association, Inc.",
"address": "PO Box 4127, Wilmington, NC 28406",
"phone": "(910) 555-0177",
"email": "arc@heronbayhoa.example.test"
},
"committee": {
"name": "Architectural Review Committee",
"members": [
"Karen Whitfield, Chair",
"Tomás Ferreira",
"Beth Sandlin",
"Greg Sandoval (absent)"
]
},
"vote": "3 in favour, 0 opposed, 1 absent",
"owner": {
"name": "Lucia Marchetti",
"salutation": "Ms. Marchetti",
"address_line1": "1377 Egret Landing",
"city_state_zip": "Wilmington, NC 28411"
},
"property": {
"address": "1377 Egret Landing, Wilmington, NC 28411",
"unit": "Lot 87"
},
"request": {
"id": "ARC-2026-041",
"title": "a rear screened porch and composite deck",
"submitted_on": "2026-08-24",
"description": "Build a 14 ft by 18 ft screened porch on the rear elevation with a composite deck and open stairs to grade. Shed roof tied in below the existing eave with shingles to match the house. Screens to be charcoal fibreglass in a bronze frame.",
"contractor": "Sound Coast Outdoor Living, NC licence 78412",
"documents": [
"Site plan showing rear setback of 24 ft, dated Aug 20, 2026",
"Elevation drawings, two sheets, dated Aug 20, 2026",
"Manufacturer colour sheet for TimberTech decking",
"Photograph of the existing rear elevation"
]
},
"guidelines": "Design Guidelines sections 4.2 (Additions), 4.7 (Decking Materials) and 5.1 (Roof Pitch and Materials), and Declaration Article VII",
"opening": "Thank you for a complete and well-drawn application. The site plan and elevations answered most of the committee's usual questions, which is why this came back in three weeks rather than six.",
"conditions": [
{
"title": "Decking colour.",
"text": "The Tiger Wood colour submitted is not in the approved palette in guideline 4.7. Use Coastal Bluff, Weathered Teak or Sandy Birch. No second application is needed.",
"evidence": "the manufacturer colour name, by email, before the decking is ordered"
},
{
"title": "Trim and posts painted.",
"text": "Porch posts, beam and fascia are to be painted Sherwin-Williams Alabaster SW 7008 to match the existing house trim. Bare or stained treated lumber is not approved on this elevation.",
"evidence": "a photograph of the painted posts with the final inspection"
},
{
"title": "Roof tie-in below the eave.",
"text": "The shed roof must tie in below the existing eave as drawn on sheet 2. If the framing requires the tie-in to be raised, stop work and resubmit that detail."
},
{
"title": "Stair location.",
"text": "Stairs to grade must remain on the north side as drawn, so the runoff path to the swale between Lots 86 and 87 stays clear."
},
{
"title": "Grading and restoration.",
"text": "Any lawn or irrigation disturbed by the work, including in the common area behind the fence line, is to be restored within 30 days of completion at the owner's expense.",
"evidence": "nothing, unless the common area is disturbed, in which case tell us before the work starts"
}
],
"reasons": [
"The footprint, rear setback of 24 ft and roof pitch all meet the guidelines as submitted.",
"The decking colour submitted is not in the approved palette (guideline 4.7), which is the only substantive change the committee is requiring.",
"The committee noted that the neighbouring porch at Lot 86 was approved in 2024 with the same roof detail, so the tie-in as drawn is consistent with what is already built on this street."
],
"timeline": {
"begin_by": "2026-12-14",
"begin_note": "This approval lapses if work has not begun within 90 days.",
"complete_by": "2027-03-14",
"complete_note": "An extension may be requested in writing before this date.",
"inspection": "Within 14 days of completion",
"inspection_note": "Email the committee a photograph of the finished work to close the file."
},
"appeal": {
"statement": "You may ask the Board of Directors to review any condition in this decision. A request must be in writing and received within thirty days. You may appear, be represented, and present drawings, samples and witnesses.",
"request_by": "2026-10-16",
"send_to": "Secretary, PO Box 4127, Wilmington NC 28406, or arc@heronbayhoa.example.test",
"body": "The Board of Directors, at its next regular meeting after the request is received",
"note": "Work performed while an appeal is pending is at the owner's own risk."
},
"valediction": "Sincerely,",
"signer": {
"name": "Karen Whitfield",
"title": "Chair, Architectural Review Committee"
},
"copies": "Board of Directors; ARC file 2026-041; Lot 87 property file"
} Render it
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "architectural-request-response@1",
"format": "pdf",
"data": "… the example payload above …"
}' # No API key. The first call mints a trial of 10 PDF pages or 10 images.
curl -sS https://mcp.galleyrender.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "render",
"arguments": {
"template": "architectural-request-response",
"format": "pdf",
"data": { … see the example payload above … }
}
}
}'
Pin the version — architectural-request-response@1 — in anything you ship. Publishing a new
version never changes an old one. Render endpoint reference →
Renders the example payload on the production service. No account, no key.
JSON Schema
schema.json (21 top-level properties)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Architectural request response",
"type": "object",
"required": [
"association",
"owner",
"property",
"request",
"decision",
"decided_on",
"letter_date",
"signer"
],
"additionalProperties": true,
"properties": {
"accent": {
"type": "string",
"description": "The association's navy. It sets the verdict word on an approval; a denial or deferral takes the brick red instead, and the keylines stay black ink. A hex colour or a CSS colour keyword. It is interpolated into the stylesheet, so nothing else is accepted.",
"default": "#1c3f60",
"examples": [
"#1c3f60"
],
"pattern": "^(#[0-9a-fA-F]{3,8}|[a-zA-Z]{3,20})$"
},
"letter_date": {
"type": "string",
"format": "date",
"examples": [
"2026-09-16"
]
},
"decision": {
"type": "string",
"description": "Drives the whole page: the headline word, whether it is set in navy or brick red, and which sections print. `denied` hides the dates band and turns the appeal heading into a right to appeal.",
"enum": [
"approved",
"conditional",
"denied",
"deferred"
],
"examples": [
"conditional"
]
},
"decided_on": {
"type": "string",
"format": "date",
"examples": [
"2026-09-14"
]
},
"association": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Heron Bay Homeowners Association, Inc."
]
},
"address": {
"type": "string",
"examples": [
"PO Box 4127, Wilmington, NC 28406"
]
},
"phone": {
"type": "string",
"examples": [
"(910) 555-0177"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"arc@heronbayhoa.example.test"
]
},
"logo_url": {
"type": "string",
"format": "uri",
"examples": [
"https://example.com/heron-bay.png"
]
}
}
},
"committee": {
"type": "object",
"properties": {
"name": {
"type": "string",
"default": "Architectural Review Committee",
"examples": [
"Architectural Review Committee"
]
},
"members": {
"type": "array",
"items": {
"type": "string",
"examples": [
"Karen Whitfield, Chair"
]
},
"examples": [
[
"Karen Whitfield, Chair"
]
]
}
}
},
"vote": {
"type": "string",
"description": "Recorded tally, printed in the footer.",
"examples": [
"3 in favour, 0 opposed, 1 absent"
]
},
"owner": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Lucia Marchetti"
]
},
"salutation": {
"type": "string",
"examples": [
"Ms. Marchetti"
]
},
"address_line1": {
"type": "string",
"examples": [
"1377 Egret Landing"
]
},
"city_state_zip": {
"type": "string",
"examples": [
"Wilmington, NC 28411"
]
}
}
},
"property": {
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"examples": [
"1377 Egret Landing, Wilmington, NC 28411"
]
},
"unit": {
"type": "string",
"examples": [
"Lot 87"
]
}
}
},
"request": {
"type": "object",
"required": [
"id",
"description"
],
"properties": {
"id": {
"type": "string",
"examples": [
"ARC-2026-041"
]
},
"title": {
"type": "string",
"description": "Short phrase used in the verdict sentence.",
"examples": [
"a rear screened porch and composite deck"
]
},
"submitted_on": {
"type": "string",
"format": "date",
"examples": [
"2026-08-24"
]
},
"description": {
"type": "string",
"examples": [
"Build a 14 ft by 18 ft screened porch on the rear elevation with a composite deck and stairs to grade. Roof to be a shed roof tied below the existing eave, shingles to match the house."
]
},
"contractor": {
"type": "string",
"examples": [
"Sound Coast Outdoor Living, NC licence 78412"
]
},
"documents": {
"type": "array",
"items": {
"type": "string",
"examples": [
"Site plan showing setbacks, dated Aug 20, 2026"
]
},
"examples": [
[
"Site plan showing setbacks, dated Aug 20, 2026"
]
]
}
}
},
"guidelines": {
"type": "string",
"description": "The provisions the committee measured the application against.",
"examples": [
"Design Guidelines sections 4.2 (Additions), 4.7 (Decking Materials) and Declaration Article VII"
]
},
"opening": {
"type": "string",
"description": "Replaces the default opening paragraph.",
"examples": [
"Thank you for a complete and well-drawn application; it made the review straightforward."
]
},
"conditions": {
"type": "array",
"description": "Printed only when the decision is conditional. Each one is a thing the owner must do or the approval does not hold.",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"title": {
"type": "string",
"description": "Short bold lead-in that runs into the condition text.",
"examples": [
"Match the trim colour."
]
},
"text": {
"type": "string",
"examples": [
"Porch posts, beam and fascia are to be painted Sherwin-Williams Alabaster SW 7008 to match the existing house trim, not left as bare treated lumber."
]
},
"evidence": {
"type": "string",
"description": "What the owner has to send the committee to close this condition out. A condition with nothing to send back is a condition argued about at the final inspection.",
"examples": [
"the manufacturer colour name, by email, before the decking is ordered"
]
}
}
}
},
"reasons": {
"type": "array",
"description": "Findings, or the grounds for a denial.",
"items": {
"type": "string",
"examples": [
"The decking colour submitted, Tiger Wood, is not in the approved palette in guideline 4.7."
]
},
"examples": [
[
"The decking colour submitted is not in the approved palette."
]
]
},
"resubmit": {
"type": "string",
"description": "What a version of the application would have to look like to be approved.",
"examples": [
"A resubmission showing the deck in Coastal Bluff, Weathered Teak or Sandy Birch, with the same footprint and roof detail, would be approved administratively without a further committee meeting."
]
},
"timeline": {
"type": "object",
"description": "The three-column ruled date band under the letter. Hidden when the decision is a denial.",
"properties": {
"begin_by": {
"type": "string",
"format": "date",
"examples": [
"2026-12-14"
]
},
"begin_note": {
"type": "string",
"examples": [
"This approval lapses if work has not begun by this date."
]
},
"complete_by": {
"type": "string",
"format": "date",
"examples": [
"2027-03-14"
]
},
"complete_note": {
"type": "string",
"examples": [
"An extension may be requested in writing before this date."
]
},
"inspection": {
"type": "string",
"examples": [
"Within 14 days of completion"
]
},
"inspection_note": {
"type": "string",
"examples": [
"Email the committee a photograph of the finished work to close the file."
]
}
}
},
"appeal": {
"type": "object",
"properties": {
"statement": {
"type": "string",
"examples": [
"You may ask the Board of Directors to review this decision."
]
},
"request_by": {
"type": "string",
"format": "date",
"examples": [
"2026-10-14"
]
},
"send_to": {
"type": "string",
"examples": [
"Secretary, Heron Bay HOA, PO Box 4127, Wilmington, NC 28406"
]
},
"body": {
"type": "string",
"examples": [
"The Board of Directors, at its next regular meeting"
]
},
"note": {
"type": "string",
"examples": [
"Work performed while an appeal is pending is at the owner's own risk."
]
}
}
},
"reminder": {
"type": "string",
"description": "Replaces the default \"this is not a building permit\" paragraph.",
"examples": [
"Approval by this committee is an aesthetic decision and is not a building permit."
]
},
"valediction": {
"type": "string",
"default": "Sincerely,",
"examples": [
"Sincerely,"
]
},
"signer": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Karen Whitfield"
]
},
"title": {
"type": "string",
"examples": [
"Chair, Architectural Review Committee"
]
}
}
},
"copies": {
"type": "string",
"examples": [
"Board of Directors; ARC file 2026-041"
]
}
}
}