Hiring Pipeline Builder
Run ID: 69cb133842bc43f7e3be72c62026-03-31HR
PantheraHive BOS
BOS Dashboard

Build a complete hiring pipeline with job descriptions, interview question banks, scoring rubrics, offer letter templates, and onboarding checklists.

Step 1 of 3: Research & Design Requirements - Hiring Pipeline Builder

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Hiring Pipeline Builder" platform. This foundational design will guide the development of an intuitive, efficient, and comprehensive tool for managing the entire recruitment lifecycle.


1. Detailed Design Specifications

The Hiring Pipeline Builder will be a robust platform designed to streamline and enhance the recruitment process from job requisition to candidate onboarding.

1.1 Core Modules & Functionality

  • Dashboard & Analytics:

* Overview of active job requisitions, pipeline stages, and candidate statuses.

* Key recruitment metrics (e.g., time-to-hire, source of hire, candidate conversion rates).

* Upcoming interviews and tasks.

* Quick links to common actions (e.g., "Create New Job," "Review New Applicants").

  • Job Requisition Management:

* Job Creation Workflow: Guided multi-step process for defining job roles, departments, locations, reporting lines, and required skills.

* Job Description (JD) Builder:

* Template library for various roles and industries.

* AI-assisted content generation based on role details.

* Rich text editor for customization, formatting, and inclusion of media.

* Versioning and approval workflows for JDs.

* Job Posting & Distribution: Integration with external job boards, career sites, and social media.

* Team Collaboration: Assign hiring managers, recruiters, and interviewers to specific requisitions.

  • Candidate Management:

* Applicant Tracking System (ATS) Integration: Seamless import of candidate data from various sources (e.g., direct applications, referrals, LinkedIn).

* Candidate Profiles: Comprehensive view including resume, application details, communication history, interview feedback, and attached documents.

* Pipeline Stages: Customizable drag-and-drop pipeline stages (e.g., Applied, Screening, Interviewing, Offer, Hired, Rejected).

* Search & Filtering: Advanced search capabilities based on keywords, skills, experience, location, and custom tags.

* Communication Hub: Integrated email and messaging tools for candidate outreach and scheduling.

  • Interview Management:

* Interview Question Bank:

* Categorized library of behavioral, technical, and situational questions.

* Ability to link specific questions or sets to job roles or interview stages.

* Custom question creation and sharing.

* Interview Scheduling: Integration with calendar systems (e.g., Google Calendar, Outlook Calendar) for easy scheduling and sending invites.

* Scoring Rubrics:

* Customizable evaluation criteria (e.g., problem-solving, communication, technical skills).

* Weighted scoring for different criteria.

* Standardized feedback forms for interviewers.

* Feedback Collection: Centralized system for interviewers to submit feedback and scores directly linked to candidate profiles.

  • Offer Management:

* Offer Letter Templates:

* Dynamic fields for candidate-specific information (e.g., name, salary, start date, benefits).

* Pre-approved clauses and legal disclaimers.

* Versioning and approval workflows.

* Offer Generation & Delivery: Generate professional offer letters for digital signature.

* Offer Tracking: Status updates (e.g., Sent, Viewed, Accepted, Rejected).

  • Onboarding Management:

* Onboarding Checklist Builder:

* Customizable task lists for pre-boarding, first day, first week, and first month.

* Task assignment to relevant stakeholders (e.g., HR, IT, Manager).

* Dependency management and automated reminders.

* Document Management: Secure storage and sharing of onboarding documents.

* Progress Tracking: Visual representation of onboarding task completion.

  • Reporting & Analytics:

* Pre-built reports (e.g., pipeline velocity, source effectiveness, diversity metrics).

* Customizable report builder with various data visualization options.

* Export functionality (CSV, PDF).

  • Settings & Administration:

* User role management and permissions (Admin, Hiring Manager, Recruiter, Interviewer).

* Custom field management for jobs and candidates.

* Integration management (ATS, HRIS, Calendar, Communication).

* Branding customization (logo, primary colors).

