Skip to main content

AI Owner Digest (deep dive)

User-facing walkthrough: Fortnightly Digest.

Prompt structure

ClaudeDigestDrafter sends Claude:

  • Owner first name (for salutation only)
  • PM first name (for sign-off)
  • Agency name
  • For each property the owner owns:
    • Suburb / state / postcode (no street detail)
    • Work orders completed in the period (scope, cost in dollars, completion date)
    • Compliance items completed in the period (friendly name, date)
    • Compliance items due within 30 days (friendly name, due date)
    • Insurance status summary

The system prompt asks for:

  • Australian English
  • First-person-plural ("we") for the agency voice
  • Specific dollar figures, not bands
  • Warm but not saccharine
  • Overdue items lead the subject + body if any exist
  • 2-3 alternate subject lines

Output structure

record DraftedDigest(
String subject,
List<String> alternateSubjects,
String body,
String modelVersion
) {}

Friendly compliance naming — the fix

Early draft outputs leaked UUIDs: "we'll book rule-2188-7384 next month". Reason: Claude saw the compliance entities with their primary-key IDs in the prompt context.

Fix: DigestContext now carries a Map<UUID, String> ruleDisplayNameById. The prompt injects the map and instructs Claude to reference rules by their display name. Output is clean prose: "we'll book the smoke alarm annual test next month".

Fallback template

If Claude fails:

Subject: Fortnightly property update — {propertyAddress}

Hi {ownerFirstName},

Short update from us this fortnight.

{if completedWorkOrders non-empty:
"We completed the following work this period:
- {scope} ({date}, ${amount})
..."}

{if upcomingCompliance non-empty:
"Coming up: {friendlyName} due {date}."}

{if nothing to report:
"Nothing urgent to report. Rent continues on time."}

Let us know if you'd like anything else.

— {pmFirstName}, {agencyName}

Not as warm as Claude's prose, but informative. PM can edit before send.

What's explicitly not sent

  • Tenant identity (name, email, mobile)
  • Tenant payment status (rent arrears, late fees) — that's the PMS's job
  • Contractor contact details
  • Internal database IDs

See also