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
statusisactive startDateis more than 7 days in the past- No
checkInReportsrow exists for the tenancy (not even a draft)
Compliance Check
For each matching tenancy, a compliance check is upserted with the following attributes:
| Field | Value |
|---|---|
ruleId | check_in_report_missing |
ruleTitle | Check-In Report Missing |
status | fail |
riskLevel | critical |
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 Sweep | Missing Report Sweep | |
|---|---|---|
| Fires when | A draft exists but has not been finalised | No report of any kind has been started |
| Compliance rule | check_in_report_not_finalised | check_in_report_missing |
| Status / risk | warning / high | fail / critical |
| Notification type | warning | error |
| Cron | 0 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.