1.2 Non-Functional Requirements (Design Focus)

  • Performance: Fast loading times, responsive interactions, and efficient data retrieval.
  • Scalability: Designed to handle a growing number of jobs, candidates, and users without performance degradation.
  • Security: Robust data encryption, access controls, and compliance with data privacy regulations (e.g., GDPR, CCPA).
  • Accessibility: Adherence to WCAG 2.1 AA standards for users with disabilities.
  • Responsiveness: Optimized for seamless usage across various devices (desktop, tablet).
  • Reliability: High uptime and data integrity.

2. Wireframe Descriptions

The following descriptions outline key wireframe layouts for critical user flows.

2.1 Dashboard Wireframe

  • Layout: Three-column or grid layout.
  • Top Banner: Company logo, user profile/settings, global search bar, "Create New Job" button.
  • Left Column (or Top Section):

* "My Active Jobs": Card view or list of jobs the user is assigned to, showing quick stats (e.g., "New Applicants," "Interviews Today").

* "Upcoming Tasks": List of scheduled interviews, pending feedback, or onboarding tasks.

  • Middle/Main Section:

* "Pipeline Overview": Visual representation (e.g., Kanban board or bar chart) of candidates in different stages across all active jobs. Clickable segments to view candidates.

* "Key Metrics": Customizable widgets displaying Time-to-Hire, Conversion Rates per stage, Source of Hire breakdown (pie chart/bar graph).

  • Right Column (or Bottom Section):

* "Recent Activity Feed": Log of recent system events (e.g., "New applicant for Marketing Manager," "Interview scheduled for John Doe").

* "Quick Actions": Buttons for "Browse Candidates," "Manage Templates," "View Reports."

2.2 Job Requisition Creation (Multi-Step Form) Wireframe

  • Layout: Centralized form area with a clear progress indicator (e.g., "Step 1 of 5") at the top.
  • Sidebar (Optional): List of steps with current step highlighted.
  • Step 1: Job Details:

* Input fields for Job Title, Department (dropdown), Location (searchable dropdown), Reporting Manager (user search).

* Radio buttons for Employment Type (Full-time, Part-time, Contract).

* Salary Range input (min/max).

  • Step 2: Job Description:

* Large rich text editor area.

* "Generate with AI" button.

* "Load from Template" button.

* Preview button.

  • Step 3: Interview Plan:

* Section to add interview stages (e.g., Phone Screen, Technical Interview, Panel Interview).

* For each stage: dropdown to select Interviewers (multi-select), "Link Question Bank" button, "Attach Scoring Rubric" button.

  • Step 4: Hiring Team:

* Searchable list of users with checkboxes to assign roles (Hiring Manager, Recruiter, Interviewer).

* Permissions matrix for each role.

  • Step 5: Review & Publish:

* Summary of all entered details.

* "Edit" links next to each section.

* "Save as Draft" and "Publish Job" buttons.

2.3 Candidate Profile Wireframe

  • Layout: Main content area with a left sidebar for navigation and quick actions.
  • Top Header: Candidate's Name, Current Stage (dropdown for quick change), "Move to Next Stage" button, "Reject" button, "Offer" button.
  • Left Sidebar:

* Candidate's photo (if available), contact info, social links.

* "Quick Actions": "Send Email," "Schedule Interview," "Add Note."

* Navigation links: "Resume," "Application," "Interviews," "Feedback," "Communication," "Documents."

  • Main Content Area (Tabbed or Scrollable Sections):

* "Overview": Snapshot of key info, most recent activity, next scheduled action.

* "Resume & Application": Embedded viewer for resume, parsed application data (skills, experience).

* "Interviews": Chronological list of past and upcoming interviews, showing interviewer, date, and link to feedback.

* "Feedback": Aggregated scores and comments from all interviewers, potentially with a visual summary (e.g., radar chart).

* "Communication Log": Timestamped record of all emails, messages, and calls with the candidate.

* "Documents": List of all uploaded documents (cover letters, certificates, etc.).

2.4 Template Management Wireframe (e.g., Interview Question Bank)

  • Layout: Two-column layout with a list on the left and detail/editor on the right.
  • Left Column:

