Hiring Pipeline Builder
Run ID: 69cb83e861b1021a29a89c752026-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: Research & Design Requirements for Hiring Pipeline Builder

This document outlines the comprehensive research and design requirements for the "Hiring Pipeline Builder" platform. This foundational step ensures that the platform is robust, user-friendly, and addresses all critical aspects of a modern hiring process, from job creation to candidate onboarding.


1. Project Overview

The "Hiring Pipeline Builder" aims to centralize and streamline the entire recruitment lifecycle. It will provide a unified platform for creating detailed job descriptions, building extensive interview question banks, developing fair and objective scoring rubrics, generating professional offer letters, and managing comprehensive onboarding checklists. The goal is to enhance efficiency, consistency, and fairness in hiring while providing valuable insights into the recruitment process.


2. Detailed Design Specifications

This section details the functional requirements and high-level data models essential for the platform's core functionalities.

2.1. Functional Requirements

  • Job Description (JD) Management:

* Creation & Editing: Intuitive rich-text editor for drafting and modifying JDs.

* Template Library: Pre-defined templates for common roles/departments, allowing for quick customization.

* Version Control: Track changes and revert to previous versions of JDs.

* Categorization & Tagging: Organize JDs by department, location, seniority, skill sets.

* Publishing & Archiving: Mark JDs as active, draft, or archived.

* Associated Elements: Link JDs directly to interview questions, rubrics, and offer letter templates.

  • Interview Question Bank:

* Question Creation: Add, edit, and categorize individual interview questions (e.g., behavioral, technical, situational).

* Categorization & Tagging: Organize questions by skill, competency, job level, department.

* Question Sets/Packs: Group related questions into reusable sets for specific interview stages or roles.

* Search & Filter: Robust search capabilities to find relevant questions quickly.

* Rating Guidelines: Ability to add recommended answers or scoring guidelines for each question.

  • Scoring Rubric Builder:

* Customizable Rubrics: Create unique rubrics for different jobs, interviews, or competencies.

* Criterion Definition: Define specific evaluation criteria (e.g., problem-solving, communication, technical skills).

* Rating Scales: Configure various rating scales (e.g., 1-5, poor-excellent, yes/no).

* Weighting: Assign different weights to criteria for overall score calculation.

* Automated Scoring: Calculate an overall candidate score based on rubric inputs.

* Consistency Enforcement: Promote objective evaluation across all interviewers.

  • Candidate Management (Basic Tracking):

* Candidate Profiles: Store essential candidate information (name, contact, resume, application date, source).

* Pipeline Stages: Customize and manage recruitment stages (e.g., Applied, Screened, Interviewed, Offer, Hired, Rejected).

* Notes & Feedback: Record interview feedback, general notes, and communication logs.

* Status Updates: Easily move candidates between pipeline stages.

* Associated Data: Link candidates to specific jobs, interviews, and offer letters.

  • Offer Letter Generation:

* Template Library: Pre-designed, legally compliant offer letter templates.

* Merge Fields: Auto-populate candidate-specific data (name, salary, start date, title) into templates.

* Customization: Ability to modify offer letter content before sending.

* Approval Workflow: Define an approval process for offer letters (e.g., Hiring Manager, HR, Finance).

* Status Tracking: Monitor offer status (sent, viewed, accepted, rejected).

* E-Signature Integration (Future Consideration): Seamless integration with popular e-signature platforms.

  • Onboarding Checklist Management:

* Template Library: Create and manage reusable onboarding checklist templates.

* Task Definition: Define individual onboarding tasks (e.g., IT setup, HR paperwork, team introductions).

* Task Assignment: Assign tasks to specific individuals (e.g., IT, HR, Hiring Manager, Mentor).

* Due Dates & Reminders: Set due dates and configure automated reminders for tasks.

* Progress Tracking: Monitor the completion status of each task and the overall checklist.

* Role-Based Checklists: Ability to create specific checklists for different roles or departments.

  • Reporting & Analytics:

* Pipeline Overview: Visual representation of candidates in each stage for all open jobs.

