491 lines
13 KiB
HTML
491 lines
13 KiB
HTML
<!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 0–100, 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">0–100</div>
|
||
<div class="scoring-weight">× 0.25</div>
|
||
</div>
|
||
<div class="scoring-item">
|
||
<div class="scoring-label">Compensation Fit</div>
|
||
<div class="scoring-value">0–100</div>
|
||
<div class="scoring-weight">× 0.20</div>
|
||
</div>
|
||
<div class="scoring-item">
|
||
<div class="scoring-label">Seniority Fit</div>
|
||
<div class="scoring-value">0–100</div>
|
||
<div class="scoring-weight">× 0.15</div>
|
||
</div>
|
||
<div class="scoring-item">
|
||
<div class="scoring-label">Culture & Growth</div>
|
||
<div class="scoring-value">0–100</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">0–100</div>
|
||
<div class="scoring-weight">× 0.15</div>
|
||
</div>
|
||
<div class="scoring-item">
|
||
<div class="scoring-label">Interview Feasibility</div>
|
||
<div class="scoring-value">0–100</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 < 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>
|