* Search bar for templates.

* Filters (e.g., "Type: Behavioral," "Category: Technical").

* List of existing question banks/questions, with name and number of questions.

* "Create New Question Bank" button.

  • Right Column (Detail/Editor):

* If a bank is selected: Title of the bank, description.

* List of questions within the bank. Each question with "Edit," "Delete," and "Move" options.

* "Add New Question" button.

* When "Add New Question" or "Edit Question" is clicked:

* Text area for the question.

* Dropdown for question type (e.g., Open-ended, Multiple Choice, Scenario).

* Input for suggested answer points or evaluation criteria.

* Tags/Keywords input.

* "Save" and "Cancel" buttons.


3. Color Palettes

A professional, approachable, and accessible color palette will be used to ensure a positive user experience.

  • Primary Brand Color:

* Purpose: Headings, primary calls-to-action, branding elements, active navigation states.

* Hex Code: #007BFF (A vibrant, professional blue)

* RGB: rgb(0, 123, 255)

  • Secondary Accent Color:

* Purpose: Secondary calls-to-action, highlights, interactive elements, data visualization accents.

* Hex Code: #28A745 (A fresh, optimistic green for success/positive actions)

* RGB: rgb(40, 167, 69)

  • Neutral Palette (Grayscale for text, backgrounds, borders):

* Dark Text/Primary Text: #212529 (Near black for readability)

* Secondary Text/Icons: #6C757D (Medium gray for less emphasis)

* Light Gray Backgrounds/Borders: #F8F9FA (Very light gray for subtle separation)

* Medium Gray Backgrounds: #E9ECEF (Slightly darker for card backgrounds or alternating rows)

  • Semantic Colors (for status, alerts):

* Success: #28A745 (Same as secondary accent for consistency, e.g., "Offer Accepted")

* Warning: #FFC107 (Amber for caution, e.g., "Pending Feedback")

* Error: #DC3545 (Red for critical alerts, e.g., "Offer Rejected," "Form Error")

* Info: #17A2B8 (Cyan for informational messages, e.g., "New Updates Available")

  • Accessibility Considerations:

* Ensure all text and interactive elements meet WCAG 2.1 AA contrast ratios.

* Provide focus states for keyboard navigation.

* Avoid relying solely on color to convey information.


4. UX Recommendations

User experience will be paramount to the success of the Hiring Pipeline Builder. The following recommendations will guide the design process:

  • Intuitive Navigation & Information Architecture:

* Clear Hierarchy: Use a consistent main navigation (e.g., left sidebar or top bar) with logical grouping of modules.

* Breadcrumbs: Implement breadcrumbs for complex multi-level pages to help users understand their location within the system.

* Global Search: A prominent search bar allowing users to quickly find jobs, candidates, or templates.

  • Efficiency & Streamlined Workflows:

* Minimize Clicks: Design workflows to achieve common tasks with the fewest possible clicks.

* Bulk Actions: Enable selection and action on multiple items (e.g., move multiple candidates, send bulk emails).

* Quick Actions: Provide context-sensitive quick actions (e.g., on hover or within card views) to accelerate common tasks

gemini Output

Hiring Pipeline Builder: Detailed Design Specifications & UX Strategy

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Hiring Pipeline Builder" product. The goal is to create a professional, intuitive, and highly efficient platform that streamlines the entire hiring process from job creation to candidate onboarding.


1. Detailed Design Specifications

The Hiring Pipeline Builder will be a web-based application designed to centralize and automate key aspects of the recruitment lifecycle.

1.1. Core Modules and Features

The system will be structured around the following core modules:

  • 1.1.1. Dashboard & Analytics

* Purpose: Provide an at-a-glance overview of hiring activities and key performance indicators.

* Features:

* Key Metrics: Open jobs, active candidates, candidates in interview stage, offers extended, time-to-hire (average).

* Pipeline Health: Visual representation of candidates across all stages for open jobs.

* Upcoming Activities: List of scheduled interviews, pending feedback, onboarding tasks due.