* Time-to-Hire: Track average time taken to fill positions.

* Source Effectiveness: Analyze which recruitment channels yield the best candidates.

* Interview Performance: Aggregate interview scores and feedback.

* Customizable Dashboards: Allow users to create personalized views of key metrics.

  • User Management & Permissions:

* Role-Based Access Control (RBAC): Define roles (e.g., Admin, Hiring Manager, Recruiter, Interviewer).

* Granular Permissions: Assign specific permissions based on roles (e.g., view only, edit own, edit all).

* Team Collaboration: Facilitate shared access to candidate profiles and job data.

  • Search & Filter:

* Global Search: Search across all modules (jobs, candidates, templates).

* Advanced Filtering: Filter by status, department, date range, tags, etc.

  • Notifications:

* In-app & Email Notifications: Alerts for new applications, stage changes, pending approvals, task assignments, and due dates.

2.2. High-Level Data Model (Entities & Relationships)

  • Job:

* job_id (PK)

* title

* description

* department

* location

* status (Open, Closed, Draft)

* hiring_manager_id (FK to User)

* created_by_id (FK to User)

* date_posted

* date_closed

* jd_template_id (FK to JDTemplate)

  • Candidate:

* candidate_id (PK)

* first_name

* last_name

* email

* phone

* resume_url

* current_stage (FK to PipelineStage)

* application_date

* source

* job_id (FK to Job)

  • PipelineStage:

* stage_id (PK)

* stage_name (e.g., Applied, Phone Screen, Interview 1)

* order

  • Interview:

* interview_id (PK)

* candidate_id (FK to Candidate)

* job_id (FK to Job)

* interviewer_id (FK to User)

* interview_date

* interview_type

* rubric_id (FK to Rubric)

* notes

* overall_score

  • Question:

* question_id (PK)

* text

* type (Behavioral, Technical, Situational)

* category

* tags (JSONB or separate Tag entity)

* suggested_answer (Optional)

* scoring_guidelines (Optional)

  • InterviewQuestionSet: (Many-to-Many between Interview and Question)

* interview_id (FK)

* question_id (FK)

  • Rubric:

* rubric_id (PK)

* name

* job_id (FK to Job, optional for generic rubrics)

* description

  • RubricCriterion:

* criterion_id (PK)

* rubric_id (FK to Rubric)

* name (e.g., Problem Solving, Communication)

* description

* weight

* rating_scale_id (FK to RatingScale)

  • RatingScale:

* scale_id (PK)

* name (e.g., 1-5, Poor-Excellent)

* values (JSONB or separate RatingValue entity)

  • CandidateInterviewScore:

* score_id (PK)

* interview_id (FK to Interview)

* criterion_id (FK to RubricCriterion)

* rating

* comments

  • OfferLetter:

* offer_id (PK)

* candidate_id (FK to Candidate)

* job_id (FK to Job)

* template_id (FK to OfferLetterTemplate)

* salary

* benefits_details

* start_date

* status (Draft, Sent, Accepted, Rejected, Expired)

* sent_date

* accepted_date

* approved_by_id (FK to User, for approval chain)

  • OfferLetterTemplate:

* template_id (PK)

* name

* content (Rich Text/HTML)

  • OnboardingChecklist:

* checklist_id (PK)

* candidate_id (FK to Candidate)

* job_id (FK to Job)

* template_id (FK to OnboardingTemplate)

* status (In Progress, Completed)

* start_date

  • OnboardingTask:

* task_id (PK)

* checklist_id (FK to OnboardingChecklist)

* name

* description

* assigned_to_id (FK to User)

* due_date

* completed_date

* status (Pending, In Progress, Completed)

  • OnboardingTemplate:

* template_id (PK)

* name

* tasks (JSONB or separate OnboardingTemplateTask entity)

  • User:

* user_id (PK)

* email

* password_hash

* first_name

* last_name

* role (Admin, Hiring Manager, Recruiter, Interviewer)

