MarqueLead Careers Portal
ACTIONPremium careers & application portal for MarqueLead — job listings, Typeform-style application flow, and full admin panel for managing jobs, questions, and applicants. Dark/gold aesthetic inspired by consulting.com.
Endpoints
· 28GET/api/jobs/:slug/questionsGet application questions for a specific job (shared + job-specific)
GET/apply/:slugTypeform-style application flow with one question per step
GET/api/jobsJSON list of active jobs with id, title, slug, department, location, type
POST/api/applicationsSubmit a job application with answers to questions
Input Schema
{
"type": "object",
"required": [
"jobId",
"answers"
],
"properties": {
"jobId": {
"type": "string",
"description": "Job ID to apply for"
},
"answers": {
"type": "object",
"description": "Map of questionId to answer string"
}
}
}GET/adminAdmin login page with password field
POST/admin/loginAdmin login — verifies password against SHA-256 hash and sets session cookie
Input Schema
{
"type": "object",
"required": [
"password"
],
"properties": {
"password": {
"type": "string",
"description": "Admin password"
}
}
}DELETE/admin/api/jobs/:idDelete a job listing
GET/jobs/:slugFull job detail page with description, responsibilities, requirements, and apply CTA
GET/Careers landing page with hero section and grid of active job cards
DELETE/admin/api/questions/:idDelete an application question
PUT/admin/api/applications/:id/notesUpdate admin notes on an application
Input Schema
{
"type": "object",
"required": [
"notes"
],
"properties": {
"notes": {
"type": "string",
"description": "Admin notes text"
}
}
}GET/admin/dashboardAdmin dashboard with stats cards and quick links
POST/admin/api/jobs/reorderReorder jobs by providing an ordered array of job IDs
Input Schema
{
"type": "object",
"required": [
"orderedIds"
],
"properties": {
"orderedIds": {
"type": "array",
"items": {
"type": "string"
}
}
}
}POST/admin/api/questions/reorderReorder questions by providing an ordered array of question IDs
Input Schema
{
"type": "object",
"required": [
"orderedIds"
],
"properties": {
"orderedIds": {
"type": "array",
"items": {
"type": "string"
}
}
}
}GET/admin/logoutClear session cookie and redirect to admin login
GET/admin/jobsAdmin jobs management page with sortable table and CRUD modals
GET/admin/questionsAdmin questions management page grouped by section
GET/admin/applicationsAdmin applications page with filter bar, status tabs, and sortable table
POST/admin/api/jobsCreate a new job listing
Input Schema
{
"type": "object",
"required": [
"title",
"department",
"description"
],
"properties": {
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"location": {
"type": "string"
},
"is_active": {
"type": "integer"
},
"department": {
"type": "string"
},
"description": {
"type": "string"
},
"requirements": {
"type": "string"
},
"salary_range": {
"type": "string"
},
"responsibilities": {
"type": "string"
}
}
}POST/admin/api/questionsCreate a new application question
Input Schema
{
"type": "object",
"required": [
"question_text"
],
"properties": {
"options": {
"type": "string"
},
"required": {
"type": "integer"
},
"question_text": {
"type": "string"
},
"question_type": {
"type": "string"
},
"section_label": {
"type": "string"
}
}
}GET/admin/applications/:idApplication detail page with applicant info, questions with answers, status and notes tools
PUT/admin/api/jobs/:idUpdate an existing job listing with partial JSON body
PUT/admin/api/questions/:idUpdate an application question
PUT/admin/api/applications/:id/statusUpdate application status (new, reviewed, shortlisted, rejected, hired)
Input Schema
{
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"description": "New status value"
}
}
}POST/admin/api/change-passwordAdmin change password endpoint — validates current password, updates hash in admin_settings
Input Schema
{
"type": "object",
"required": [
"current_password",
"new_password",
"confirm_password"
],
"properties": {
"new_password": {
"type": "string",
"description": "New password (min 4 chars)"
},
"confirm_password": {
"type": "string",
"description": "Must match new_password"
},
"current_password": {
"type": "string",
"description": "Current admin password"
}
}
}POST/api/applications/:id/uploadUpload a file for an application — validates file type against question config, max 20MB, saves to ./uploads/
Input Schema
{
"type": "object",
"required": [
"questionId",
"file",
"uploadToken"
],
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "The file to upload"
},
"questionId": {
"type": "string",
"description": "Question ID for the file-type question"
},
"uploadToken": {
"type": "string",
"description": "Upload token from create application response"
}
}
}GET/uploads/:applicationId/:fileNameServe uploaded files with correct Content-Type and Content-Disposition inline
Input Schema
{
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Stored file name"
},
"applicationId": {
"type": "string",
"description": "Application UUID"
}
}
}GET/api/applications/:id/filesList all uploaded files for an application — returns id, originalName, url, mimeType, fileSize, questionId
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Application UUID"
}
}
}Similar ACTION Pieces
Shared Terminal
Full-featured web terminal with Node.js, Python, Deno, git, and build tools — running in a Podman container with Ubuntu 24.04
Coolify Logs Watcher
Polls Coolify API for application logs, stores in SQLite, exposes search endpoints for support email triage. Monitors free-copier-py, free-copier-express, and free-copier-next runtime logs. Used by the Events pipeline (Sydney) to find relevant errors when drafting support responses.
Coverter
Converts HTML content to PDF using headless Chromium (Puppeteer). Accepts raw HTML or a URL, returns a downloadable PDF.