* Quick Actions: Buttons for "Create New Job," "Add Candidate," "Schedule Interview."

* Customizable Widgets: Users can arrange or hide dashboard elements.

  • 1.1.2. Job Management

* Purpose: Create, manage, and define the hiring process for individual job requisitions.

* Features:

* Job Creation Wizard: Guided process for creating new job postings.

* Job Description Editor: Rich-text (WYSIWYG) editor with formatting options, template integration, and ability to save custom templates.

* Customizable Hiring Stages: Drag-and-drop interface to define and reorder stages (e.g., Application, Phone Screen, Technical Interview, Manager Interview, Offer, Hired, Rejected). Each stage can have associated actions (e.g., send automated email, assign task).

* Job Status Management: Draft, Open, On Hold, Closed.

* Job Board Integration (Future Scope): One-click posting to popular job boards.

* Team Collaboration: Assign hiring managers, recruiters, and interviewers to specific jobs.

  • 1.1.3. Candidate Management (Applicant Tracking System - ATS)

* Purpose: Centralized system to track, evaluate, and communicate with candidates.

* Features:

* Candidate Profiles: Comprehensive view including contact info, resume/CV, cover letter, application history, notes, interview feedback, communication logs.

* Pipeline View (Kanban-style): Visual drag-and-drop interface for moving candidates between hiring stages.

* Search & Filter: Advanced search capabilities based on keywords, stage, job applied for, source, tags.

* Bulk Actions: Move multiple candidates, send bulk emails, reject multiple candidates.

* Communication Center: Integrated email functionality with templates, ability to log calls and interactions.

* Resume Parsing (Future Scope): Automatically extract key information from resumes.

  • 1.1.4. Interview Management

* Purpose: Standardize interviews, facilitate scheduling, and collect structured feedback.

* Features:

* Interview Kits: Combine specific interview question banks and scoring rubrics for each interview stage.

* Question Banks: Create, manage, and categorize lists of interview questions (behavioral, technical, situational).

* Scoring Rubrics: Define evaluation criteria (e.g., communication skills, problem-solving) with a customizable rating scale (e.g., 1-5) and space for qualitative notes.

* Calendar Integration: Integrate with Google Calendar, Outlook Calendar for scheduling interviews and sending invites to candidates and interviewers.

* Automated Reminders: Notifications for upcoming interviews and pending feedback.

* Feedback Submission: Interviewers submit feedback directly within the platform, tied to the candidate profile and specific interview.

  • 1.1.5. Offer Management

* Purpose: Generate, send, and track offer letters efficiently.

* Features:

* Offer Letter Templates: Customizable templates with dynamic fields (e.g., candidate name, salary, start date, title).

* Offer Generation: Generate personalized offer letters directly from a template.

* Status Tracking: Track offer status (Draft, Sent, Accepted, Rejected, Withdrawn).

* Document Versioning: Maintain a history of offer letter revisions.

* E-signature Integration (Future Scope): Integrate with e-signature providers (e.g., DocuSign, Adobe Sign).

  • 1.1.6. Onboarding Checklists

* Purpose: Ensure a smooth transition for new hires with organized onboarding tasks.

* Features:

* Onboarding Template Library: Create and manage standardized onboarding checklists for different roles or departments.

* Task Assignment: Assign specific tasks to new hires, HR, IT, or managers with due dates.

* Progress Tracking: Visual dashboard to monitor the completion status of onboarding tasks for each new hire.

* Document Management: Upload and share essential onboarding documents (e.g., employee handbook, tax forms).

* Automated Notifications: Reminders for overdue tasks.

  • 1.1.7. Templates & Resources Library

* Purpose: Centralized repository for all reusable content.

* Features:

* Dedicated sections for Job Description Templates, Interview Question Banks, Scoring Rubrics, Offer Letter Templates, Onboarding Checklists.

* Search, filter, and preview functionality for all templates.

* Ability to create, edit, duplicate, and delete templates.

* Role-based access control for template management.

1.2. Data Model (Conceptual Overview)