2.3. Potential Integrations (Future Enhancements)

  • Applicant Tracking Systems (ATS): Seamless import of candidate data from existing ATS platforms.
  • HR Information Systems (HRIS): Export new hire data directly to HRIS for employee setup.
  • Calendar & Email: Integration with Google Calendar/Outlook for interview scheduling and email communication.
  • Video Conferencing: Direct links or scheduling for platforms like Zoom, Google Meet.
  • E-Signature Platforms: For legally binding offer letter acceptance (e.g., DocuSign, Adobe Sign).

3. Wireframe Descriptions (Key Screens)

The following descriptions outline the core functionality and layout for critical user interfaces.

3.1. Dashboard

  • Purpose: Provide an at-a-glance overview of recruitment activities.
  • Elements:

* Open Jobs Widget: List of active jobs with current candidate count.

* Pipeline Summary Chart: Visual representation of candidates in each stage across all jobs (e.g., bar chart).

* Pending Actions Widget: List of tasks requiring user attention (e.g., pending interviews, offer approvals, onboarding tasks).

*Quick

gemini Output

This document outlines the detailed design specifications for the "Hiring Pipeline Builder" tool, focusing on user interface (UI), user experience (UX), and visual design elements. The goal is to create a professional, intuitive, and highly functional platform that empowers users to efficiently construct comprehensive and standardized hiring pipelines.


1. Executive Summary

The "Hiring Pipeline Builder" is designed to streamline and standardize the recruitment process by providing a centralized system for creating and managing all essential hiring assets. This deliverable details the design specifications for a web-based application that will guide users through the creation of job descriptions, interview question banks, scoring rubrics, offer letter templates, and onboarding checklists. The design prioritizes a guided, modular approach, ensuring flexibility, consistency, and ease of use for HR professionals and hiring managers.

2. Core System Objectives

  • Standardization: Enable the creation of consistent hiring processes across different roles and departments.
  • Efficiency: Reduce manual effort and time spent in preparing hiring materials.
  • Customization: Provide robust tools for creating and adapting templates to specific organizational needs.
  • Centralization: Offer a single source of truth for all pipeline components.
  • User-Friendliness: Design an intuitive interface that requires minimal training.
  • Scalability: Support the management of multiple pipelines and associated components.

3. Overall Design Principles

  • Guided Workflow: Implement a step-by-step wizard for pipeline creation to ensure all necessary components are addressed.
  • Modularity: Allow users to create, store, and reuse individual components (e.g., a single job description, a specific interview question bank) independently.
  • Clarity & Simplicity: Use clear language, logical layouts, and minimalist design to prevent cognitive overload.
  • Consistency: Maintain a uniform look, feel, and interaction pattern across all screens and components.
  • Feedback & Validation: Provide immediate feedback on user actions and guide them through correct data entry.
  • Accessibility: Adhere to WCAG 2.1 AA standards for color contrast, typography, and interactive elements.

4. Detailed Design Specifications

4.1 Information Architecture

The system will be structured around a central dashboard, with primary navigation leading to pipeline management and individual component libraries.

  • Dashboard:

* Overview of active/draft pipelines.

* Quick links to create new pipelines or manage existing ones.

* Summaries of recently accessed components.

  • Pipelines:

* List view of all created hiring pipelines.

* Actions: View, Edit, Duplicate, Deactivate/Archive, Create New.

  • Components Library:

* Job Descriptions: List of all JD templates.

* Interview Question Banks: List of all IQB templates.

* Scoring Rubrics: List of all SR templates.

* Offer Letter Templates: List of all OLT templates.

* Onboarding Checklists: List of all OBC templates.

* Each library will allow for creation, editing, and deletion of individual components.

4.2 Key User Flows

  1. Create New Hiring Pipeline:

* Dashboard → "Create New Pipeline" button → Pipeline Builder Wizard (Step 1-6) → Review & Activate.

  1. Edit Existing Pipeline:

* Pipelines List → Select Pipeline → "Edit Pipeline" → Access Pipeline Builder Wizard (with pre-filled data) → Save Changes.

  1. Create New Component (e.g., Job Description):

* Components Library → Job Descriptions → "Create New Job Description" button → Job Description Editor → Save.

