All Docs
FeaturesDepositClearUpdated March 14, 2026

Check-In Report Missing Escalation

Check-In Report Missing Escalation

DepositClear runs a nightly background sweep that detects active tenancies where no check-in report has been started at all. When found, it raises a critical compliance flag and notifies all org admins via in-app error notifications.

Why This Matters

Absence of a check-in report is cited by TDS, DPS, and mydeposits adjudicators as the #1 cause of rejected deposit deduction claims. Unlike a stale draft — where some evidence at least exists — a completely missing report leaves agents with zero baseline condition record. This gap cannot be remedied once a dispute has been referred to a deposit scheme.

How It Works

Trigger

The sweep is an Inngest cron function (check-in-missing-escalation) scheduled to run every day at 08:00 UTC (0 8 * * *).

Detection Logic

The function identifies tenancies that meet both of the following conditions:

  • Tenancy status is active
  • startDate is more than 7 days in the past
  • No checkInReports row exists for the tenancy (not even a draft)

Compliance Check

For each matching tenancy, a compliance check is upserted with the following attributes:

FieldValue
ruleIdcheck_in_report_missing
ruleTitleCheck-In Report Missing
statusfail
riskLevelcritical

The compliance record includes:

  • detail — States how many days have elapsed since the tenancy started and how many days past the 7-day window the tenancy is, plus context on adjudication risk.
  • remediation — Instructs users to create a check-in report immediately, use an inventory template, photograph every room, note all existing damage, and finalise the report as soon as possible.

The check is upserted on conflict of (tenancyId, ruleId), so re-runs update the existing record rather than creating duplicates.

Notifications

An error-type in-app notification is sent to every admin and owner in the tenancy's organisation. Each notification:

  • Has the title 🚨 Check-In Report Not Started
  • Includes the property address (address line 1, town, postcode)
  • States how many days overdue the report is
  • Contains a deep-link to /dashboard/check-in?tenancyId=<id> so the recipient can act immediately

Batch Processing

Tenancies are processed in batches of 50 using Inngest step isolation, ensuring large portfolios do not hit memory or timeout limits. The function runs with a concurrency limit of 1 (no parallel executions of the same function) and retries up to 2 times on failure.

Relationship to the Draft Staleness Sweep

This sweep is intentionally separate from the existing check-in draft staleness sweep (06:00 UTC). The two sweeps cover complementary scenarios:

Draft Staleness SweepMissing Report Sweep
Fires whenA draft exists but has not been finalisedNo report of any kind has been started
Compliance rulecheck_in_report_not_finalisedcheck_in_report_missing
Status / riskwarning / highfail / critical
Notification typewarningerror
Cron0 6 * * *0 8 * * *

The missing-report sweep represents the more severe case and is surfaced at a higher urgency level throughout the compliance dashboard and notification centre.

Compliance Dashboard

Escalated tenancies appear on the compliance dashboard under the check_in_report_missing rule with a Critical risk badge. The detail and remediation fields are displayed inline so agents can understand the issue and take action without leaving the dashboard.

Resolving the Flag

Once a check-in report is created for the tenancy (any status), the next sweep run will no longer match that tenancy. The compliance check resolvedAt field is populated and the notification is no longer re-sent.