Branch Hours Policy Exception Audit
Pricing
from $20.00 / 1,000 branch auditeds
Branch Hours Policy Exception Audit
Compare an authorized branch hours export with your own corporate hours and holiday policy. Reports schedule mismatches and missing confirmations from supplied data only.
Pricing
from $20.00 / 1,000 branch auditeds
Rating
0.0
(0)
Developer
Practical AI Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Compare an authorized branch hours export you already hold against your own corporate hours and holiday policy. The Actor lists branches whose schedules disagree with policy and branches that lack a recent confirmation.
It works only on the data you paste in. It does not scrape Google Maps or any other site, makes no network requests, and never claims to know a branch's live opening hours.
What it checks
| Check | Codes |
|---|---|
| Weekly hours differ from policy (with optional minute tolerance and regional overrides) | WEEKLY_HOURS_MISMATCH, MISSING_DAY_HOURS, UNPARSEABLE_HOURS |
| Holiday handling differs from policy | HOLIDAY_OPEN_POLICY_CLOSED, HOLIDAY_CLOSED_POLICY_OPEN, HOLIDAY_HOURS_MISMATCH, MISSING_HOLIDAY_ENTRY |
| Branch confirmation is absent, stale, invalid or dated in the future | MISSING_CONFIRMATION, STALE_CONFIRMATION, INVALID_CONFIRMATION_DATE, FUTURE_CONFIRMATION_DATE |
| Export hygiene | DUPLICATE_BRANCH_ID, UNKNOWN_DAY_KEY, INVALID_SPECIAL_DATE |
Each finding has a severity (high, medium, low), the policy value, the exported value and the largest time difference in minutes where that applies.
Input
Copy the prefilled input in the Console as a starting point. Main fields:
policy(required):weeklyHours, optionalregionalWeeklyHours, andholidays(each withdate,name,hours, optionalregions).branches: JSON list withbranchId,name,region,hours,specialHours,confirmedOn.branchesCsv: optional CSV with columnsbranch_id,branch_name,region,day,hours,confirmed_on. Thedaycolumn holds a weekday (Mon,monday) or aYYYY-MM-DDholiday date. CSV and JSON branches are merged.asOfDate,toleranceMinutes,maxConfirmationAgeDays,requireConfirmation,maxFindingsPerBranch.
Accepted hours text: 09:00-18:00, 9am-5:30pm, 09:00-12:00,13:00-17:00, 22:00-02:00 (closes after midnight), closed, 24h.
Region names are matched case-insensitively. A branch with no region only gets the base weekly policy and holidays that are not region-limited.
Output
The default dataset contains two record types:
branch_summary: one per branch, with status (cleanorexceptions), counts by severity, and the number of weekdays and holidays checked.finding: one per exception, capped bymaxFindingsPerBranch. The summary keeps the true total.
A SUMMARY record in the key-value store holds run totals and counts per code.
Pricing event
The code emits one branch-audited event per branch after the whole audit has finished and results are stored. Runs that fail on input validation or crash before completion emit no event. No payable plan is configured in this repository; pricing is set separately by the owner.
Limitations and sample-size caveats
- Not live hours. Results describe the consistency of your export against your policy at the reference date. A branch listed as consistent may still be wrong in reality.
- Garbage in, garbage out. If the export is outdated or came from an unreliable source, matching policy proves nothing. Confirmation dates are only as good as the dates you supply.
- Past holidays are compared only when the export contains an entry for them; missing entries are flagged only for holidays on or after
asOfDate. - Time zones, daylight saving and public-holiday calendars are not modelled. Every time is compared as written. Holiday lists are exactly what you supply.
- Overnight ranges are read as closing after midnight; a Monday closing at 02:00 is not carried into Tuesday's checks.
- Duplicate CSV rows for the same branch and day overwrite each other; the last row wins.
- Small samples. With a handful of branches, exception rates are anecdotes, not trends. Rates should not be extrapolated to a wider network.
- Limits: 5,000 branches, 2 million CSV characters, 100,000 CSV rows per run.
- Only English weekday names and
am/pmor 24-hour times are understood.
Local tests
The unit tests run offline with the standard library only:
python -m unittest discover -s tests