{
  "events": [
    {
      "timestamp": "2026-09-24T00:11:42.171109+00:00",
      "event": "job_started",
      "job_id": "20260924-001142-9-51-braemore-street-seville-grove-6112"
    },
    {
      "timestamp": "2026-09-24T00:11:42.202822+00:00",
      "event": "uploads_saved",
      "files": [
        "main (8).jpg",
        "rp-data-cma.pdf",
        "rp-data-rental-cma.pdf"
      ]
    },
    {
      "timestamp": "2026-09-24T00:11:45.563333+00:00",
      "event": "htag_market_warning",
      "warning": "HTAG address resolution returned multiple properties in the same locality; locality-level data was used"
    },
    {
      "timestamp": "2026-09-24T00:11:45.564006+00:00",
      "event": "market_data_loaded",
      "suburb": "Seville Grove"
    },
    {
      "timestamp": "2026-09-24T00:12:22.563704+00:00",
      "event": "pack_assembled",
      "sections": 2
    },
    {
      "timestamp": "2026-09-24T00:12:35.176062+00:00",
      "event": "job_failed",
      "error": "Invalid job_id format: '20260924-001142-9-51-braemore-street-seville-grove-6112'",
      "error_type": "ValueError",
      "traceback": "Traceback (most recent call last):\n  File \"/app/src/spp_tools/web/services/job_service.py\", line 105, in create_job\n    pipeline_result = _run_pipeline_body(\n        job_dir, diag, form_data, config, job_id,\n        inputs_dir, manifests_dir, outputs_dir, htag_meta,\n    )\n  File \"/app/src/spp_tools/web/services/job_service.py\", line 125, in _run_pipeline_body\n    return _run_pr_pipeline(\n        job_dir=job_dir,\n    ...<6 lines>...\n        htag_meta=htag_meta,\n    )\n  File \"/app/src/spp_tools/web/services/job_service.py\", line 364, in _run_pr_pipeline\n    register_job(job_id, {\n    ~~~~~~~~~~~~^^^^^^^^^^\n        \"pack_type\": \"pr\",\n        ^^^^^^^^^^^^^^^^^^\n    ...<2 lines>...\n        \"pack_sections\": pack_manifest[\"section_count\"],\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    })\n    ^^\n  File \"/app/src/spp_tools/web/job_store.py\", line 19, in register_job\n    raise ValueError(f\"Invalid job_id format: {job_id!r}\")\nValueError: Invalid job_id format: '20260924-001142-9-51-braemore-street-seville-grove-6112'\n"
    },
    {
      "timestamp": "2026-09-24T00:12:35.176599+00:00",
      "event": "job_finished"
    }
  ],
  "form_fields": {
    "pack_type": "pr",
    "client_name": "Nick Graham & Jess Graham",
    "property_address": "9/51 Braemore Street, Seville Grove, 6112 WA",
    "purchase_price": "527000",
    "agent_expected_price": "",
    "lvr": "73",
    "low_rent": "400",
    "high_rent": "500",
    "interest_rate": "6.25",
    "property_management_fee": "8.8",
    "buyers_agency_fee": "16000",
    "land_value": "350000",
    "state": "WA",
    "property_type": "House",
    "bed_bath_car": "",
    "block_size": "",
    "house_size": "",
    "year_built": "",
    "planning_zone": "",
    "flood_zone": "No",
    "bushfire_zone": "No",
    "buying_brief": "",
    "why_we_like_it": "",
    "review_period": "Annual Review",
    "review_date": "September 2026",
    "purchase_date": "August 2025",
    "current_appraisal_price": "620000",
    "initial_rent": "575",
    "current_rent": "575",
    "vacancy_weeks": "4",
    "negative_gearing_benefits": "true",
    "rental_unit_1_name": "",
    "rental_unit_1_rent": "",
    "rental_unit_2_name": "",
    "rental_unit_2_rent": "",
    "property_manager_commentary": "N/A",
    "strata": "1600",
    "comments": "A well selected property that has performed very well in a buoyant Perth market. Recent legislative headwinds have taken a little momentum out of the proverbial sales but outlook remains strong.",
    "advisor_name": "Julian Khursigara",
    "advisor_phone": "0418 679 283",
    "advisor_letter": "It is hard to believe it has already been 13 months since we secured 9/51 Braemore Street together. What a first year it has been.\r\n\r\nThe headline result speaks for itself \u2014 your property has grown in value by an estimated $93,000 since settlement in August 2025, representing a 17.6% capital gain over 13 months. This provides a strong foundation for the next stage of your property strategy.\r\n\r\nThe property is currently earning $575 per week, in line with the rent achieved at purchase.\r\n\r\nThis report gives you a clear, honest picture of where your investment stands today \u2014 what it is worth, what it is earning, and what the market around it is doing. It also outlines how your equity position could support a conversation with your mortgage broker and the next purchase in your property journey.\r\n\r\nWe are proud of the result we have achieved together, and we look forward to helping you build on it. As always, we are just a call away.",
    "equity_commentary": "",
    "propportfolio_commentary": "",
    "scenario_commentary": "",
    "htag_suburb_report": null,
    "develo_report": null,
    "supporting_pdfs": []
  },
  "job_id": "20260924-001142-9-51-braemore-street-seville-grove-6112",
  "uploaded_files": [
    "main (8).jpg",
    "rp-data-cma.pdf",
    "rp-data-rental-cma.pdf"
  ],
  "cma_filter": {
    "filtering_applied": false,
    "reason": "no disclaimer page detected",
    "original_page_count": 18
  },
  "htag_source": {
    "source": "api",
    "provider": "HTAG",
    "status": "available",
    "loc_pid": "WA3222",
    "suburb": "Seville Grove",
    "state": "WA",
    "postcode": "6112",
    "property_type": "house",
    "period_end": "2026-08-31T00:00:00+00:00"
  },
  "property_performance_review": {
    "status": "included",
    "output_pdf": "outputs/property-performance-review.pdf",
    "page_count": 10,
    "sales_count": 4,
    "rentals_count": 5,
    "render_mode": "playwright",
    "cashflow": {
      "weekly_rent": "575.0",
      "vacancy_weeks": "4.0",
      "occupied_weeks": "48.0",
      "annual_potential_rent": "29900.0",
      "annual_vacancy_allowance": "2300.00",
      "annual_rent_after_vacancy": "27600.00",
      "modelled_loan_amount": "384710.000",
      "annual_interest": "23916.69253447072525208061393",
      "annual_principal": "4508.015166653726803272515374",
      "annual_debt_service": "28424.70770112445205535312930",
      "annual_management_fee": "2428.80000",
      "annual_council_rates": "2400",
      "annual_water_charges": "0",
      "annual_strata": "1600.0",
      "annual_insurance": "2000",
      "annual_maintenance": "10540.000",
      "annual_land_tax": "300",
      "annual_operating_costs": "19268.80000",
      "annual_net_operating_income": "8331.20000",
      "annual_cashflow_after_debt": "-20093.50770112445205535312930",
      "weekly_cashflow_after_debt": "-386.4136096370086933721755635",
      "annual_tax_deductible_expenses": "32645.49253447072525208061393",
      "annual_taxable_rental_income": "-5045.49253447072525208061393",
      "annual_estimated_tax_benefit": "1866.832237754168343269827154",
      "annual_cashflow_after_tax": "-18226.67546337028371208330215",
      "weekly_cashflow_after_tax": "-350.5129896801977636939096567"
    },
    "missing_inputs": [],
    "omitted_sections": [
      "retirement-scenarios"
    ],
    "warnings": [
      "HTAG address resolution returned multiple properties in the same locality; locality-level data was used"
    ],
    "disclaimer_render_mode": "playwright"
  },
  "pack": {
    "final_pdf": "outputs/final.pdf",
    "section_count": 2,
    "sections": [
      {
        "name": "pr-review",
        "label": "Property Performance Review",
        "status": "included",
        "source": "outputs/property-performance-review.pdf"
      },
      {
        "name": "supporting",
        "label": "Supporting Documents",
        "status": "skipped",
        "skip_reason": "not uploaded"
      },
      {
        "name": "disclaimer",
        "label": "Disclaimer",
        "status": "included",
        "source": "outputs/disclaimer.pdf"
      }
    ]
  }
}