The portal supports two account types:
There is no in-portal screen for creating new HR accounts or changing roles โ this is done directly in the database (see Appendix A.1). If you were given a "Read-Only" account, you can browse everything but any attempt to change a status, post a job, or export data will show an "Unauthorized Action" message.
If you're already logged in, visiting this page redirects you straight to the dashboard.
The left sidebar is your main navigation: Dashboard, Registered Users, Manage Jobs, Help Guide, Export Data, and Bulk CV Download (the last four are hidden for Read-Only accounts). The dashboard itself is organised top to bottom:
Use the filter panel above the candidate table to narrow results by Position, Experience, Status, or a date range (applied between two dates). Click "Apply Filters" to run it, or the circular reset icon to clear all filters. Your current filters also carry over automatically into Export Data and Bulk CV Download, so you can filter first and then export exactly what you're looking at.
Each candidate's row also shows their education and current employment summary at a glance, so you can often screen the basics without opening the CV at all.
Each candidate has an "AI Match" column. If they haven't been scored yet, you'll see a robot icon โ click it to run the assessment.
Scoring is based on text extracted from the uploaded file and what the candidate typed into the form โ it is a screening aid, not a replacement for reading the CV yourself, especially for candidates near a cutoff score.
The candidate table is sorted by this score by default, so your strongest-matching applicants (once scored) naturally rise to the top.
Each candidate's row has action icons on the right (hidden for Read-Only accounts). Which ones appear depends on their current status:
| Action | Available from |
|---|---|
| Mark Screened | New or Reviewed |
| Shortlist | New, Reviewed, or Screened |
| 1st Interview | Any active (non-Rejected) status |
| Final Interview | Any active (non-Rejected) status |
| Medical | Any active (non-Rejected) status |
| Reject | Any active (non-Rejected) status |
Every status change (except Delete) asks for confirmation first, and several explicitly warn you that an email will be sent โ see Section 8 for exactly which ones.
The system emails the candidate automatically for some pipeline moves, and stays silent for others:
๐ Silent (no email)
๐ง Emails the candidate
Shortlisting a candidate does not notify them by email under the current setup. If you want them to know they've been shortlisted, you'll need to reach out separately, or the wording of this stage can be changed to send an email if you'd like that adjusted.
Rejecting a candidate (Section 7) keeps their record but marks it closed and sends them a polite email. Deleting is different and permanent:
The "Registered Users" page lists everyone who has created a candidate account, whether or not they've submitted an application yet. You can see each person's application status at a glance, and delete an account (and any associated application/CV) from here.
Open "Manage Jobs" to see every job you've ever posted, active or not.
Jobs also expire automatically once their deadline date passes โ they disappear from the public Jobs page and from the "Applying For" dropdown on the application form, even if you never manually close them.
Deleting a job removes the posting, but does not delete any applications candidates already submitted for it.
Three things need attention on this system that are unrelated to day-to-day use: an API key hardcoded in the AI screening file should be rotated and moved out of the code, the leftover one-time setup file that creates a Read-Only account should be deleted from the server, and that account's default password should be changed since it was printed in plain text by that setup file. Ask your developer or IT contact to confirm all three have been handled.
I get "Unauthorized Action" when I try to do something
Your account has Read-Only access. Ask an Admin-role user to perform that action, or to review whether your account should be upgraded.
A candidate says they never got an interview/rejection email
Ask them to check their spam folder. If it's genuinely missing, note that only Interview 1, Interview 2, Medical, and Rejected trigger an email โ other status changes are silent by design (Section 8).
The AI Match button doesn't return a score
This usually means the AI service key needs attention (see Section 13) or the original job posting for that position was deleted, since the tool compares the CV against that job's description.
A job isn't showing on the public Jobs page
Check that its status is "Active" and its deadline hasn't passed โ either condition alone will hide it from candidates.
There is no built-in screen for this. New HR accounts, password resets, and role changes (Admin vs Read-Only) must be done directly in the admins database table by your developer or IT contact.
| File | Purpose |
|---|---|
| index.php | Public landing page (Candidate Portal / HR Portal links). |
| jobs.php | Public list of open jobs with a details popup. |
| register.php / login.php | Candidate account creation and login. |
| apply.php | The 6-section employment application form. |
| submit.php | Processes the application form and CV upload. |
| candidate_dashboard.php | Candidate-facing status tracker. |
| help.php | Candidate-facing help page. |
| admin/index.php | HR/Admin login. |
| admin/dashboard.php | Main HR dashboard, filters, and candidate pipeline. |
| admin/jobs.php | Add, edit, delete, and toggle job postings. |
| admin/users.php | Registered candidate accounts list. |
| admin/view_cv.php | Opens a candidate's CV and marks it Reviewed. |
| admin/update_status.php | Changes a candidate's pipeline status and sends emails where applicable. |
| admin/ai_screen.php | Runs the AI Match rubric scoring against a candidate's CV. |
| admin/export.php | CSV export of filtered applications. |
| admin/bulk_download_cv.php | ZIP export of filtered candidates' CVs. |
| admin/delete_application.php | Permanently deletes one application and its CV. |
| admin/delete_user.php | Permanently deletes a candidate account, application, and CV. |
| admin/help.php | In-portal HR help page. |
| config.php | Database connection settings. |
| uploads/ | Stores every candidate's uploaded CV file. |
| Table | Holds |
|---|---|
| candidate_users | Registered candidate accounts (name, email, password hash). |
| applications | Every submitted application, all form fields, status, AI score/rubric, and CV file path. |
| jobs | Job postings (title, department, requirements, dates, status). |
| admins | HR/Admin login accounts and their role (Admin or Read-Only). |