The system will rely on a relational data model to ensure data integrity and connectivity across modules.

  • User: ID, Name, Email, Role (Admin, HR, Hiring Manager, Interviewer), Permissions.
  • Organization: ID, Name, Settings.
  • Job: ID, Title, Description, Department, Location, Status, Creation Date, Hiring Team (User IDs), Defined Hiring Stages.
  • Candidate: ID, Name, Email, Phone, LinkedIn Profile, Resume (link/storage), Source, Tags.
  • Application: ID, Job ID, Candidate ID, Current Stage, Application Date, Stage History (timestamped), Notes.
  • Interview: ID, Application ID, Interviewer ID, Date & Time, Type (e.g., Phone Screen, Technical), Question Bank ID, Scoring Rubric ID, Feedback (text), Score.
  • QuestionBank: ID, Name, Description, Questions (array of text).
  • ScoringRubric: ID, Name, Description, Criteria (array of {name, description, scale_min, scale_max}).
  • OfferLetter: ID, Application ID, Template ID, Custom Fields (JSON), Status, Sent Date, Expiry Date, Accepted Date.
  • OnboardingChecklist: ID, Name, Description, Tasks (array of {task_name, assignee_role, due_offset_days, status}).
  • OnboardingInstance: ID, Application ID (for hired candidate), Checklist ID, Task Instances (array of {task_name, assignee_ID, due_date, status, completion_date}).
  • Template: ID, Type (JD, Offer, Onboarding), Name, Content.

1.3. System Architecture (High-Level)

  • Frontend: Responsive web application (e.g., React, Vue.js, Angular).
  • Backend: Robust API-driven service (e.g., Node.js, Python/Django, Ruby on Rails) handling business logic and data persistence.
  • Database: PostgreSQL or similar relational database for structured data.
  • Cloud Hosting: AWS, Azure, or Google Cloud for scalability and reliability.

2. Wireframe Descriptions

The following descriptions outline the key screens and their primary elements. These are conceptual layouts guiding the user flow and content organization.

2.1. Dashboard Screen

  • Layout:

* Left Sidebar: Global navigation (Dashboard, Jobs, Candidates, Templates, Settings).

* Top Header: Company logo, user profile (avatar, name), search bar, notifications icon, help/support icon.

* Main Content Area: Divided into customizable widgets.

  • Key Elements:

* "Pipeline Health" Widget: Bar chart or funnel visualization showing candidate distribution across stages for all open jobs.

* "Open Jobs" Widget: Card-based list of active jobs, showing title, department, number of candidates. Clickable to navigate to Job Details.

* "Upcoming Interviews" Widget: Chronological list of interviews, showing candidate name, job, time, and interviewer.

* "Pending Feedback" Widget: List of interviews awaiting feedback from the logged-in user.

* "Quick Actions" Buttons: Prominent buttons for "Create New Job," "Add Candidate," "Schedule Interview."

  • User Interactions: Widgets can be rearranged, resized, or minimized. Clickable elements lead to relevant detail pages.

2.2. Jobs List / Management Screen

  • Layout:

* Left Sidebar: Global navigation.

* Top Header: Same as Dashboard.

* Main Content Area:

* Header: "Jobs" title, "Create New Job" button (primary action), search bar, filters (Status, Department, Location).

* Job Table/Cards: Main display area.

  • Key Elements:

* Filter Panel: Dropdowns for filtering by job status (Open, Closed, Draft), department, location, hiring manager.

* Job Listing (Table View): Columns for Job Title, Department, Status, Candidates (count), Created Date, Actions (Edit, View Pipeline, Close Job, Delete).

* Job Listing (Card View - Optional): Each card shows Job Title, a summary, number of candidates, and quick action buttons.

* Pagination: For large lists of jobs.

  • User Interactions: Clicking a job title or "View Pipeline" button navigates to the "Job Details / Pipeline View" screen. Edit/Delete actions trigger confirmation modals.

2.3. Job Details / Pipeline View Screen

  • Layout:

* Left Sidebar: Global navigation.

* Top Header: Same as Dashboard, with job title as a breadcrumb.

* Main Content Area:

