Professional Resume Builder
Run ID: 69ccd80e3e7fb09ff16a58fe2026-04-01Career
PantheraHive BOS
BOS Dashboard

As the final step in the "Professional Resume Builder" workflow, we will now generate a comprehensive guide and template for crafting a highly effective and tailored cover letter. A well-written cover letter is your opportunity to introduce yourself, elaborate on your resume, and demonstrate your genuine interest and fit for the specific role and company.


Deliverable: Tailored Cover Letter Generation Guide

This guide provides you with the framework, essential components, and best practices to create a compelling cover letter that complements your newly built professional resume and targets your desired job.

1. The Purpose of a Professional Cover Letter

A cover letter serves as your personal introduction to a potential employer, offering context and personality that a resume alone cannot. Its primary goals are to:

2. Essential Components of a Professional Cover Letter

Every strong cover letter includes the following sections, presented in a clear and logical flow:

2.1. Your Contact Information

2.2. Date

2.3. Employer's Contact Information (If Known)

2.4. Professional Salutation

2.5. Opening Paragraph (Introduction & Hook)

2.6. Body Paragraphs (Highlighting Your Fit)

2.7. Closing Paragraph (Call to Action & Reiteration)

2.8. Professional Closing

2.9. Signature

3. Tailoring Your Cover Letter: The Key to Success

A generic cover letter is often discarded. Customization is paramount.

* Visit their website (About Us, Mission, Values, News sections).

* Check their social media (LinkedIn, Twitter).

* Read recent press releases or articles.

* Understand their products/services and target market.

4. Best Practices and Tips

5. Professional Cover Letter Template

Use this template as a starting point. Remember to replace all bracketed [ ] information with your specific details.

text • 2,378 chars
[Your Full Name]
[Your Address]
[Your Phone Number]
[Your Email Address]
[Your LinkedIn Profile URL (Optional)]

[Date]

[Hiring Manager Name (If known), e.g., Ms. Jane Doe]
[Hiring Manager Title, e.g., Director of Marketing]
[Company Name]
[Company Address]

Dear [Mr./Ms./Dr. Last Name or Hiring Manager],

I am writing to express my enthusiastic interest in the **[Job Title]** position at **[Company Name]**, as advertised on **[Platform where you saw the advertisement, e.g., LinkedIn, company website, Indeed]**. With [Number] years of experience in [Your Primary Field/Industry] and a proven track record in [1-2 key skills relevant to the role], I am confident that my skills and passion align perfectly with the requirements of this role and the innovative spirit of your team.

In my previous role as [Your Previous Job Title] at [Previous Company], I was responsible for [briefly describe 1-2 key responsibilities]. For example, I successfully [describe a specific achievement using the STAR method, quantifying results whenever possible]. This experience honed my abilities in [relevant skill 1] and [relevant skill 2], which I understand are crucial for success in the [Job Title] role at [Company Name]. I am particularly drawn to [Company Name]'s commitment to [mention a specific company value, project, or mission that resonates with you] and believe my proactive approach would contribute significantly to your [specific team/department] goals.

My expertise in [mention another key skill or area of expertise] further positions me to excel in this role. I have a strong background in [mention a relevant technology, methodology, or industry trend], which I believe would be invaluable in [explain how it benefits the company, e.g., driving project efficiency, expanding market reach, improving customer satisfaction]. I am eager to leverage my [specific strength, e.g., problem-solving skills, leadership capabilities, analytical mindset] to contribute to [Company Name]'s continued success and innovation.

Thank you for considering my application. My attached resume provides further details on my qualifications and accomplishments. I am very keen to learn more about this opportunity and discuss how my experience and dedication can benefit [Company Name]. I am available for an interview at your earliest convenience.

Sincerely,

[Your Typed Full Name]
Sandboxed live preview

Workflow Step: Professional Resume Builder - Generate Resume (Step 1 of 2)

Welcome to the first step of building your professional resume! This stage is dedicated to intelligently generating a tailored resume draft that significantly enhances your chances of securing an interview for your target job.


Objective of This Step: Tailored Resume Generation

The primary goal of this "Generate Resume" step is to create a comprehensive, optimized, and professional resume draft specifically customized for a job you are applying for. We leverage advanced AI capabilities to analyze your career history and match it with the requirements of your desired role, ensuring maximum impact and ATS (Applicant Tracking System) compatibility.


How We Generate Your Professional Resume

To produce the most effective and personalized resume, our system follows a meticulous process, incorporating industry best practices and powerful AI analysis.

1. Input Collection (Your Contribution is Key!)

Before we can generate your resume, we need crucial information from you. The more detailed and accurate your input, the better the tailored output will be:

  • Target Job Description:

