Employment contracts, certifications and medical checks, with alerts to HR.
The dates live in a spreadsheet nobody opens, and you find out once the deadline has passed. The audit checks where that data actually lives, how to keep it current, and why a script beats AI here on both cost and reliability.
Traditional Code
A scheduled script checking expiry dates and sending alerts will handle 75% of cases automatically, leaving HR to focus on the exceptions that need judgment.
Traditional code is the best fit for this process. The core task is date arithmetic and threshold-based alerting, which a simple scheduled script can perform reliably and cheaply. The client explicitly noted that a script beats AI here on both cost and reliability. The HR SaaS API (available on a higher tier) would enable automated data retrieval, eliminating the spreadsheet bottleneck. Non-standard cases (25%) still require human judgment, so the script should flag exceptions for manual review rather than attempt to handle them. Given limited IT capacity (one person), the solution should be simple, maintainable, and low-overhead. No specific tech stack preference was stated, so a lightweight approach (Python or similar) fits the constraint.
No preferred tech stack was stated. A simple Python or Node.js script running on a scheduler (cron or cloud function) would suit the limited IT capacity and keep maintenance overhead low.
Process Overview
The HR team at this company is responsible for tracking when employment contracts, certifications, and medical checks are coming up for renewal. Today, all expiry dates live in a spreadsheet that is opened a few times per week when someone remembers to check it. The HR manager or assistant reviews the dates manually, identifies items expiring soon, and sends reminders to staff or employees. Non-standard cases, which make up about a quarter of the work, require judgment calls about timing or process. Data entry errors sometimes surface during these reviews and need to be corrected on the spot. The process runs about 900 times per year, taking roughly eight minutes each time, and the main risk is that deadlines slip through the cracks when the spreadsheet is not checked often enough.
The company uses an HR SaaS system that holds employee data, but it is not currently integrated with the spreadsheet workflow. The SaaS platform does offer an API, but that feature is only available on a higher subscription tier. Email is the only tool used for sending alerts. The IT function is handled by one person who also manages general support, so any automation solution needs to be simple and low-maintenance.
Path Scores
The process is pure date logic and threshold alerting, which traditional code handles perfectly. The client explicitly stated a script beats AI on cost and reliability here. Upgrading to the API tier removes the spreadsheet dependency, and a scheduled job can flag exceptions for human review. Low maintenance burden suits the one-person IT team.
A script could automate standard cases and route exceptions to HR for judgment. This is essentially what the recommended traditional code path does, but framing it as hybrid adds unnecessary complexity. The human gate is implicit in exception flagging, so a separate hybrid architecture is overkill.
RPA could automate spreadsheet reading and email sending, but it is brittle and expensive compared to a script. If the HR system API is enabled, RPA adds no value. If the API remains unavailable, RPA could scrape the spreadsheet, but maintenance cost would be high for a one-person IT team.
AI workflow tools are designed for multi-step processes with variable logic or unstructured inputs. This process is deterministic date checking with structured data. The client explicitly noted a script beats AI on cost and reliability. AI would add cost and complexity with no benefit.
An AI agent is suited to open-ended tasks requiring reasoning or natural language interaction. Checking expiry dates is pure arithmetic. The client stated a script is better here. An agent would be expensive, unpredictable, and harder to audit under GDPR.
The current manual process is failing. The spreadsheet is not opened regularly, deadlines are missed, and 120 hours per year are spent on routine checks. Automation is straightforward and the ROI is clear. Staying manual wastes HR time and increases compliance risk.
Process Dimensions
Eight dimensions drive the recommendation, scored 0–10 with a note on each.
Expiry dates, employee IDs, contract types, and certification names are all structured fields ideal for database queries and date arithmetic.
Standard cases follow clear rules (alert X days before expiry), though 25% of cases have non-standard terms requiring human judgment.
About 25% of cases are non-standard or require judgment, which is manageable if the script flags them for manual review.
HR SaaS system has an API on a higher tier (not currently subscribed), so integration is possible but requires a small investment to unlock.
900 runs per year at 8 minutes each equals 120 hours annually, enough to justify a simple script but not a complex AI solution.
Contract and certification rules are stable, though new types may be added occasionally as the business grows.
Standard cases need no judgment, but 25% of cases involve non-standard terms or missing data that require HR expertise.
GDPR applies to employee data, and works council consultation may be needed for any system that evaluates people, but date-checking is low-risk.
ROI Estimate
€3,000
Current annual cost
75%
Estimated time saved
€2,250
Annual savings
2mo
Payback period
Current cost is 900 runs per year times 8 minutes per run divided by 60, times 25 EUR per hour, equals 3000 EUR annually. Automating 75% of standard cases saves 2250 EUR per year. Build cost includes API tier upgrade, script development, and testing, suited to a one-person IT team.
Implementation Roadmap
Subscribe to the higher SaaS tier to unlock API access. Map employee, contract, and certification data fields to the script's data model. Validate that all required expiry dates are accessible via API. This is the foundation for eliminating the spreadsheet.
Write a script (Python or similar) that queries the HR API daily, calculates days until expiry, and sends email alerts for items within the threshold (e.g. 30, 14, and 7 days). Include logic to flag non-standard cases for manual review. Test with a subset of real data and validate alert accuracy.
Schedule the script to run daily (cron job or cloud scheduler). Train the HR team to review flagged exceptions and confirm that alerts are actionable. Monitor for one month, collect feedback, and tune thresholds or exception rules as needed.
Once the script is stable, migrate any remaining spreadsheet data into the HR system and retire the spreadsheet. Document the script's logic, exception-handling rules, and maintenance procedures for the IT person. Establish a quarterly review cadence to adjust rules as contract types evolve.
Risks & Considerations
The main risk is data quality in the HR system. If expiry dates are missing, incorrect, or inconsistently formatted, the script will produce unreliable alerts and erode trust. Before go-live, audit a sample of records and establish a data entry standard. The 25% of non-standard cases must be clearly flagged so HR does not ignore them, and the script must not silently fail when it encounters unexpected data. GDPR requires that any automated processing of employee data be documented and that employees can request details of how their data is used, so maintain a log of alerts sent. Finally, the one-person IT team is a single point of failure for maintenance. Document the script thoroughly and consider a low-code or no-code fallback if the IT person leaves.
Architecture Overview
Hover to zoom · click for fullscreen
Why This Approach
Traditional code is the right answer here because this process is fundamentally about date arithmetic and threshold-based alerting, which is exactly what simple scripts are built for. The client made the point explicitly during discovery that a scheduled script would beat an AI solution on both cost and reliability, and that assessment is spot on. There is no ambiguity to resolve, no natural language to parse, and no reasoning required for the majority of cases. You need a job that wakes up every day, checks which dates are within your alert windows, and fires off emails. A Python or Node.js script running on a cron job or cloud scheduler does that reliably and cheaply.
The key unlock is upgrading the HR SaaS subscription to the API tier. Right now the spreadsheet is the bottleneck, it gets opened irregularly and it introduces data entry errors. Once the API is available, the script can pull fresh data directly from the source of truth, calculate days until expiry, and send alerts without anyone opening a file. The cost of the API tier upgrade is a small upfront investment that pays for itself quickly when you consider the 120 hours per year currently spent on manual checks.
The 25 percent of cases that involve non-standard contract terms or missing data will still need human judgment, and that is fine. The script should flag those exceptions clearly, route them to the HR team, and let people do what they do best. Trying to automate judgment calls would add complexity and risk for no real gain. The goal is to eliminate the routine work so HR can focus on the cases that actually require their expertise.
Given the one-person IT team, simplicity and maintainability matter as much as functionality. A lightweight script with clear documentation and minimal dependencies keeps the maintenance burden low. If the process rules change, someone can update a configuration file or tweak a threshold without rebuilding the whole solution. This is not a problem that needs a platform, an orchestration layer, or machine learning. It needs a script that does one thing well and gets out of the way.
Comparing the Top Approaches
Traditional Code is the clear winner for this process. The task is fundamentally date arithmetic and threshold-based alerting, which a simple scheduled script can handle reliably and cheaply. The client explicitly stated that a script beats AI on cost and reliability for this use case, and the data supports that judgment. Upgrading to the HR SaaS API tier eliminates the spreadsheet bottleneck and gives the script direct access to employee, contract, and certification data. The script can flag the 25 percent of non-standard cases for manual review, preserving human judgment where it matters while automating the routine date checks that currently consume 120 hours per year.
Hybrid automation scores reasonably well but is essentially what the Traditional Code path already delivers. A script that handles standard cases and flags exceptions for HR review is hybrid in practice, so adding a separate hybrid architecture layer would introduce unnecessary complexity without adding value. The human gate is implicit in the exception-flagging logic, and the one-person IT team benefits from keeping the solution as simple as possible.
RPA could automate the current spreadsheet-based workflow, but it is brittle and expensive compared to a script. If the HR system API is enabled, RPA adds no value because the script can pull data directly. If the API remains unavailable, RPA could scrape the spreadsheet, but the maintenance burden would be high for a solo IT resource and the solution would break whenever the spreadsheet layout changes. AI Workflow and AI Agent paths score poorly because this process has no need for reasoning, natural language understanding, or variable logic. The data is structured, the rules are clear, and a deterministic script will always outperform a probabilistic AI model on cost, speed, and auditability.
How to Build It
The implementation starts by upgrading the HR SaaS system to the API tier. This unlocks programmatic access to employee records, contract expiry dates, and certification information, which is the foundation for eliminating the spreadsheet. The first step is to map the SaaS data fields to the script's data model and validate that all required expiry information is accessible. This typically takes one to two weeks, including time to work with the SaaS vendor's documentation and test API responses with real data.
Next, build the alerting script itself. Python is a good choice here because it has excellent libraries for date handling, API requests, and email sending, and it is widely understood if the IT person needs to hand off maintenance in future. The script should run daily on a scheduler like cron or a cloud function, query the HR API for all active contracts and certifications, calculate the number of days until each item expires, and send email alerts when an item crosses a threshold such as 30, 14, or 7 days before expiry. Crucially, the script must include logic to detect and flag non-standard cases. For example, if a contract has a partial renewal note in a comments field, or if a certification type is not in the known list, the script should tag that record and route it to HR for manual review rather than attempt to process it automatically. Testing this logic with a representative sample of real data is essential to catch edge cases before go-live. This phase usually takes two to three weeks, including time to refine the exception-detection rules based on HR feedback.
Deployment and training follow. Schedule the script to run daily, train the HR team to recognise and act on the alerts, and monitor closely for the first month. Collect feedback on false positives, missed cases, and unclear exception flags, then tune the thresholds and rules accordingly. Once the script is stable and the HR team trusts the alerts, migrate any remaining spreadsheet data into the HR system, retire the spreadsheet, and document the script's logic and maintenance procedures for the IT person. Establish a quarterly review cadence to adjust alert thresholds or add new contract and certification types as the business evolves. The entire implementation typically takes six to eight weeks from API upgrade to full production, with build costs between 3,000 and 6,000 euros depending on the complexity of the HR system integration and the amount of exception-handling logic required.
Risks in Detail
The biggest risk is data quality in the HR system. If expiry dates are missing, incorrect, or inconsistently formatted, the script will produce unreliable alerts and the HR team will quickly lose trust in the automation. Before going live, audit a representative sample of records to understand the current state of data quality and establish a clear standard for how expiry dates should be entered. The script should include validation logic to detect and flag anomalies such as dates in the past, dates more than ten years in the future, or missing values, but it cannot fix bad data on its own. If data quality is poor, you may need to invest time in cleanup and training before the script can run reliably.
The 25 percent of non-standard cases present another risk. The script must flag these cases clearly and route them to HR for review, but if the exception-detection logic is too aggressive, it will overwhelm HR with false positives and defeat the purpose of automation. If the logic is too lenient, it will miss genuinely unusual cases and send incorrect alerts. Tuning this balance requires close collaboration with the HR team during testing and the first month of production. GDPR requires that any automated processing of employee data be documented and that employees can request details of how their data is used, so maintain a log of which alerts were sent and when. Finally, the one-person IT team is a single point of failure for maintenance. If that person leaves, the organisation needs to be able to understand and modify the script without a long handover period, so documentation and simplicity are critical. Consider whether a low-code or no-code platform might offer a more maintainable fallback if IT capacity remains constrained long-term.
Claude Code Starter
A scaffolded project ready to open in Claude Code. Unzip, open the folder, and Claude starts building immediately.
Claude Code Starter (.zip)
Your own assessment includes a ready-to-use project scaffold: CLAUDE.md, pyproject.toml, src/agent.py and .env.example. Open the folder in Claude Code and it starts building.