* Job Overview: Top section with job title, status, key details, and "Edit Job" button.

* Pipeline Visualization (Kanban): Dominant section with columns representing each hiring stage.

  • Key Elements:

* Hiring Stage Columns: Each column is a stage (e.g., Application, Phone Screen, Technical Interview).

* Candidate Cards: Within each stage, cards representing candidates. Each card shows candidate name, photo (if available), and a quick status indicator (e.g., "Interview Scheduled," "Feedback Due").

* "Add Candidate" Button: At the top of the "Application" stage column.

  • User Interactions:

* Drag-and-Drop: Candidates can be dragged from one stage to another. A confirmation prompt or automated action (e.g., "Send rejection email?") might appear.

* Click Candidate Card: Opens the "Candidate Profile" in a side panel or new page.

* Column Actions: Add/edit stage, view stage details (e.g., automated actions for this stage).

2.4. Candidate Profile Screen (Side Panel or Full Page)

  • Layout:

* Left Sidebar: Global navigation (if full page).

* Top Header: Candidate name, current job, current stage.

*

gemini Output

Finalized Design Assets for Hiring Pipeline Builder

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Hiring Pipeline Builder." The goal is to create a professional, intuitive, and highly functional suite of assets that streamline the recruitment process.


1. Overall Design Philosophy & Specifications

Our design philosophy centers on Clarity, Efficiency, and Professionalism. The visual language will be clean, modern, and data-driven, ensuring ease of use for recruiters, hiring managers, and candidates alike.

  • Visual Style:

* Clean & Minimalist: Emphasize content over ornamentation. Ample white space to reduce cognitive load.

* Modern & Flat: Use subtle shadows and gradients sparingly for depth, but maintain a predominantly flat design aesthetic.

* Professional & Approachable: Avoid overly playful or corporate-stiff elements. Strive for a balance that feels trustworthy and user-friendly.

  • Typography:

* Primary Font (Headings/Titles): A clean, sans-serif font like "Inter," "Montserrat," or "Open Sans" for readability and modern appeal. Use varying weights (e.g., Semi-Bold for main headers, Regular for sub-headers).

* Secondary Font (Body Text/Paragraphs): A highly readable sans-serif font like "Roboto," "Lato," or "Source Sans Pro." Ensure sufficient line-height and letter-spacing for optimal legibility.

* Font Sizes:

* H1: 28-32px (e.g., "Job Description Title")

* H2: 20-24px (e.g., "Responsibilities")

* H3: 16-18px (e.g., "Key Skills")

* Body Text: 14-16px

* Small Text/Labels: 12-13px

  • Iconography:

* Consistent Style: Use a single, unified icon set (e.g., outline or filled, but not both simultaneously).

* Clarity: Icons should be immediately recognizable and convey their meaning without ambiguity.

* Purpose: Used for navigation, actions (e.g., edit, delete, add), status indicators, and to break up text.

  • Layout & Grid System:

* Responsive Grid: Design will be adaptable to various screen sizes (desktop, tablet, mobile), ensuring a consistent experience.

* Column-Based Layouts: Utilize a 12-column grid for consistent spacing and alignment, particularly for forms and data tables.

* Clear Information Hierarchy: Use visual cues (font size, weight, color, spacing) to guide the user's eye and indicate the importance of different information blocks.


2. Wireframe Descriptions for Key Assets

These descriptions outline the layout, key components, and user interactions for the core elements of the Hiring Pipeline Builder.

2.1. Job Description (JD) Builder/Template

  • Layout: Single-column main content area, with a left-hand navigation/template selector if multiple templates exist.
  • Sections:

* Header: Job Title (H1), Department, Location, Employment Type (Dropdowns/Text Fields).

* Overview/Summary: Rich-text editor with basic formatting options (bold, italics, lists, links). Placeholder text: "Craft an engaging summary of the role and its impact..."

* Responsibilities: Bulleted list input field, allowing users to add/remove items easily. Each item can be a rich-text field.

* Qualifications/Requirements: Similar to Responsibilities, bulleted list input.