* Crucial: Please provide the full job description (copy-paste) for the specific position you are targeting. This allows our system to identify key skills, responsibilities, keywords, and qualifications to optimize your resume.

  • Your Current Resume/Work History:

* Upload your existing resume (PDF, DOCX) or provide a detailed summary of your work experience, education, skills, and any relevant projects or achievements.

  • Key Achievements & Metrics:

* Highlight your most significant accomplishments, preferably with quantifiable results (e.g., "Increased sales by 15%", "Managed a team of 5", "Reduced project costs by $10,000").

  • Skills & Qualifications:

* List all relevant technical skills, soft skills, languages, certifications, and any other qualifications pertinent to your career goals.

  • Preferred Resume Style/Template (Optional):

* If you have a preference for a specific resume style (e.g., chronological, functional, hybrid) or a general aesthetic (modern, traditional, minimalist), please indicate. Otherwise, we will select an optimal, professional layout.

2. Our Advanced Generation Process

Once we have your input, our AI engine will perform the following actions:

  • ATS Optimization:

* We analyze the target job description to extract critical keywords and phrases. Your resume content will then be strategically optimized to ensure high compatibility with Applicant Tracking Systems, increasing the likelihood of your application being seen by a human recruiter.

  • Content Tailoring & Customization:

* Your experience and achievements will be rephrased and highlighted to directly address the requirements and preferences outlined in the target job description. This ensures every bullet point is relevant and impactful.

  • Impactful Language & Action Verbs:

* We employ a powerful vocabulary of action verbs and industry-specific terminology to describe your responsibilities and achievements, making your contributions sound more dynamic and professional.

  • Quantifiable Results Integration:

* Where possible, we will help you frame your achievements with metrics, transforming qualitative statements into compelling, data-backed evidence of your success.

  • Structure & Formatting Best Practices:

* Your resume will be structured logically with clear headings, bullet points, and appropriate spacing for readability. We adhere to modern resume formatting standards that are pleasing to the eye and easy for recruiters to scan.

  • Error Checking:

* Initial checks for grammatical errors, spelling mistakes, and consistency will be performed to ensure a polished first draft.


What You Will Receive (Your Deliverable)

Upon successful execution of this step, you will receive:

  • A Comprehensive Initial Resume Draft:

* A fully structured and content-populated resume, tailored specifically to your target job. This will include sections like:

* Contact Information

* Professional Summary/Objective

* Work Experience (optimized bullet points)

* Education

* Skills (categorized and keyword-rich)

* Optional sections (e.g., Projects, Certifications, Awards)

  • Key Customization Options:

* The draft will be presented in a professional, industry-standard template.

  • Downloadable Format:

* The resume draft will be provided in a readily editable format (e.g., DOCX) and a widely viewable format (e.g., PDF) for your convenience.


Key Benefits of This Step

  • Increased Interview Chances: A tailored, ATS-optimized resume significantly boosts your visibility and appeal to recruiters.
  • Time-Saving: Automates the tedious process of writing and customizing your resume for each application.
  • Professional Presentation: Ensures your resume meets current industry standards for format, content, and language.
  • Confidence Boost: Apply with the assurance that your resume effectively showcases your qualifications and potential.

Next Steps (Step 2 of 2: Review and Refine)

Once we have generated your initial resume draft, the next step will be to meticulously review it together. You will have the opportunity to provide feedback, request revisions, and fine-tune any details to ensure the final product perfectly represents you and your career aspirations.

To proceed with generating your tailored resume, please provide the requested input as detailed under "Input Collection" above.

6. Actionable Next Steps

  1. Identify Your Target Job: Review the specific job description for which you are applying.
  2. Gather Employer Information: Find the hiring manager's name and company details.
  3. Customize the Template: Fill in all bracketed [ ] sections in the template with your personalized information, directly addressing the job requirements and company specifics.
  4. Draft Your Content: Write your opening, body, and closing paragraphs, focusing on tailoring each sentence to the target job and company.
  5. Review and Refine:

* Check for clarity, conciseness, and impact.

* Proofread meticulously for any grammatical errors or typos.

* Ensure all achievements are quantified where possible.

* Verify that your tone is professional and enthusiastic.

  1. Save as PDF: Convert your final cover letter document to a PDF file named professionally (e.g., "JohnDoe_CoverLetter_JobTitle.pdf").
  2. Attach and Send: Submit your tailored cover letter along with your professional resume to the employer, following their application instructions.

By following this detailed guide, you will be able to craft a compelling cover letter that effectively showcases your qualifications and passion, significantly enhancing your job application.

professional_resume_builder.txt
Download source file
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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}