Weekly license check for every employee and contractor
Every Monday we look up each person on your roster in the official licensing board, save dated proof, and flag only the ones you need to chase.
Every Monday at 7am, verify that every licensed employee and contractor on our roster still holds a valid credential, and give me one short Slack post that is only ever a to-do list.
Start by reading the roster from Google Sheets with Get Values. Each row holds the license holder's name, their license number, their profession, and the public licensing board lookup URL for that person. Treat the sheet as the source of truth for who is in scope.
For each row, use Steel Scrape Webpage to load that state or professional board lookup page in a real cloud browser. This matters, because licensing board sites routinely block plain scrapers and sit behind captchas that Steel handles. From the page, read back the current license status, the expiry date, and any disciplinary or restriction flag.
Use judgement when reading each result. Board lookup pages differ wildly per state and profession, so confirm the person using the name and the license number together rather than trusting a name match alone, and be careful with common names, middle initials, and maiden or married name differences. A license that reads as active but carries a consent order, probation, or a practice restriction is not clean and should be treated as a flagged result, not a passing one. If you cannot find the person, or the page will not load, or more than one record plausibly matches, mark the row as unverified rather than guessing.
Capture a Steel Generate PDF of the result page as dated proof for each person you check. In Google Drive, use Create Folder to make a folder for the current month, then use Upload File (Multipart) to file each PDF into that folder, naming the file with the person's name, their license number, and the date of the check, so an auditor can open the folder and see exactly what was verified and when.
Write the results back onto the roster with Update Values: the current status, the expiry date, the date checked, and a link to the evidence PDF, each on the matching person's row.
Finish with a single Slack message using Send a Message. Lead with anyone expired, suspended, revoked, or carrying a disciplinary or restriction flag, one line each with the person, their profession, the license number, what is wrong, and the evidence link. Then list anyone whose license expires within the next 60 days, soonest first, with the number of days remaining. Then list anyone you could not verify this week so someone can check them by hand. Say nothing about people who are clean and not expiring soon. If nobody falls into any of those three groups, post one short line saying the roster is clear.
Example output
What does this prompt do?
- Reads your roster of licensed staff and contractors from a Google Sheet, including each person's license number and the official board lookup page for their profession.
- Opens each licensing board page in a real browser to read the current status, the expiry date, and any disciplinary or restriction note, even on registry sites that block ordinary tools.
- Saves a dated PDF of every result into a monthly folder in Google Drive and writes the status, expiry date, and evidence link back onto the roster row.
- Posts one Slack update that leads with anyone expired, suspended, or flagged, then anyone expiring in the next 60 days, and stays quiet about everyone else.
What do I need to use this?
- A Google Sheet listing each licensed person with their name, license number, profession, and the public board lookup link for their license.
- A Google account with access to that sheet and to the Drive folder where the evidence should be stored.
- A Slack workspace and the channel where the weekly update should land.
- A Steel account, which is what opens the licensing board pages in a real browser.
How can I customize it?
- Change the warning window. Sixty days before expiry is the default, but thirty or ninety works just as well.
- Change when it runs. Monday at 7am suits most teams, but any day and time works.
- Send the update somewhere else, such as a private compliance channel or a direct message to whoever owns credentialing.
FAQs
Will this work for any profession?
What happens if a licensing board site is down or blocks the check?
What counts as a problem worth flagging?
Do I get a message even when everyone is fine?
Is the proof good enough for an auditor?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Never staff a shift on an expired license.
Check every credential on your roster each Monday, keep dated proof of every check, and only hear about the people who need chasing.