Port property assessor helpers to TypeScript

This commit is contained in:
2026-03-27 22:23:58 -05:00
parent 954374ce48
commit e6d987d725
14 changed files with 2155 additions and 202 deletions

View File

@@ -53,6 +53,69 @@ Prefer this order unless the user says otherwise:
Use the `web-automation` skill for rendered pages and anti-bot-heavy sites.
Use `web_search` sparingly to discover alternate URLs, then return to `web-automation` for extraction.
## Helper runtime
`property-assessor` now includes TypeScript helper commands for:
- public-record jurisdiction lookup
- fixed-template PDF rendering
Before using those helper commands:
```bash
cd ~/.openclaw/workspace/skills/property-assessor
npm install
```
## Public-record enrichment
Public-record / assessor data should be used when available and linked in the final result.
Default approach:
1. start from the street address
2. resolve the address to county/state/geography
3. identify the related appraisal district / assessor jurisdiction
4. use the official public-record site as a primary-source check against listing data
5. link the official jurisdiction page and any direct property page used in the final result
Use the helper CLI first:
```bash
cd ~/.openclaw/workspace/skills/property-assessor
npm install
scripts/property-assessor locate-public-records --address "<street-address>"
```
This command currently:
- resolves the address through the official Census geocoder
- returns county/state/FIPS/GEOID context
- for Texas, resolves the official Texas Comptroller county directory page
- returns the county appraisal district and tax assessor/collector links when available
Important rules:
- listing-site geo IDs are hints only; do **not** treat them as assessor record keys
- parcel/APN/account identifiers from Zillow/HAR/Redfin are much stronger keys than listing geo IDs
- if a direct public-record property page is available, use its data in the assessment and link it explicitly
- if the jurisdiction can be identified but the property detail page is not directly retrievable, still link the official jurisdiction page and say what could not be confirmed
### Texas rule
For Texas properties, public-record enrichment is required when feasible.
Process:
1. run `locate-public-records` from the subject address
2. use the returned Texas Comptroller county directory page as the official jurisdiction reference
3. use the returned CAD website for address / account / parcel lookup
4. when accessible, capture:
- account number
- owner name
- land value
- improvement value
- assessed total
- exemptions
- tax office links
In the final assessment, explicitly label official public-record facts as such.
## Minimum data to capture
For the target property, capture when available:
@@ -74,6 +137,9 @@ For the target property, capture when available:
- listing photos and visible condition cues
- included appliances and obvious missing appliances
- flooring mix, especially whether carpet is present
- public-record jurisdiction and linked official source
- account / parcel / tax ID if confirmed
- official assessed values and exemptions if confirmed
## Photo and condition review
@@ -217,6 +283,51 @@ The final assessment must explicitly include these lines in the output:
If completed, briefly summarize the condition read from the photos.
If not completed, mark condition confidence as limited and say why.
## PDF report requirement
The deliverable is not just chat text. A fixed-template PDF report must be generated for completed assessments.
Use the property-assessor helper CLI:
```bash
cd ~/.openclaw/workspace/skills/property-assessor
npm install
scripts/property-assessor render-report --input "<report-payload-json>" --output "<output-pdf>"
```
The renderer uses a fixed template and must keep the same look across runs.
Template rules are documented in `references/report-template.md`.
The PDF report should include:
1. report header
2. verdict panel
3. subject-property summary table
4. Snapshot
5. What I like
6. What I do not like
7. Comp view
8. Underwriting / carry view
9. Risks and diligence items
10. Photo review
11. Public records
12. Source links
### Recipient-email gate
Before rendering or sending the PDF, the skill must know the target recipient email address(es).
If the prompt does **not** include target email(s):
- stop
- ask the user for the target email address(es)
- do **not** render or send the final PDF yet
If target email(s) are present:
- include them in the report payload
- render the PDF with the fixed template
- if a delivery workflow is available, use those same target email(s) for sending
The renderer enforces this gate and will fail if the payload has no recipient email list.
## Normalization / make-ready adjustment
Estimate a rough make-ready budget when condition is not turnkey. The goal is not contractor precision; the goal is apples-to-apples comparison.
@@ -257,7 +368,15 @@ Keep the answer concise but decision-grade:
6. Risks and diligence items
7. Verdict with fair value range and offer guidance
Also include:
- public-record / CAD evidence and links when available
- the path to the rendered PDF after generation
If the user did not provide recipient email(s), ask for them instead of finalizing the PDF workflow.
## Reuse notes
When condos are involved, same-building comps and HOA economics usually matter more than neighborhood averages.
For detailed heuristics and the reusable memo template, read `references/underwriting-rules.md`.
For detailed heuristics and the reusable memo template, read:
- `references/underwriting-rules.md`
- `references/report-template.md`