Articles on: Features

Clients & Properties

Clients & Properties


Creative Job Hub models both Clients (customers) and their Properties (service locations). Properties are first-class entities that let you manage service locations, inspection status, property metadata, photos and map views — a capability that differentiates CJH from many other field-service products.




Clients — quick overview

  • Client records hold the primary contact, phone, email and address and a history of linked jobs, invoices and notes. Use client records to see a customer’s jobs and related properties.
  • Clients are selectable when creating properties, jobs, estimates or invoices so relationships are maintained across the system.




Properties — what they are

Properties represent service locations (addresses) associated with a client. Each property stores:

  • Address fields (address1, address2, city, state, zip) and geocoded coordinates (lat/lng). The UI attempts to geocode addresses automatically when a property is created or updated. :contentReference[oaicite:0]{index=0}
  • Property metadata: property_type (rental, owner_occupied, commercial, other), bedrooms, bathrooms, square_footage, optional photo_url and freeform notes. :contentReference[oaicite:1]{index=1}
  • Links to the owning client (client_id) and to property inspections (inspection history).


(These fields are validated client-side in the property dialog.) :contentReference[oaicite:2]{index=2}




Adding & editing properties

  • Use the Add Property action in the Properties page to open a property dialog. The dialog enforces required fields (client, address, city, state, zip, property type) and optional numeric fields (bedrooms, bathrooms, square footage). The component geocodes addresses to obtain coordinates; if geocoding fails the property is still saved but without coordinates.
  • On successful save the app invalidates properties queries and logs an activity entry (create/update). :contentReference[oaicite:4]{index=4}




List & Map views

  • The Properties screen supports both a list (table/cards) and a map view. Use the map for visual inspection of your portfolio or the list for bulk actions and details. The Properties page shows address, client, type, quick details (beds/baths/sqft) and an inspection status badge (for rental properties). :contentReference[oaicite:5]{index=5}
  • In list mode clicking a property opens its details page (/properties/:id) for deeper actions and inspection history. :contentReference[oaicite:6]{index=6}




Inspection status & health

  • CJH calculates an inspection status for properties (OK / Due Soon / Overdue / No History) based on the most recent inspection date and the property's inspection_frequency_months. The logic:
  • If there is no inspection history → No History.
  • Otherwise the code computes nextDue = lastInspection + frequencyMonths.
  • If nextDue is in the past → Overdue; if within 30 days → Due Soon; otherwise → OK.
  • This calculation is implemented centrally in calculateInspectionStatus. :contentReference[oaicite:7]{index=7}
  • The Properties UI uses this status to filter properties (All / Due Soon / Overdue / No History) and to show a visual badge on list rows/cards for quick triage. :contentReference[oaicite:8]{index=8}




Portfolio & photos

  • The system also includes a Job Portfolio view that aggregates job photos and links each photo back to the job and the property (address). The portfolio search allows searching by job #, title, client or address so photos can be found by property or client. :contentReference[oaicite:9]{index=9}




Best practices

  • Geocodeable addresses: For maps and routing make sure addresses are correct and complete. The dialog attempts to geocode on save, but good address data improves results. :contentReference[oaicite:10]{index=10}
  • Use property types: Mark rentals or owner-occupied properties correctly — inspection workflows and status badges use the property type. :contentReference[oaicite:11]{index=11}
  • Attach photos to jobs: Photos attached to job records appear in the portfolio and are searchable by property address. :contentReference[oaicite:12]{index=12}





Updated on: 10/01/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!