* Preferred Skills/Experience (Optional): Another bulleted list.

* Benefits & Perks: Rich-text editor. Placeholder: "Highlight your company's unique offerings..."

* Call to Action: Pre-filled (e.g., "Apply Now") but editable.

* Company Boilerplate: Auto-populated from company profile, editable.

  • Interactions:

* Drag-and-Drop Reordering: For sections (e.g., move "Benefits" above "Qualifications").

* "Add Section" Button: Allows users to include custom sections.

* Preview Button: To see how the JD will appear to candidates.

* Save/Publish Buttons: Clear primary and secondary actions.

* Template Selector: Dropdown or sidebar to load existing JD templates.

2.2. Interview Question Bank Interface

  • Layout: Two-column layout. Left column for filters/categories, right column for the question list and detail view.
  • Left Column (Filters/Categories):

* Search Bar: For keywords in questions.

* Category Filters: Checkboxes/Tags (e.g., Behavioral, Technical, Situational, Culture Fit, Problem Solving).

* Role-Specific Filters: Dropdown to filter by job role/department.

* Difficulty Level: Slider or radio buttons (Easy, Medium, Hard).

* "Add New Category" Button.

  • Right Column (Question List & Detail):

* Question List: Table or card view. Columns: Question Text (truncated), Category, Suggested Answer (truncated), Actions (Edit, Delete, Add to Interview Plan).

* "Add New Question" Button: Leads to a modal or new view.

* Question Detail View (Modal/Sidebar):

* Question Text: Large text area.

* Category Selector: Multi-select dropdown.

* Difficulty Level: Radio buttons.

* Suggested Answer/Key Points: Rich-text editor for detailed guidance.

* "Save" / "Cancel" Buttons.

* "Build Interview Plan" Button: Allows users to select questions and compile them into a specific interview flow.

2.3. Scoring Rubric Template

  • Layout: Predominantly a table-based structure, with an introductory section.
  • Sections:

* Rubric Title: Text field (e.g., "Software Engineer - Technical Interview Rubric").

* Instructions/Guidance: Rich-text editor for general instructions on how to use the rubric.

* Scoring Scale Definition:

* A row of customizable score points (e.g., 1, 2, 3, 4, 5).

* Below each score point, a text field to define what that score means (e.g., "1: Significantly below expectations," "5: Exceeds expectations").

* Criteria Table:

* Rows: Each row represents an evaluation criterion (e.g., "Problem Solving," "Communication," "Technical Knowledge").

* Column 1 (Criterion Name): Text field.

* Column 2 (Description/Prompts): Rich-text area to guide the interviewer on what to look for related to that criterion.

Columns 3-7 (Score Descriptors): For each score point (1-5), a text field to describe what performance looks like at that specific score level for this specific criterion*.

* "Add Criterion" / "Remove Criterion" Buttons: For managing rows.

  • Interactions:

* Editable Cells: All text fields within the table should be directly editable.

* Drag-and-Drop Reordering: For criteria rows.

* "Duplicate Rubric" / "Save as Template" Buttons.

* "Generate Score Sheet" Button: To create an instance of the rubric for a specific candidate.

2.4. Offer Letter Template

  • Layout: Document-style interface, resembling a word processor, with a sidebar for variable management.
  • Sections:

* Header: Company Logo, Company Address.

* Date: Auto-populated, editable.

* Candidate Information: Fields for Candidate Name, Address (auto-populated from applicant data, editable).

* Salutation: (e.g., "Dear [Candidate Name],")

* Core Offer Details:

* Position: Text field (auto-populated from JD, editable).

* Department: Text field.

* Reporting To: Text field.

* Start Date: Date picker.

* Annual Salary: Currency input field.

* Bonus/Commission Structure (Optional): Rich-text editor.

* Equity/Stock Options (Optional): Rich-text editor.

* Benefits Summary: Rich-text editor with placeholders for common benefits.

* Terms & Conditions / At-Will Statement: Rich-text editor (often pre-defined legal boilerplate).

* Acceptance Clause: Signature lines for Candidate and Company Representative, Acceptance Date.

  • Sidebar (Variable Management):

