Turn an HR master sheet into a page every employee can open on a phone: their three levels, the clock at each, the issues that skip the line, and a composer that writes the message for them.
Type a name or employee ID. The page shows Level 1, 2 and 3 by name and title, straight from the master sheet. Managers see who reports to them.
24 hours for an acknowledgement, 3 working days for a fix or a date, then move up. The clock is the rule for everyone, so moving up is not an insult.
Women's safety, payroll, staff shortage: each has named people and its own clock. Pick an issue and the page gives one route, not three.
Four fields, one copy button, a five-point checklist. The message lands on WhatsApp or email with a time stamp and one specific ask.
After payment you receive the zip and your licence key by email. It has the generator, the page template, both language files, a worked example and the built demo. Python 3.9 or newer is the only requirement.
Export your employee master as CSV or XLSX with ID, name, designation, department, site and the reporting-manager columns. Copy example/config.json and fill in company, site word, HR contact, channels and issues.
One command produces index.html, .htaccess and a build report listing every data problem. Upload the first two to any web folder: Hostinger, cPanel, Netlify, GitHub Pages, S3.
# validate the data first, then build
python3 scripts/build_ladder.py --config config.json --employees staff_master.xlsx --check
python3 scripts/build_ladder.py --config config.json --employees staff_master.xlsx --out dist/
scripts/build_ladder.pyThe generator. Standard library only; openpyxl if your master is .xlsx.
assets/template.htmlPage shell and behaviour. Edit the colours in the :root block if you want your brand.
assets/strings/en.json, hi.jsonEvery UI string per language. Copy one, translate it, and you have a third language.
example/config.json, employees.csvA fictional 15-person clinic chain. Start your config from this.
demo/index.htmlThe example already built. This is what the live demo shows.
references/Config field reference, hosting guide with Hostinger steps, and the design notes on why the ladder works this way.
README.md, LICENSEFive-minute quick start, and the single organisation licence.
| Mode | What it stops | What it does not stop |
|---|---|---|
| none | Nothing beyond an unguessable folder name and a noindex header | Anyone with the link |
| pin | Casual visitors, search engines, a forwarded link reaching an outsider | Anyone who reads the source; a 4-digit PIN is brute-forced offline in seconds |
| basic_auth | Everyone without the host-side password. The HTML never reaches them | Staff sharing the password. Rotate it quarterly |
For a real roster, use the host's password protection. On Hostinger it is one screen: Advanced, Password Protect Directories. Phone numbers and emails are deliberately not in the data model, so a leaked page is a leaked org chart, not a leaked contact list.
One legal entity, any number of sites, domains and rebuilds. Modify anything for your own staff. Updates for 12 months. Excludes GST. International: USD 149.
Send the master sheet and a 30-minute call. You get the config written, the data problems cleaned up with HR, and the page live on your host within five working days.
Sister concerns, franchise partners and consultancies serving many clients need a group licence. Priced on the number of entities.
| You may | You may not |
|---|---|
| Run it for your own staff on any of your sites and domains | Resell, rent, or pass the zip or link to another organisation |
| Change the config, strings, colours, template and generator for internal use | Offer escalation-ladder pages as a service to other companies |
| Keep using the pages you generated, even if the licence ends | Remove the copyright notice or the footer credit |
Originally built for a restaurant group with eight outlets and 268 staff, most of them reading Hinglish on a phone. The same shape fits any organisation where the person with the problem and the person with the decision are rarely in the same building.