Alternative:* Within Pipeline Builder Wizard, select "Create New" instead of "Choose Existing."

  1. Manage Component Library:

* Components Library → Select Component Type (e.g., Interview Question Banks) → List View → Actions (Edit, Duplicate, Delete).

4.3 Wireframe Descriptions

4.3.1 Main Dashboard

  • Layout: Two-column layout. Left sidebar for primary navigation (Dashboard, Pipelines, Components Library). Main content area for overview.
  • Header: Logo, User Profile/Settings, Help/Support.
  • Main Content:

* "Welcome, [User Name]!" greeting.

* "Quick Actions" Card: Prominent "Create New Pipeline" button, "View Pipelines" link.

* "Active Pipelines" Section: A card or table displaying 3-5 most recent/active pipelines with key info (Title, Department, Status, Last Modified). "View All" link.

* "Recent Components" Section: A smaller section showing recently edited Job Descriptions, Question Banks, etc., with component type and name.

4.3.2 Pipeline Builder Wizard (Example: Step 1 - General Info)

  • Layout: Standard page with header, left-hand progress indicator (vertical steps list), and main content area.
  • Header: Pipeline Builder Title, "Save Draft" button, "Exit" button.
  • Progress Indicator (Left Sidebar):

* 1. General Information (Active/Highlighted)

* 2. Job Description

* 3. Interview Stages

* 4. Offer Letter

* 5. Onboarding Checklist

* 6. Review & Activate

  • Main Content (Step 1): "General Information"

* Pipeline Name: Text input field (e.g., "Senior Software Engineer - Backend").

* Department: Dropdown/Searchable select (e.g., "Engineering", "Marketing").

* Role Type: Dropdown (e.g., "Full-time", "Part-time", "Contract").

* Description: Multi-line text area for internal notes about the pipeline.

* Footer: "Next Step" button (right-aligned), "Back" button (left-aligned, disabled on Step 1).

4.3.3 Job Description Editor (Standalone & within Wizard)

  • Layout: Full-page editor with header and footer actions.
  • Header: "Create/Edit Job Description", "Save" button, "Cancel" button.
  • Main Content:

* JD Title: Text input.

* Department: Dropdown/Searchable select.

* Location: Text input/Dropdown.

* Job Summary: Rich text editor (WYSIWYG).

* Responsibilities: Rich text editor (bullet points encouraged).

* Qualifications/Requirements: Rich text editor (bullet points encouraged).

* Benefits (Optional): Rich text editor.

* Associated Skills (Optional): Tag input field.

* Toggle: "Make available as a template in library."

  • Footer: "Save JD" button, "Cancel" button. If within wizard, "Save & Continue" and "Back to Pipeline Wizard."

4.4 UI Components & Interactions

  • Navigation: Left-aligned persistent sidebar for primary navigation. Top header for global actions (profile, help).
  • Buttons: Clearly labeled primary (e.g., "Create New Pipeline"), secondary (e.g., "Save Draft"), and tertiary (e.g., "Cancel") buttons. Hover states for all interactive elements.
  • Forms:

* Input Fields: Standard text, number, date fields. Clear labels above or to the left of inputs.

* Dropdowns/Selects: Standard dropdowns, searchable select components for longer lists (e.g., departments, existing templates).

* Rich Text Editors (WYSIWYG): For Job Descriptions, Offer Letter content, providing formatting options (bold, italic, lists, links).

* Checkboxes/Radio Buttons: For selections and toggles.

  • Modals/Dialogs: For confirmations (e.g., "Are you sure you want to delete?"), quick edits, or information pop-ups.
  • Tables: For displaying lists of pipelines, components, with sortable columns and pagination.
  • Progress Indicators: Step-by-step wizard progress bar/sidebar. Loading spinners for asynchronous operations.
  • Alerts/Toasts: Non-intrusive notifications for success (e.g., "Pipeline Saved Successfully!"), warnings, or errors.
  • Drag-and-Drop: Potentially for reordering interview stages or checklist items.

5. Visual Design Guidelines

