Add all demos (ristorante 6 templates), CRM, diagrams, resumes, batch CSVs

This commit is contained in:
2026-04-24 12:58:02 +02:00
parent 51d7df0f26
commit 9406bdc06b
19 changed files with 7092 additions and 0 deletions
+490
View File
@@ -0,0 +1,490 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AutoJobs Pipeline — Flowchart</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: #0f1117;
color: #e2e8f0;
padding: 40px 20px;
min-height: 100vh;
}
h1 {
text-align: center;
color: #f8fafc;
font-size: 24px;
margin-bottom: 8px;
}
.subtitle {
text-align: center;
color: #64748b;
font-size: 14px;
margin-bottom: 40px;
}
.flowchart {
max-width: 1100px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 0;
align-items: center;
}
.row {
display: flex;
gap: 24px;
justify-content: center;
flex-wrap: wrap;
align-items: center;
}
.step {
background: #1e293b;
border: 1px solid #334155;
border-radius: 12px;
padding: 16px 20px;
min-width: 200px;
max-width: 260px;
text-align: center;
flex: 1;
}
.step-num {
display: inline-block;
background: #3b82f6;
color: #fff;
font-size: 11px;
font-weight: 700;
padding: 3px 8px;
border-radius: 20px;
margin-bottom: 10px;
}
.step-title {
font-size: 14px;
font-weight: 600;
color: #f1f5f9;
margin-bottom: 8px;
}
.step-details {
font-size: 12px;
color: #94a3b8;
line-height: 1.5;
}
.step-details span {
display: block;
}
.arrow {
color: #3b82f6;
font-size: 24px;
text-align: center;
line-height: 1;
padding: 4px 0;
}
.arrow-label {
font-size: 11px;
color: #475569;
text-align: center;
margin-top: -8px;
}
/* Stage colors */
.input { border-color: #8b5cf6; }
.input .step-num { background: #8b5cf6; }
.fetch { border-color: #06b6d4; }
.fetch .step-num { background: #06b6d4; }
.classify { border-color: #f59e0b; }
.classify .step-num { background: #f59e0b; }
.eval { border-color: #10b981; }
.eval .step-num { background: #10b981; }
.gen { border-color: #ec4899; }
.gen .step-num { background: #ec4899; }
.pipeline { border-color: #6366f1; }
.pipeline .step-num { background: #6366f1; }
.alert { border-color: #ef4444; }
.alert .step-num { background: #ef4444; }
/* Sub-steps */
.sub-row {
display: flex;
gap: 12px;
justify-content: center;
flex-wrap: wrap;
margin-top: 0;
}
.sub-step {
background: #1a2332;
border: 1px solid #1e293b;
border-radius: 8px;
padding: 10px 14px;
min-width: 150px;
max-width: 200px;
text-align: center;
}
.sub-step-title {
font-size: 12px;
font-weight: 600;
color: #cbd5e1;
margin-bottom: 4px;
}
.sub-step-detail {
font-size: 11px;
color: #64748b;
}
.scoring-box {
background: #0f172a;
border: 2px solid #10b981;
border-radius: 12px;
padding: 16px 24px;
margin: 16px auto;
max-width: 700px;
width: 100%;
}
.scoring-title {
font-size: 13px;
font-weight: 700;
color: #10b981;
margin-bottom: 12px;
text-transform: uppercase;
letter-spacing: 1px;
}
.scoring-grid {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: center;
}
.scoring-item {
background: #1e293b;
border-radius: 6px;
padding: 8px 12px;
text-align: center;
min-width: 120px;
}
.scoring-label {
font-size: 11px;
color: #94a3b8;
margin-bottom: 2px;
}
.scoring-value {
font-size: 16px;
font-weight: 700;
color: #f1f5f9;
}
.scoring-weight {
font-size: 10px;
color: #475569;
}
.decision-box {
background: #1e293b;
border: 2px solid #f59e0b;
border-radius: 12px;
padding: 16px 24px;
margin: 16px auto;
max-width: 400px;
text-align: center;
}
.decision-title {
font-size: 13px;
font-weight: 700;
color: #f59e0b;
margin-bottom: 6px;
}
.decision-text {
font-size: 14px;
color: #e2e8f0;
margin-bottom: 8px;
}
.decision-threshold {
font-size: 12px;
color: #94a3b8;
}
.output-row {
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
}
.output-item {
background: #1e293b;
border: 1px solid #334155;
border-radius: 10px;
padding: 12px 16px;
min-width: 160px;
text-align: center;
}
.output-icon {
font-size: 20px;
margin-bottom: 4px;
}
.output-title {
font-size: 13px;
font-weight: 600;
color: #f1f5f9;
margin-bottom: 4px;
}
.output-detail {
font-size: 11px;
color: #64748b;
}
.separator {
border: none;
border-top: 1px dashed #1e293b;
margin: 24px 0;
width: 100%;
}
.legend {
max-width: 700px;
margin: 40px auto 0;
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
}
.legend-item {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
color: #64748b;
}
.legend-dot {
width: 10px;
height: 10px;
border-radius: 50%;
}
@media (max-width: 600px) {
.step { min-width: 160px; }
.sub-step { min-width: 130px; }
}
</style>
</head>
<body>
<h1>AutoJobs Pipeline — Flowchart</h1>
<p class="subtitle">hostpioneers.com/autojobs — AI-Powered Job Search System</p>
<div class="flowchart">
<!-- STEP 1: INPUT -->
<div class="row">
<div class="step input">
<div class="step-num">STEP 1</div>
<div class="step-title">INPUT</div>
<div class="step-details">
<span>Job URL pasted</span>
<span>OR JD text pasted</span>
<span>OR manual fields</span>
</div>
</div>
</div>
<div class="arrow"></div>
<div class="arrow-label">user pastes URL or description</div>
<!-- STEP 2: FETCH -->
<div class="row">
<div class="step fetch">
<div class="step-num">STEP 2</div>
<div class="step-title">FETCH & PARSE</div>
<div class="step-details">
<span>Extract: title, company, description</span>
<span>Detect board type</span>
<span>Fetch company info</span>
</div>
</div>
</div>
<div class="arrow"></div>
<div class="arrow-label">Perplexity API + web scraping</div>
<!-- STEP 3: CLASSIFY -->
<div class="row">
<div class="step classify">
<div class="step-num">STEP 3</div>
<div class="step-title">CLASSIFY</div>
<div class="step-details">
<span>Voice AI / Agentic / Backend / Full-Stack</span>
<span>Junior / Mid / Senior / Staff</span>
<span>Remote / Spain / EU / US</span>
</div>
</div>
</div>
<div class="arrow"></div>
<!-- STEP 4: EVALUATE -->
<div class="step eval" style="max-width:700px;">
<div class="step-num">STEP 4</div>
<div class="step-title">EVALUATE — 6 Dimensions</div>
<div class="step-details">
<span>Each dimension scored 0100, then weighted average = composite score</span>
</div>
</div>
<!-- SCORING GRID -->
<div class="scoring-box">
<div class="scoring-title">Scoring Dimensions</div>
<div class="scoring-grid">
<div class="scoring-item">
<div class="scoring-label">CV Match</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.25</div>
</div>
<div class="scoring-item">
<div class="scoring-label">Compensation Fit</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.20</div>
</div>
<div class="scoring-item">
<div class="scoring-label">Seniority Fit</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.15</div>
</div>
<div class="scoring-item">
<div class="scoring-label">Culture & Growth</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.15</div>
</div>
<div class="scoring-item">
<div class="scoring-label">Tech Stack Match</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.15</div>
</div>
<div class="scoring-item">
<div class="scoring-label">Interview Feasibility</div>
<div class="scoring-value">0100</div>
<div class="scoring-weight">× 0.10</div>
</div>
</div>
</div>
<div class="arrow"></div>
<!-- DECISION -->
<div class="decision-box">
<div class="decision-title">DECISION GATE</div>
<div class="decision-text">Composite Score ≥ 70?</div>
<div class="decision-threshold">If NO (score &lt; 70) → "Not recommended — skip this role"</div>
</div>
<div class="arrow"></div>
<div class="arrow-label" style="color:#10b981;">YES → Generate content</div>
<!-- STEP 5: GENERATE -->
<div class="step gen" style="max-width:700px;">
<div class="step-num">STEP 5</div>
<div class="step-title">GENERATE — If Score ≥ 70</div>
<div class="step-details">
<span>ATS-Optimized CV PDF + Personalized Cover Letter</span>
</div>
</div>
<div class="output-row">
<div class="output-item">
<div class="output-icon">📄</div>
<div class="output-title">CV PDF</div>
<div class="output-detail">Keyword-injected, ATS-optimized</div>
</div>
<div class="output-item">
<div class="output-icon">✉️</div>
<div class="output-title">Cover Letter</div>
<div class="output-detail">Personalized, 3 paragraphs</div>
</div>
<div class="output-item">
<div class="output-icon">🎯</div>
<div class="output-title">Interview Prep</div>
<div class="output-detail">Questions + STAR stories</div>
</div>
</div>
<div class="arrow"></div>
<!-- STEP 6: PIPELINE -->
<div class="step pipeline" style="max-width:700px;">
<div class="step-num">STEP 6</div>
<div class="step-title">PIPELINE — Kanban Board</div>
</div>
<div class="output-row">
<div class="output-item" style="border-color:#8b5cf6;">
<div class="output-icon">📋</div>
<div class="output-title">Wishlist</div>
<div class="output-detail">Score ≥ 70, not yet applied</div>
</div>
<div class="output-item" style="border-color:#06b6d4;">
<div class="output-icon">🚀</div>
<div class="output-title">Applied</div>
<div class="output-detail">User submitted application</div>
</div>
<div class="output-item" style="border-color:#f59e0b;">
<div class="output-icon">💬</div>
<div class="output-title">Interview</div>
<div class="output-detail">Scheduled or completed</div>
</div>
<div class="output-item" style="border-color:#10b981;">
<div class="output-icon"></div>
<div class="output-title">Offer / Reject</div>
<div class="output-detail">Outcome recorded</div>
</div>
</div>
<div class="arrow"></div>
<!-- STEP 7: ALERT -->
<div class="step alert" style="max-width:700px;">
<div class="step-num">STEP 7</div>
<div class="step-title">ALERTS & FOLLOW-UP</div>
<div class="step-details">
<span>Telegram notification via Horus bot</span>
</div>
</div>
<div class="output-row">
<div class="output-item">
<div class="output-icon">🆕</div>
<div class="output-title">New Evaluation</div>
<div class="output-detail">Complete notification</div>
</div>
<div class="output-item">
<div class="output-icon"></div>
<div class="output-title">Interview Reminder</div>
<div class="output-detail">24h before</div>
</div>
<div class="output-item">
<div class="output-icon">🏆</div>
<div class="output-title">Offer Received</div>
<div class="output-detail">Immediate alert</div>
</div>
</div>
<hr class="separator">
<!-- FEEDBACK LOOP -->
<div class="step" style="border-color:#475569; max-width:500px;">
<div class="step-title" style="color:#94a3b8;">🔁 ICP LEARNING LOOP (Future)</div>
<div class="step-details">
<span>Track which jobs actually convert → auto-adjust scoring weights</span>
</div>
</div>
</div>
<!-- LEGEND -->
<div class="legend">
<div class="legend-item"><div class="legend-dot" style="background:#8b5cf6;"></div> Input</div>
<div class="legend-item"><div class="legend-dot" style="background:#06b6d4;"></div> Fetch</div>
<div class="legend-item"><div class="legend-dot" style="background:#f59e0b;"></div> Classify</div>
<div class="legend-item"><div class="legend-dot" style="background:#10b981;"></div> Evaluate</div>
<div class="legend-item"><div class="legend-dot" style="background:#ec4899;"></div> Generate</div>
<div class="legend-item"><div class="legend-dot" style="background:#6366f1;"></div> Pipeline</div>
<div class="legend-item"><div class="legend-dot" style="background:#ef4444;"></div> Alert</div>
</div>
</body>
</html>