Dashboard
The headline numbers. The bottom row is your pitch evidence — "before VALM existed, we found X stale permits and Y unreturned barcodes."
Flagged vehicles
Every wrong-car-park and not-on-register result a car park marshal has actually seen, most recent first — the manual follow-up list until email notifications are built.
Register
Every permit. Status is worked out live from today's date and the expiry rules. Use search to answer "tell me about any registration on site."
Import the existing GC register
Export your current register from Excel as CSV (File → Save As → CSV), then drop it here. You'll get a chance to match your columns to the fields VALM expects — nothing is imported until you confirm.
Data quality checks · spec section 5a
Register-only checks. No WWID feed needed. These find real problems using the register alone and produce the baseline count for the pitch.
WWID leaver check · not yet wired in
This is Rule 2: any permit whose WWID is no longer active on site auto-suspends. It needs a weekly CSV of active WWIDs from badge admin, which you don't have yet. The plumbing is here; when you get that file, load it below and this check switches on — no rebuild needed.
Trade contact emails · storage only — sending not yet built
One notification email per trade/company, regardless of how many vehicles they have on file. The strike-notification email itself isn't wired up yet — this just gives contact info somewhere to live now, so it doesn't need backfilling onto every permit later.
Add permit
Validation runs on save: registration format, duplicate reg, and a required owner. Every record stores who created it and when.
Patrol · spec Rule 4
The bridge to the car park marshal field app. Export a hashed patrol pack for the phone; import the patrol log it brings back to apply strikes. Names and WWIDs never leave this tool.
1 · Export patrol pack
A one-way scrambled copy of the register — reg becomes an unreadable hash, paired with car park, status and vehicle colour only. No name, WWID or trade is included. Expires 24h after export.
2 · Import patrol log
Load the log the car park marshal exported. Strikes are applied to the matching permits, a third strike auto-suspends the permit, and the trade-admin notice text is generated here — where identities live.
Audit log · every lookup, strike, void, and import — timestamped, immutable
Search by registration when a trade disputes a strike, or filter by event type and date range. Nothing here can be edited or deleted, by design — the database itself refuses it.