The visual design will aim for professionalism, clarity, and an inviting user experience.

5.1 Color Palette

  • Primary Brand Color: A medium-dark blue or teal to convey trust, professionalism, and stability.

* Example: #2A528A (Deep Blue) or #1F7A8C (Teal)

  • Secondary Accent Color: A vibrant, but not overwhelming, complementary color for calls-to-action and highlights.

* Example: #FF8C00 (Orange) or #5EC2B6 (Aqua Green)

  • Neutral Palette:

* Backgrounds: Light grey (#F8F9FA) or off-white (#FFFFFF) for main content areas.

* Text: Dark grey (#343A40) for primary text, lighter grey (#6C757D) for secondary text/labels.

* Borders/Dividers: Light grey (#DEE2E6).

  • System Colors:

* Success: Green (e.g., #28A745)

* Warning: Yellow/Orange (e.g., #FFC107)

* Error: Red (e.g., #DC3545)

* Info: Blue (e.g., #17A2B8)

5.2 Typography

  • Primary Font: A clean, modern sans-serif typeface for readability and a professional appearance.

* Example: Inter, Roboto, or Open Sans.

  • Headings: Inter Bold or Roboto Medium for clear hierarchy.

* H1: 28-32px

* H2: 24-28px

* H3: 20-22px

  • Body Text: Inter Regular or Roboto Regular for optimal readability.

* Paragraphs: 14-16px (base size)

* Labels/Small Text: 12-14px

  • Line Height: 1.5 for body text to improve readability.

5.3 Iconography

  • Style: Flat or subtle line icons for clarity and modern aesthetic.
  • Consistency: Use a single icon set (e.g., Font Awesome, Material Icons) for uniformity in style, weight, and size.
  • Examples:

* + (Add New)

* Edit (Pencil icon)

* Delete (Trash icon)

* Save (Disk icon)

* Next/Back (Chevron arrows)

* Dashboard (Gauge or Grid icon)

* Library (Bookshelf or Folder icon)

5.4 Imagery

  • Purpose: Use sparingly and intentionally to enhance understanding or visual appeal without distracting.
  • Style: Professional, diverse, and inclusive stock photography or custom illustrations.
  • Examples: Background for login page, small contextual illustrations in empty states (e.g., "No pipelines created yet").
  • Avoid: Overly decorative or distracting images.

6. User Experience (UX) Recommendations

6.1 Workflow Optimization

  • Template-First Approach: When creating a new component (JD, IQB, etc.), prompt users to either "Start from Scratch" or "Choose from Template." Provide a curated set of default templates.
  • In-Context Creation/Selection: Within the Pipeline Builder Wizard, allow users to create a new component on the fly or select an existing one from the library without leaving the wizard.
  • Smart Defaults: Pre-fill certain fields with intelligent defaults (e.g., the current department when creating a JD from within a department-specific pipeline).
  • Duplication Feature: Allow users to duplicate existing pipelines or individual components as a starting point for new ones, reducing repetitive data entry.

6.2 Usability & Learnability

  • Clear Labeling: All buttons, fields, and sections should be clearly and concisely labeled.
  • Tooltips/Help Text: Provide contextual tooltips or inline help text for complex fields or features.
  • Progressive Disclosure: Present information and options gradually to avoid overwhelming the user. For example, advanced settings can be hidden behind an expandable section.
  • Search & Filter: Implement robust search and filtering capabilities within component libraries (by name, type, department, tags).
  • "Save Draft" Functionality: Allow users to save partially completed pipelines or components and return to them later.

6.3 Feedback & Error Handling

  • Instant Validation: Provide real-time validation feedback on form fields (e.g., "Required field," "Invalid format").
  • Clear Error Messages: Error messages should be specific, actionable, and user-friendly (e.g., "Please enter a pipeline name" instead of "Error 400").
  • Success Notifications: Use non-intrusive toast messages for successful operations (e.g., "Job Description saved!").
  • Confirmation Dialogs: For destructive actions (e.g., deleting a component, deactivating a pipeline).

6.4 Accessibility

  • Keyboard Navigation: Ensure all interactive elements are reachable and operable via keyboard.
  • Screen Reader Compatibility: Use proper semantic HTML, ARIA attributes where
gemini Output

Hiring Pipeline Builder: Final Design Assets & Specifications

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


1. Executive Summary

The design for the Hiring Pipeline Builder prioritizes clarity, efficiency, and a seamless user experience. We aim for a clean, modern aesthetic that is both professional and approachable. Key design principles include:

  • User-Centricity: Intuitive workflows and clear navigation for recruiters, hiring managers, and administrators.
  • Efficiency: Minimize clicks, provide quick access to critical information, and automate repetitive tasks where possible.
  • Clarity: Use consistent visual hierarchies, clear typography, and well-defined UI components to reduce cognitive load.
  • Scalability: A design system that can easily accommodate future features and growing data volumes.
  • Accessibility: Adherence to WCAG 2.1 guidelines to ensure usability for all users.

2. Design Specifications

2.1. Overall Layout & Structure

The platform will feature a persistent left-hand navigation sidebar for primary section access and a main content area. A top header will provide quick access to notifications, user profile, and global search.

  • Left Sidebar Navigation:

* Dashboard

* Jobs (Active, Drafts, Archived)

* Candidates (Global Pool)

* Templates (Job Descriptions, Interview Questions, Offer Letters, Onboarding)

* Analytics

* Settings (Company, Users, Integrations)

  • Top Header:

* Company Logo (left)

* Global Search Bar (center)

* Notifications Icon (right)

* User Profile/Account Menu (right)

  • Main Content Area: Dynamic, adapting to the selected navigation item, featuring dashboards, lists, forms, and detail views.

2.2. Typography

A clean, legible font family will be used to ensure readability across all screen sizes and data densities.

  • Primary Font Family: Inter (or similar sans-serif like Roboto, Open Sans)
  • Headings (H1-H6):

* H1 (Page Title): Inter Bold, 32px

* H2 (Section Title): Inter Semibold, 24px

* H3 (Card Title): Inter Medium, 18px

* H4 (Subtitle/Form Group): Inter Semibold, 16px

  • Body Text: Inter Regular, 14-16px
  • Labels/Small Text: Inter Regular, 12-13px
  • Monospace Font (for code snippets if applicable): Fira Code, 13px

2.3. Iconography

A consistent icon set will be used to enhance visual communication and reduce text clutter.

  • Style: Line-based, minimalist, filled on hover/active states.
  • Library: Font Awesome Pro, Material Icons, or a custom SVG icon set.
  • Purpose:

* Navigation (e.g., Dashboard, Jobs, Candidates)

* Actions (e.g., Edit, Delete, Add, View, Share)

* Status Indicators (e.g., Approved, Pending, Rejected)

* File Types (e.g., PDF, DOCX)

2.4. UI Components

  • Cards: Used for encapsulating related information (e.g., Job summaries, Candidate snippets, Analytics widgets).
  • Tables: For displaying lists of data (e.g., Candidates for a job, Template library). Features include sorting, filtering, pagination, and inline actions.
  • Forms: Clear input fields, dropdowns, radio buttons, checkboxes with validation feedback.
  • Buttons:

* Primary CTA: Solid background, high contrast.

* Secondary: Outlined or ghost buttons.

* Tertiary/Text: For less critical actions.

* Icon Buttons: For compact actions (e.g., Edit, Delete).

  • Progress Bars/Steppers: Visualizing pipeline stages, onboarding progress.
  • Modals/Drawers: For focused tasks (e.g., creating a new job, editing a candidate's details).
  • Tabs: For organizing content within a section (e.g., Job details: Overview, Candidates, Interviews, Offer).
  • Badges/Tags: For quick status indicators or categorization (e.g., "Active", "On Hold", "Full-time").

3. Wireframe Descriptions (Key Screens)

3.1. Dashboard

  • Layout: Grid-based layout with customizable widgets.
  • Widgets:

* Active Jobs Overview: Card view showing top N active jobs with quick stats (e.g., # candidates, # new applicants).

* Pipeline Snapshot: Funnel chart or bar chart visualizing candidates per stage across all active jobs.

* New Applicants: List of recently applied candidates with quick links to their profiles.

* Upcoming Interviews: Calendar view or list of scheduled interviews.

* Tasks/Reminders: List of pending actions (e.g., "Review Candidate X for Job Y").

  • Interactivity: Clickable widgets to drill down into specific jobs, candidates, or schedules.

3.2. Job Creation / Management (Job Details View)

  • Job Creation (Modal/Stepped Form):

* Step 1: Basic Info: Job Title, Department, Location, Employment Type, Salary Range.

* Step 2: Job Description: Rich text editor with pre-filled template options, option to upload.

* Step 3: Interview Plan: Define stages (Application, Screening, Interview 1, Interview 2, Offer, etc.), assign interview question templates per stage, assign interviewers.

* Step 4: Offer & Onboarding: Select offer letter template, select onboarding checklist template.

  • Job Details View (Tabbed Interface):

* Overview Tab: Job details, status, quick stats, actions (Edit, Close, Archive).

Candidates Tab: Table of all candidates for this specific job*, with their current pipeline stage, application date, last activity, and quick actions (View Profile, Move Stage, Reject).

* Interviews Tab: List of scheduled and completed interviews for this job.

* Team Tab: List of assigned recruiters and hiring managers.

* Files Tab: Associated documents (e.g., internal briefs, competitor analysis).

3.3. Candidate Management (Global & Job-Specific)

  • Global Candidate List:

* Layout: Data table with columns for Name, Email, Last Active, Source, Skills, Current Job Applied For, Status.

* Filters: By status, skills, source, applied jobs.

* Actions: View Profile, Add to Job, Email.

  • Candidate Profile (Multi-section View):

* Header: Candidate Name, Contact Info, Current Status, Actions (Move Stage, Reject, Schedule Interview, Share Profile).

* Sections:

* Resume/CV: Embeddable viewer or downloadable link.

* Application Details: Answers to application questions.

* Pipeline Progress: Visual stepper showing current stage and history.

* Interview Notes & Scores: Chronological log of all interviews, attached notes, and scoring rubric results.

* Feedback: Consolidated feedback from all interviewers.

* Documents: Uploaded files (portfolio, certifications).

* Activity Log: Timestamped history of all interactions and status changes.

3.4. Template Library

  • Layout: Card or list view for different template types (Job Descriptions, Interview Questions, Offer Letters, Onboarding Checklists).
  • Each Template Type:

* Job Descriptions: List of saved JDs, with options to Preview, Edit (rich text editor), Duplicate, Delete. Tags for categorization.

* Interview Question Banks: List of question sets. Each set is a collection of questions. Options to Edit (add/remove questions, reorder), Preview, Duplicate.

* Offer Letter Templates: Rich text editor with merge tags (e.g., {{candidate_name}}, {{salary}}). Options to Preview, Edit, Duplicate.

* Onboarding Checklists: List of predefined checklists. Each checklist is a series of tasks with assignees and due dates. Options to Edit, Preview, Duplicate.

  • Actions: "Create New [Template Type]", "Import Template".

3.5. Settings

  • Layout: Left-hand sub-navigation for different settings categories.
  • Categories:

* Company Profile: Logo upload, company details, brand colors (for templates).

* Users & Roles: Manage users, assign roles (Admin, Recruiter, Hiring Manager).

* Pipeline Stages: Customize global pipeline stages (e.g., Application, Phone Screen, Technical Interview, etc.).

* Integrations: Connect to HRIS, calendar, email services.

* Email Templates: Customize automated email notifications.


4. Color Palette

The chosen color palette balances professionalism with approachability, ensuring brand consistency and accessibility.

  • Primary Brand Color (e.g., PantheraHive Blue): #007BFF (RGB: 0, 123, 255)

Usage:* Key call-to-action buttons, primary navigation active state, brand elements.

  • Secondary Accent Color (e.g., Teal): #20C997 (RGB: 32, 201, 151)

Usage:* Progress indicators, secondary highlights, success messages.

  • Neutral Palette:

Dark Text/Heading: #212529 (RGB: 33, 37, 41) - Provides strong contrast.*

* Body Text: #495057 (RGB: 73, 80, 87)

* Light Gray (Borders/Dividers): #DEE2E6 (RGB: 222, 226, 230)

Light Background: #F8F9FA (RGB: 248, 249, 250) - For cards, sections.*

* Page Background: #FFFFFF (RGB: 255, 255, 255)

  • Semantic Colors:

Success: #28A745 (RGB: 40, 167, 69) - Green for positive actions/status.*

Warning: #FFC107 (RGB: 255, 193, 7) - Yellow/Orange for cautions.*

Danger/Error: #DC3545 (RGB: 220, 53, 69) - Red for critical actions/errors.*

Info: #17A2B8 (RGB: 23, 162, 184) - Blue for informational messages.*

Accessibility Note: All color combinations will be checked against WCAG 2.1 guidelines for sufficient contrast ratio (minimum AA level for text and UI elements).


5. UX Recommendations

5.1. Intuitive Navigation & Information Architecture

  • Clear Hierarchy: Use clear headings, subheadings, and visual grouping to delineate content sections.
  • Persistent Navigation: The left sidebar ensures users always know where they are and can easily jump to other sections.
  • Breadcrumbs: For deeper navigation paths (e.g., Dashboard > Jobs > "Senior Software Engineer" > Candidate Profile).
  • Global Search: A prominent search bar in the header for quickly finding jobs, candidates, or templates.

5.2. Workflow Efficiency & Minimizing Clicks

  • In-line Editing: Allow quick edits for certain fields directly within tables or detail views.
  • Batch Actions: Enable selecting multiple candidates or jobs to perform actions (e.g., bulk move stage, bulk email).
  • Quick Add Buttons: Prominent "Add New Job" or "Add New Candidate" buttons on relevant screens.
  • Drag-and-Drop: Consider for moving candidates between pipeline stages (e.g., a Kanban-style view for candidate management).
  • Contextual Actions: Buttons and menus that appear only when relevant to the selected item (e.g., "Schedule Interview" on a candidate profile).

5.3. Feedback & Confirmation

  • Toast Notifications: Non-intrusive, temporary messages for successful actions (e.g., "Job created successfully," "Candidate moved to Interview stage").
  • Error Messages: Clear, specific, and actionable error messages for form validation or system issues.
  • Loading Indicators: Visual cues (spinners, skeleton loaders) for content that is still loading.
  • Confirmation Dialogs: For destructive actions (e.g., "Are you sure you want to delete this job?").

5.4. Data Visualization

  • Pipeline Funnel: A visual funnel chart on the dashboard and per-job overview to quickly grasp candidate progression and drop-off points.
  • Interactive Charts: Allow users to click on chart segments to filter underlying data (e.g., click on "Interview Stage" in the funnel to see those candidates).
  • Key Performance Indicators (KPIs): Prominent display of metrics like "Time to Hire," "Offer Acceptance Rate," "Source of Hire" on the Analytics dashboard.

5.5. Collaboration & Communication

  • Shared Notes: Ability for hiring team members to add notes to candidate profiles.
  • @Mentions: Enable mentioning team members in notes or comments to notify them.
  • Activity Feeds: A chronological log of actions and communications on candidate profiles and job pages.
  • Email Integration: Seamlessly send emails to candidates from within the platform, with templates and logging.

5.6. Customization & Flexibility

  • Configurable Pipeline Stages: Allow administrators to define and reorder the unique stages of their hiring process.
  • Branding Options: Enable companies to upload their logo and define primary brand colors for internal use and external-facing templates (offer letters, candidate communications).
  • Template Customization: Rich text editors for job descriptions and offer letters, with support for merge tags to personalize content.

5.7. Responsiveness & Accessibility

  • Mobile-First Design Principles: Ensure the platform is fully responsive and optimized for use on various devices (desktop, tablet, mobile).
  • Keyboard Navigation: All interactive elements should be accessible
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);}});}