* List of available merge fields (e.g., {{candidate_name}}, {{position}}, {{start_date}}).

* Ability to drag and drop these variables into the main document.

* Option to add custom variables.

  • Interactions:

* Rich-text Editing: Full formatting capabilities within the main body.

* Preview PDF Button: To see the final document.

* "Generate Offer" Button: To create a specific offer for a candidate.

* "Save as Template" / "Load Template" Buttons.

2.5. Onboarding Checklist Template

  • Layout: Card-based or list-based view, organized by stages.
  • Sections:

* Checklist Title: Text field (e.g., "New Hire Onboarding - [Position Name]").

* Stages/Phases: Collapsible sections (e.g., "Pre-Boarding," "First Day," "First Week," "First Month," "First 90 Days").

* Each stage has a title and an optional description.

* Tasks within Stages:

* Each task item includes:

* Checkbox: To mark as complete.

* Task Description: Text field (e.g., "Send welcome email," "Set up workstation," "Schedule 1:1 with manager").

* Assigned To (Optional): Dropdown/Text field for responsible person/department.

* Due Date (Optional): Date picker.

* Status Indicator: (e.g., "Not Started," "In Progress," "Completed").

* Attachments (Optional): Link/Upload button.

* "Add Task" / "Delete Task" Buttons.

  • Interactions:

* Drag-and-Drop Reordering: For stages and tasks within stages.

* "Add Stage" Button.

* "Assign All Tasks" Feature: Batch assignment to a new hire or manager.

* "Duplicate Checklist" / "Save as Template" Buttons.

* "Generate Onboarding Plan" Button: To create an instance for a specific new hire.


3. Color Palettes

A professional, approachable, and accessible color palette will be used, supporting the brand while prioritizing usability.

  • Primary Brand Color (e.g., PantheraHive Blue): #007BFF (A vibrant, trustworthy blue)

* Used for primary calls-to-action (buttons), active states, key headings, brand elements.

  • Secondary Accent Color (e.g., Complementary Teal/Green): #28A745 (A fresh green, often used for success/positive actions) or #17A2B8 (A calming teal).

* Used for secondary buttons, highlights, success messages, progress indicators.

  • Neutral Palette:

* Dark Gray (Text): #343A40 (For primary body text, ensures high contrast and readability).

* Medium Gray (Secondary Text/Icons): #6C757D (For labels, helper text, inactive icons).

* Light Gray (Borders/Dividers): #DEE2E6 (For subtle separation of elements).

* Lighter Gray (Backgrounds): #F8F9FA (For section backgrounds, slightly off-white).

* White: #FFFFFF (For main content areas, cards).

  • Status/Feedback Colors:

* Success: #28A745 (Green)

* Warning: #FFC107 (Yellow/Orange)

* Danger/Error: #DC3545 (Red)

* Info: #17A2B8 (Teal/Blue)

Accessibility Note: Ensure sufficient contrast ratios (WCAG 2.1 AA standard) between text and background colors, especially for body text and interactive elements.


4. User Experience (UX) Recommendations

These recommendations focus on making the Hiring Pipeline Builder intuitive, efficient, and delightful for all users.

  • 1. Consistency is Key:

* Visual Consistency: Maintain the same typography, iconography, button styles, and color palette across all templates and interfaces.

* Interaction Consistency: Similar actions should always behave the same way (e.g., "Save" button placement, form field validation).

  • 2. Intuitive Navigation & Workflow:

* Clear Information Architecture: Organize content logically with clear headings and sections.

* Progress Indicators: For multi-step processes (e.g., building a JD from scratch), show users where they are in the workflow.

* Breadcrumbs: To help users understand their current location within the application.

  • 3. Efficiency & Time-Saving Features:

* Templatization: Allow users to save any created asset (JD, Rubric, Checklist) as a template for future use.

* Pre-filled Data: Auto-populate fields wherever possible (e.g., candidate name in offer letter, company boilerplate).

*Drag-and-Drop Functionality

hiring_pipeline_builder.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}