Spaces:
Sleeping
Premium UI redesign, repo cleanup, and restored LUNA media
Browse files- Add theme.css design system (brand tokens, Inter/Space Grotesk, glass
navbar, gradient buttons, premium cards) linked across all pages
- Cinematic dark hero + animated "How it works" pipeline on the landing page
- Rebrand the interview screen as "Interview with LUNA": her real photo as the
avatar, speaking equalizer, brand-colored bubbles/buttons (no JS changes)
- Polished closing score card and multi-column footer
- Restore the real LUNA.png + demo video (were broken Git-LFS stubs) and stop
tracking png/mp4 via LFS so the Space always has the real binaries
- Ignore the local archive/ folder; drop the unused data/merged_dataset.json
- Add docs/social-video-guide.md (LUNA explainer-video production guide)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- .gitattributes +3 -1
- .gitignore +2 -2
- backend/static/css/theme.css +235 -0
- backend/templates/base.html +17 -2
- backend/templates/closing.html +32 -4
- backend/templates/index.html +43 -3
- backend/templates/interview.html +77 -2
- data/merged_dataset.json +0 -0
- docs/social-video-guide.md +133 -0
|
@@ -1,3 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
| 1 |
*.png filter=lfs diff=lfs merge=lfs -text
|
| 2 |
-
backend/static/images/LUNA.png filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
# LUNA.png (~2.4MB) and the demo .mp4 (~0.9MB) are small enough to commit directly.
|
| 2 |
+
# They are intentionally NOT tracked by Git LFS so the deployed Space always has the
|
| 3 |
+
# real binaries (an un-pushed LFS object would otherwise show a broken image).
|
| 4 |
*.png filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 5 |
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
@@ -1,5 +1,5 @@
|
|
| 1 |
-
# Local-only archive
|
| 2 |
-
|
| 3 |
|
| 4 |
# Claude / editor working dirs
|
| 5 |
.claude/
|
|
|
|
| 1 |
+
# Local-only archive: old laptop snapshot, presentation & documentation (never deploy this)
|
| 2 |
+
archive/
|
| 3 |
|
| 4 |
# Claude / editor working dirs
|
| 5 |
.claude/
|
|
@@ -0,0 +1,235 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* =====================================================================
|
| 2 |
+
Codingo β Premium design system (theme.css)
|
| 3 |
+
Single source of truth for the new look. Linked AFTER the legacy inline
|
| 4 |
+
<style> in base.html so these rules win and cascade across every page.
|
| 5 |
+
Direction: premium light product + cinematic dark hero/navbar/footer.
|
| 6 |
+
===================================================================== */
|
| 7 |
+
|
| 8 |
+
:root {
|
| 9 |
+
/* Brand */
|
| 10 |
+
--brand-1: #6366f1; /* indigo */
|
| 11 |
+
--brand-2: #8b5cf6; /* violet */
|
| 12 |
+
--spark: #22d3ee; /* cyan accent */
|
| 13 |
+
--grad: linear-gradient(135deg, var(--brand-1), var(--brand-2));
|
| 14 |
+
--grad-soft: linear-gradient(135deg, rgba(99,102,241,.12), rgba(139,92,246,.12));
|
| 15 |
+
|
| 16 |
+
/* Neutrals (light product surface) */
|
| 17 |
+
--bg: #f5f6fb;
|
| 18 |
+
--surface: #ffffff;
|
| 19 |
+
--ink: #0b1020;
|
| 20 |
+
--muted: #5b6478;
|
| 21 |
+
--line: #e7e9f2;
|
| 22 |
+
|
| 23 |
+
/* Night (hero / navbar / footer) */
|
| 24 |
+
--night: #0b1020;
|
| 25 |
+
--night-2: #141a2e;
|
| 26 |
+
|
| 27 |
+
/* Radius + shadow + spacing scale */
|
| 28 |
+
--r-sm: 12px;
|
| 29 |
+
--r: 18px;
|
| 30 |
+
--r-lg: 26px;
|
| 31 |
+
--shadow-sm: 0 2px 8px rgba(13, 20, 40, .06);
|
| 32 |
+
--shadow: 0 12px 30px rgba(13, 20, 40, .08);
|
| 33 |
+
--shadow-lg: 0 24px 60px rgba(13, 20, 40, .14);
|
| 34 |
+
|
| 35 |
+
/* Legacy variable names remapped so existing rules adopt the new palette */
|
| 36 |
+
--primary: #6366f1;
|
| 37 |
+
--secondary: #8b5cf6;
|
| 38 |
+
--accent: #22d3ee;
|
| 39 |
+
--light: #f5f6fb;
|
| 40 |
+
--dark: #0b1020;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
/* ---- Typography ---------------------------------------------------- */
|
| 44 |
+
* { font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
|
| 45 |
+
h1, h2, h3, .logo, .section-title h2, .hero h1, .cta h2 {
|
| 46 |
+
font-family: 'Space Grotesk', 'Inter', sans-serif;
|
| 47 |
+
letter-spacing: -0.02em;
|
| 48 |
+
}
|
| 49 |
+
body {
|
| 50 |
+
background: var(--bg);
|
| 51 |
+
color: var(--ink);
|
| 52 |
+
-webkit-font-smoothing: antialiased;
|
| 53 |
+
text-rendering: optimizeLegibility;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/* ---- Glass navbar (dark, keeps white nav buttons working) --------- */
|
| 57 |
+
header {
|
| 58 |
+
background: rgba(11, 16, 32, .72) !important;
|
| 59 |
+
-webkit-backdrop-filter: saturate(160%) blur(14px);
|
| 60 |
+
backdrop-filter: saturate(160%) blur(14px);
|
| 61 |
+
border-bottom: 1px solid rgba(255, 255, 255, .08);
|
| 62 |
+
box-shadow: 0 8px 30px rgba(0, 0, 0, .25) !important;
|
| 63 |
+
padding: .85rem 1rem !important;
|
| 64 |
+
}
|
| 65 |
+
.logo { font-weight: 700; }
|
| 66 |
+
.logo-part2 { color: var(--spark); font-style: normal; animation: none; text-shadow: 0 0 18px rgba(34, 211, 238, .55); }
|
| 67 |
+
.logo-part3 { color: #c4b5fd; }
|
| 68 |
+
.welcome-message { background: rgba(255, 255, 255, .08); border-radius: 999px; }
|
| 69 |
+
|
| 70 |
+
/* ---- Buttons ------------------------------------------------------- */
|
| 71 |
+
.btn {
|
| 72 |
+
border-radius: 999px !important;
|
| 73 |
+
font-weight: 600;
|
| 74 |
+
letter-spacing: .01em;
|
| 75 |
+
padding: .6rem 1.4rem !important;
|
| 76 |
+
}
|
| 77 |
+
.btn-primary {
|
| 78 |
+
background: var(--grad) !important;
|
| 79 |
+
color: #fff !important;
|
| 80 |
+
box-shadow: 0 10px 24px rgba(99, 102, 241, .35) !important;
|
| 81 |
+
}
|
| 82 |
+
.btn-primary:hover { box-shadow: 0 14px 30px rgba(99, 102, 241, .45) !important; }
|
| 83 |
+
.btn-outline {
|
| 84 |
+
background: rgba(255, 255, 255, .04) !important;
|
| 85 |
+
border: 1.5px solid rgba(255, 255, 255, .28) !important;
|
| 86 |
+
color: #fff !important;
|
| 87 |
+
}
|
| 88 |
+
.btn-outline:hover { background: rgba(255, 255, 255, .12) !important; }
|
| 89 |
+
.btn-logout {
|
| 90 |
+
border: 1.5px solid rgba(34, 211, 238, .6) !important;
|
| 91 |
+
color: var(--spark) !important;
|
| 92 |
+
border-radius: 999px !important;
|
| 93 |
+
}
|
| 94 |
+
.btn-logout:hover { background: var(--spark) !important; color: var(--night) !important; }
|
| 95 |
+
|
| 96 |
+
/* ---- Cinematic dark hero ------------------------------------------ */
|
| 97 |
+
.hero {
|
| 98 |
+
background:
|
| 99 |
+
radial-gradient(900px 500px at 15% 10%, rgba(99, 102, 241, .35), transparent 60%),
|
| 100 |
+
radial-gradient(800px 500px at 85% 20%, rgba(139, 92, 246, .30), transparent 60%),
|
| 101 |
+
radial-gradient(700px 500px at 50% 110%, rgba(34, 211, 238, .20), transparent 60%),
|
| 102 |
+
linear-gradient(180deg, var(--night), var(--night-2)) !important;
|
| 103 |
+
color: #fff !important;
|
| 104 |
+
padding: 5.5rem 1rem 6rem !important;
|
| 105 |
+
border-bottom: 1px solid rgba(255, 255, 255, .06);
|
| 106 |
+
}
|
| 107 |
+
.hero::before { opacity: .5; }
|
| 108 |
+
.hero h1 { font-size: clamp(2.1rem, 5vw, 3.4rem) !important; font-weight: 700; }
|
| 109 |
+
.hero p { color: rgba(255, 255, 255, .82) !important; font-size: 1.15rem !important; }
|
| 110 |
+
|
| 111 |
+
/* LUNA avatar glow refined to brand */
|
| 112 |
+
.luna-avatar { border: 3px solid rgba(255, 255, 255, .85) !important;
|
| 113 |
+
box-shadow: 0 18px 50px rgba(0, 0, 0, .45), 0 0 50px rgba(139, 92, 246, .55) !important; }
|
| 114 |
+
.luna-glow { background: radial-gradient(circle, rgba(139, 92, 246, .85) 0%, rgba(34, 211, 238, 0) 70%) !important; }
|
| 115 |
+
|
| 116 |
+
/* Pills used in hero/eyebrow */
|
| 117 |
+
.eyebrow {
|
| 118 |
+
display: inline-flex; align-items: center; gap: .5rem;
|
| 119 |
+
padding: .4rem 1rem; margin-bottom: 1.25rem;
|
| 120 |
+
border-radius: 999px; font-size: .85rem; font-weight: 600;
|
| 121 |
+
color: #e9e9ff; background: rgba(255, 255, 255, .08);
|
| 122 |
+
border: 1px solid rgba(255, 255, 255, .16);
|
| 123 |
+
}
|
| 124 |
+
.eyebrow .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--spark);
|
| 125 |
+
box-shadow: 0 0 10px var(--spark); animation: pulse 2s ease-in-out infinite alternate; }
|
| 126 |
+
|
| 127 |
+
/* ---- Sections / titles -------------------------------------------- */
|
| 128 |
+
.content-section, .features { background: var(--bg) !important; }
|
| 129 |
+
.section-title h2 { color: var(--ink) !important; font-size: 2.3rem !important; }
|
| 130 |
+
.section-title h2::after { background: var(--grad) !important; height: 4px !important; border-radius: 4px; }
|
| 131 |
+
.section-title p { color: var(--muted) !important; font-size: 1.05rem; }
|
| 132 |
+
|
| 133 |
+
/* ---- Cards (premium light) ---------------------------------------- */
|
| 134 |
+
.feature-card, .card, .job-card {
|
| 135 |
+
background: var(--surface) !important;
|
| 136 |
+
border: 1px solid var(--line) !important;
|
| 137 |
+
border-radius: var(--r) !important;
|
| 138 |
+
box-shadow: var(--shadow-sm) !important;
|
| 139 |
+
transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease !important;
|
| 140 |
+
}
|
| 141 |
+
.feature-card:hover, .card:hover, .job-card:hover {
|
| 142 |
+
transform: translateY(-8px) !important;
|
| 143 |
+
box-shadow: var(--shadow-lg) !important;
|
| 144 |
+
border-color: rgba(99, 102, 241, .35) !important;
|
| 145 |
+
}
|
| 146 |
+
.feature-icon {
|
| 147 |
+
background: var(--grad-soft) !important;
|
| 148 |
+
font-size: 2.2rem !important;
|
| 149 |
+
color: var(--brand-1) !important;
|
| 150 |
+
}
|
| 151 |
+
.feature-content h3 { color: var(--ink) !important; }
|
| 152 |
+
.feature-content h3::after { background: var(--grad) !important; }
|
| 153 |
+
|
| 154 |
+
/* Job card headers adopt the brand gradient */
|
| 155 |
+
.job-header, .card-header { background: var(--grad) !important; }
|
| 156 |
+
|
| 157 |
+
/* ---- CTA band ------------------------------------------------------ */
|
| 158 |
+
.cta {
|
| 159 |
+
background:
|
| 160 |
+
radial-gradient(700px 400px at 20% 0%, rgba(34, 211, 238, .25), transparent 60%),
|
| 161 |
+
linear-gradient(135deg, var(--brand-2), var(--brand-1)) !important;
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
/* ---- Footer (night) ----------------------------------------------- */
|
| 165 |
+
footer { background: var(--night) !important; border-top: 1px solid rgba(255, 255, 255, .06); }
|
| 166 |
+
.footer-col h3 { color: #fff !important; }
|
| 167 |
+
.footer-col h3::after { background: var(--grad) !important; }
|
| 168 |
+
.social-links a:hover { background: var(--grad) !important; color: #fff !important; }
|
| 169 |
+
|
| 170 |
+
/* ---- Floating chatbot button -------------------------------------- */
|
| 171 |
+
#chatbot-nav { background: var(--grad) !important; box-shadow: 0 10px 26px rgba(99, 102, 241, .5) !important; }
|
| 172 |
+
#chatbot-nav:hover { transform: scale(1.08) !important; }
|
| 173 |
+
#chat-messages .user-bubble { background: var(--grad) !important; }
|
| 174 |
+
|
| 175 |
+
/* =====================================================================
|
| 176 |
+
"How it works" animated pipeline (used on the landing page)
|
| 177 |
+
Pure CSS reveal β auto-plays on load, films beautifully.
|
| 178 |
+
===================================================================== */
|
| 179 |
+
.pipeline { background: linear-gradient(180deg, #fff, var(--bg)); padding: 5rem 1rem; }
|
| 180 |
+
.pipe-track {
|
| 181 |
+
display: grid;
|
| 182 |
+
grid-template-columns: repeat(5, 1fr);
|
| 183 |
+
gap: 1rem;
|
| 184 |
+
max-width: 1100px;
|
| 185 |
+
margin: 0 auto;
|
| 186 |
+
position: relative;
|
| 187 |
+
}
|
| 188 |
+
.pipe-track::before {
|
| 189 |
+
content: ''; position: absolute; top: 46px; left: 8%; right: 8%; height: 3px;
|
| 190 |
+
background: linear-gradient(90deg, rgba(99,102,241,.15), rgba(139,92,246,.5), rgba(34,211,238,.15));
|
| 191 |
+
border-radius: 3px; z-index: 0;
|
| 192 |
+
}
|
| 193 |
+
.pipe-step {
|
| 194 |
+
position: relative; z-index: 1; text-align: center; padding: 0 .5rem;
|
| 195 |
+
opacity: 0; transform: translateY(18px);
|
| 196 |
+
animation: pipeReveal .7s ease forwards;
|
| 197 |
+
}
|
| 198 |
+
.pipe-step:nth-child(1) { animation-delay: .15s; }
|
| 199 |
+
.pipe-step:nth-child(2) { animation-delay: .40s; }
|
| 200 |
+
.pipe-step:nth-child(3) { animation-delay: .65s; }
|
| 201 |
+
.pipe-step:nth-child(4) { animation-delay: .90s; }
|
| 202 |
+
.pipe-step:nth-child(5) { animation-delay: 1.15s; }
|
| 203 |
+
.pipe-node {
|
| 204 |
+
width: 92px; height: 92px; margin: 0 auto 1.1rem; border-radius: 24px;
|
| 205 |
+
display: grid; place-items: center; font-size: 2.1rem;
|
| 206 |
+
color: #fff; background: var(--grad);
|
| 207 |
+
box-shadow: 0 14px 30px rgba(99, 102, 241, .35);
|
| 208 |
+
position: relative;
|
| 209 |
+
}
|
| 210 |
+
.pipe-node::after {
|
| 211 |
+
content: ''; position: absolute; inset: -6px; border-radius: 28px;
|
| 212 |
+
border: 2px solid rgba(139, 92, 246, .4);
|
| 213 |
+
animation: pipeHalo 2.4s ease-in-out infinite;
|
| 214 |
+
}
|
| 215 |
+
.pipe-step:nth-child(even) .pipe-node::after { animation-delay: 1.2s; }
|
| 216 |
+
.pipe-step h4 { font-family: 'Space Grotesk', sans-serif; color: var(--ink); margin-bottom: .4rem; font-size: 1.05rem; }
|
| 217 |
+
.pipe-step p { color: var(--muted); font-size: .92rem; line-height: 1.45; }
|
| 218 |
+
.pipe-num {
|
| 219 |
+
display: inline-block; font-size: .75rem; font-weight: 700; color: var(--brand-1);
|
| 220 |
+
background: var(--grad-soft); border-radius: 999px; padding: .15rem .7rem; margin-bottom: .8rem;
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
@keyframes pipeReveal { to { opacity: 1; transform: translateY(0); } }
|
| 224 |
+
@keyframes pipeHalo {
|
| 225 |
+
0%, 100% { transform: scale(1); opacity: .5; }
|
| 226 |
+
50% { transform: scale(1.08); opacity: 0; }
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
@media (max-width: 860px) {
|
| 230 |
+
.pipe-track { grid-template-columns: 1fr 1fr; }
|
| 231 |
+
.pipe-track::before { display: none; }
|
| 232 |
+
}
|
| 233 |
+
@media (max-width: 480px) {
|
| 234 |
+
.pipe-track { grid-template-columns: 1fr; }
|
| 235 |
+
}
|
|
@@ -833,6 +833,11 @@
|
|
| 833 |
outline: none;
|
| 834 |
}
|
| 835 |
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 836 |
</head>
|
| 837 |
<body>
|
| 838 |
<header>
|
|
@@ -899,16 +904,26 @@
|
|
| 899 |
<div class="footer-grid">
|
| 900 |
<div class="footer-col">
|
| 901 |
<h3>Codingo</h3>
|
| 902 |
-
<p>AI-powered recruitment platform that revolutionizes how companies hire technical talent.</p>
|
| 903 |
<div class="social-links">
|
| 904 |
<a href="#"><span>f</span></a>
|
| 905 |
<a href="#"><span>t</span></a>
|
| 906 |
<a href="#"><span>in</span></a>
|
| 907 |
</div>
|
| 908 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 909 |
</div>
|
| 910 |
<div class="copyright">
|
| 911 |
-
<p>©
|
| 912 |
</div>
|
| 913 |
</div>
|
| 914 |
</footer>
|
|
|
|
| 833 |
outline: none;
|
| 834 |
}
|
| 835 |
</style>
|
| 836 |
+
<!-- Premium design system (loads after the legacy styles so it wins) -->
|
| 837 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 838 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 839 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
|
| 840 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/theme.css') }}">
|
| 841 |
</head>
|
| 842 |
<body>
|
| 843 |
<header>
|
|
|
|
| 904 |
<div class="footer-grid">
|
| 905 |
<div class="footer-col">
|
| 906 |
<h3>Codingo</h3>
|
| 907 |
+
<p>AI-powered recruitment platform that revolutionizes how companies hire technical talent β powered by LUNA, your AI recruiter.</p>
|
| 908 |
<div class="social-links">
|
| 909 |
<a href="#"><span>f</span></a>
|
| 910 |
<a href="#"><span>t</span></a>
|
| 911 |
<a href="#"><span>in</span></a>
|
| 912 |
</div>
|
| 913 |
</div>
|
| 914 |
+
<div class="footer-col">
|
| 915 |
+
<h3>Platform</h3>
|
| 916 |
+
<p><a href="{{ url_for('jobs') }}" style="color:#cfd3e6;text-decoration:none;">Browse Jobs</a></p>
|
| 917 |
+
<p><a href="{{ url_for('index') }}#how" style="color:#cfd3e6;text-decoration:none;">How it works</a></p>
|
| 918 |
+
<p><a href="{{ url_for('index') }}#features" style="color:#cfd3e6;text-decoration:none;">Features</a></p>
|
| 919 |
+
</div>
|
| 920 |
+
<div class="footer-col">
|
| 921 |
+
<h3>Meet LUNA</h3>
|
| 922 |
+
<p style="color:#cfd3e6;">An AI recruiter that screens CVs, runs voice interviews, and scores answers against a real question database β fairly and at scale.</p>
|
| 923 |
+
</div>
|
| 924 |
</div>
|
| 925 |
<div class="copyright">
|
| 926 |
+
<p>© 2026 Codingo. All rights reserved.</p>
|
| 927 |
</div>
|
| 928 |
</div>
|
| 929 |
</footer>
|
|
@@ -13,12 +13,40 @@
|
|
| 13 |
<img src="{{ url_for('static', filename='images/LUNA.png') }}" alt="LUNA AI Assistant">
|
| 14 |
</div>
|
| 15 |
</div>
|
| 16 |
-
<
|
| 17 |
-
<
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
</div>
|
| 21 |
</div>
|
| 22 |
</section>
|
| 23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
{% endblock %}
|
|
|
|
| 13 |
<img src="{{ url_for('static', filename='images/LUNA.png') }}" alt="LUNA AI Assistant">
|
| 14 |
</div>
|
| 15 |
</div>
|
| 16 |
+
<span class="eyebrow"><span class="dot"></span> Interview Complete</span>
|
| 17 |
+
<h2 style="margin-top: 1rem;">Thank you for your time,<br>we'll get back to you if shortlisted.</h2>
|
| 18 |
+
<div class="score-card">
|
| 19 |
+
<span class="score-label">Overall performance</span>
|
| 20 |
+
<span class="score-value">{{ score }}</span>
|
| 21 |
+
<span class="score-summary">{{ feedback_summary }}</span>
|
| 22 |
+
</div>
|
| 23 |
+
<a href="{{ url_for('jobs') }}" class="btn btn-outline" style="margin-top:1.75rem;">Back to Jobs</a>
|
| 24 |
</div>
|
| 25 |
</div>
|
| 26 |
</section>
|
| 27 |
|
| 28 |
+
<style>
|
| 29 |
+
.score-card {
|
| 30 |
+
margin-top: 1.5rem;
|
| 31 |
+
display: inline-flex;
|
| 32 |
+
flex-direction: column;
|
| 33 |
+
align-items: center;
|
| 34 |
+
gap: .35rem;
|
| 35 |
+
padding: 1.5rem 2.5rem;
|
| 36 |
+
border-radius: var(--r, 18px);
|
| 37 |
+
background: rgba(255, 255, 255, .07);
|
| 38 |
+
border: 1px solid rgba(255, 255, 255, .16);
|
| 39 |
+
-webkit-backdrop-filter: blur(10px);
|
| 40 |
+
backdrop-filter: blur(10px);
|
| 41 |
+
box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
|
| 42 |
+
}
|
| 43 |
+
.score-label { color: rgba(255, 255, 255, .7); font-size: .85rem; text-transform: uppercase; letter-spacing: .08em; }
|
| 44 |
+
.score-value {
|
| 45 |
+
font-family: 'Space Grotesk', sans-serif; font-size: 2.4rem; font-weight: 700; line-height: 1.1;
|
| 46 |
+
background: linear-gradient(135deg, #c4b5fd, #22d3ee);
|
| 47 |
+
-webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
|
| 48 |
+
}
|
| 49 |
+
.score-summary { color: rgba(255, 255, 255, .82); font-size: 1rem; max-width: 420px; }
|
| 50 |
+
</style>
|
| 51 |
+
|
| 52 |
{% endblock %}
|
|
@@ -12,9 +12,10 @@
|
|
| 12 |
<img src="{{ url_for('static', filename='images/LUNA.png') }}" alt="LUNA AI Assistant">
|
| 13 |
</div>
|
| 14 |
</div>
|
| 15 |
-
<
|
| 16 |
-
<
|
| 17 |
-
|
|
|
|
| 18 |
<div class="hero-buttons">
|
| 19 |
<a href="{{ url_for('jobs') }}" class="btn btn-primary">Find Jobs</a>
|
| 20 |
<a href="https://www.youtube.com/watch?v=P6HG27fsJgU" class="btn btn-outline">Watch Demo</a>
|
|
@@ -64,6 +65,45 @@
|
|
| 64 |
</div>
|
| 65 |
</section>
|
| 66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
<section class="cta">
|
| 68 |
<div class="container">
|
| 69 |
<h2>Ready to Transform Your Technical Hiring?</h2>
|
|
|
|
| 12 |
<img src="{{ url_for('static', filename='images/LUNA.png') }}" alt="LUNA AI Assistant">
|
| 13 |
</div>
|
| 14 |
</div>
|
| 15 |
+
<span class="eyebrow"><span class="dot"></span> AI-Powered Recruitment</span>
|
| 16 |
+
<h1>Meet LUNA, Your AI Recruiter</h1>
|
| 17 |
+
<p>Screen CVs, run real voice interviews, and score every answer against a live question
|
| 18 |
+
database β so you find the right technical talent faster, and fairer.</p>
|
| 19 |
<div class="hero-buttons">
|
| 20 |
<a href="{{ url_for('jobs') }}" class="btn btn-primary">Find Jobs</a>
|
| 21 |
<a href="https://www.youtube.com/watch?v=P6HG27fsJgU" class="btn btn-outline">Watch Demo</a>
|
|
|
|
| 65 |
</div>
|
| 66 |
</section>
|
| 67 |
|
| 68 |
+
<section class="pipeline" id="how">
|
| 69 |
+
<div class="section-title">
|
| 70 |
+
<h2>How Codingo Works</h2>
|
| 71 |
+
<p>From job post to ranked shortlist β one intelligent, automated pipeline powered by LUNA.</p>
|
| 72 |
+
</div>
|
| 73 |
+
<div class="pipe-track">
|
| 74 |
+
<div class="pipe-step">
|
| 75 |
+
<div class="pipe-node">π</div>
|
| 76 |
+
<span class="pipe-num">Step 1</span>
|
| 77 |
+
<h4>Post a Job</h4>
|
| 78 |
+
<p>Recruiters define the role, skills, and how many questions the interview should cover.</p>
|
| 79 |
+
</div>
|
| 80 |
+
<div class="pipe-step">
|
| 81 |
+
<div class="pipe-node">π</div>
|
| 82 |
+
<span class="pipe-num">Step 2</span>
|
| 83 |
+
<h4>Apply & Parse CV</h4>
|
| 84 |
+
<p>Candidates upload a resume β Codingo auto-extracts skills, education, and experience.</p>
|
| 85 |
+
</div>
|
| 86 |
+
<div class="pipe-step">
|
| 87 |
+
<div class="pipe-node">ποΈ</div>
|
| 88 |
+
<span class="pipe-num">Step 3</span>
|
| 89 |
+
<h4>LUNA Interviews</h4>
|
| 90 |
+
<p>LUNA conducts a real voice interview, asking role-specific questions and follow-ups.</p>
|
| 91 |
+
</div>
|
| 92 |
+
<div class="pipe-step">
|
| 93 |
+
<div class="pipe-node">π§ </div>
|
| 94 |
+
<span class="pipe-num">Step 4</span>
|
| 95 |
+
<h4>Score from the Database</h4>
|
| 96 |
+
<p>Every answer is evaluated against a live question bank of thousands of Q&A pairs.</p>
|
| 97 |
+
</div>
|
| 98 |
+
<div class="pipe-step">
|
| 99 |
+
<div class="pipe-node">π</div>
|
| 100 |
+
<span class="pipe-num">Step 5</span>
|
| 101 |
+
<h4>Rank Candidates</h4>
|
| 102 |
+
<p>The recruiter dashboard ranks applicants by skill match and interview performance.</p>
|
| 103 |
+
</div>
|
| 104 |
+
</div>
|
| 105 |
+
</section>
|
| 106 |
+
|
| 107 |
<section class="cta">
|
| 108 |
<div class="container">
|
| 109 |
<h2>Ready to Transform Your Technical Hiring?</h2>
|
|
@@ -423,6 +423,78 @@
|
|
| 423 |
display: none;
|
| 424 |
}
|
| 425 |
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 426 |
</head>
|
| 427 |
|
| 428 |
<body>
|
|
@@ -431,8 +503,11 @@
|
|
| 431 |
<div class="question-counter">
|
| 432 |
Question <span id="currentQuestionNum">1</span> of <span id="totalQuestions">{{ job.num_questions }}</span>
|
| 433 |
</div>
|
| 434 |
-
<h1>
|
| 435 |
-
<p>
|
|
|
|
|
|
|
|
|
|
| 436 |
</div>
|
| 437 |
|
| 438 |
<div class="chat-area" id="chatArea">
|
|
|
|
| 423 |
display: none;
|
| 424 |
}
|
| 425 |
</style>
|
| 426 |
+
|
| 427 |
+
<!-- Premium theme: fonts + design tokens, plus interview-specific overrides -->
|
| 428 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 429 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 430 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
|
| 431 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/theme.css') }}">
|
| 432 |
+
<style>
|
| 433 |
+
/* ---- Interview screen β premium "Interview with LUNA" look ---- */
|
| 434 |
+
body {
|
| 435 |
+
font-family: 'Inter', 'Segoe UI', sans-serif;
|
| 436 |
+
background:
|
| 437 |
+
radial-gradient(800px 500px at 12% 8%, rgba(99, 102, 241, .45), transparent 60%),
|
| 438 |
+
radial-gradient(700px 500px at 88% 12%, rgba(139, 92, 246, .40), transparent 60%),
|
| 439 |
+
radial-gradient(700px 500px at 50% 110%, rgba(34, 211, 238, .25), transparent 60%),
|
| 440 |
+
linear-gradient(180deg, #0b1020, #141a2e) !important;
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
.interview-container {
|
| 444 |
+
border-radius: 24px;
|
| 445 |
+
border: 1px solid rgba(255, 255, 255, .6);
|
| 446 |
+
box-shadow: 0 30px 80px rgba(0, 0, 0, .45);
|
| 447 |
+
}
|
| 448 |
+
|
| 449 |
+
.header {
|
| 450 |
+
background: linear-gradient(135deg, #6366f1, #8b5cf6) !important;
|
| 451 |
+
padding: 22px 20px 26px;
|
| 452 |
+
}
|
| 453 |
+
.header h1 { font-family: 'Space Grotesk', sans-serif; font-weight: 700; }
|
| 454 |
+
.question-counter {
|
| 455 |
+
background: rgba(255, 255, 255, .18);
|
| 456 |
+
border: 1px solid rgba(255, 255, 255, .25);
|
| 457 |
+
font-weight: 600;
|
| 458 |
+
}
|
| 459 |
+
|
| 460 |
+
/* LUNA's real face replaces the "AI" text in every avatar bubble */
|
| 461 |
+
.ai-avatar {
|
| 462 |
+
background-image: url("{{ url_for('static', filename='images/LUNA.png') }}") !important;
|
| 463 |
+
background-size: cover !important;
|
| 464 |
+
background-position: center top !important;
|
| 465 |
+
color: transparent !important;
|
| 466 |
+
font-size: 0 !important;
|
| 467 |
+
border: 2px solid rgba(139, 92, 246, .6);
|
| 468 |
+
box-shadow: 0 6px 18px rgba(99, 102, 241, .35);
|
| 469 |
+
}
|
| 470 |
+
.ai-avatar.talking::before { background: rgba(139, 92, 246, .35); }
|
| 471 |
+
|
| 472 |
+
/* Speaking equalizer shown under the title while LUNA talks */
|
| 473 |
+
.voice-wave { display: flex; align-items: flex-end; justify-content: center; gap: 4px; height: 22px; margin-top: 10px; }
|
| 474 |
+
.voice-wave span {
|
| 475 |
+
width: 4px; height: 6px; border-radius: 4px; background: rgba(255, 255, 255, .85);
|
| 476 |
+
animation: eq 1.1s ease-in-out infinite;
|
| 477 |
+
}
|
| 478 |
+
.voice-wave span:nth-child(2) { animation-delay: .15s; }
|
| 479 |
+
.voice-wave span:nth-child(3) { animation-delay: .30s; }
|
| 480 |
+
.voice-wave span:nth-child(4) { animation-delay: .45s; }
|
| 481 |
+
.voice-wave span:nth-child(5) { animation-delay: .60s; }
|
| 482 |
+
.voice-wave span:nth-child(6) { animation-delay: .75s; }
|
| 483 |
+
.voice-wave span:nth-child(7) { animation-delay: .90s; }
|
| 484 |
+
@keyframes eq { 0%, 100% { height: 6px; } 50% { height: 20px; } }
|
| 485 |
+
|
| 486 |
+
/* User answer bubbles + primary button adopt the brand gradient */
|
| 487 |
+
.user-bubble { background: linear-gradient(135deg, #6366f1, #8b5cf6) !important; }
|
| 488 |
+
.user-bubble::before { border-left-color: #6366f1 !important; }
|
| 489 |
+
.btn-primary { background: linear-gradient(135deg, #6366f1, #8b5cf6) !important; border-radius: 999px !important; }
|
| 490 |
+
.btn-secondary { border-radius: 999px !important; }
|
| 491 |
+
.btn { border-radius: 999px; }
|
| 492 |
+
|
| 493 |
+
.transcript-area:focus { border-color: #8b5cf6 !important; }
|
| 494 |
+
.summary-item { border-left-color: #8b5cf6 !important; }
|
| 495 |
+
.evaluation-score { background: linear-gradient(135deg, #6366f1, #8b5cf6) !important; }
|
| 496 |
+
.summary-panel { border: 1px solid rgba(255, 255, 255, .6); }
|
| 497 |
+
</style>
|
| 498 |
</head>
|
| 499 |
|
| 500 |
<body>
|
|
|
|
| 503 |
<div class="question-counter">
|
| 504 |
Question <span id="currentQuestionNum">1</span> of <span id="totalQuestions">{{ job.num_questions }}</span>
|
| 505 |
</div>
|
| 506 |
+
<h1>π Interview with LUNA</h1>
|
| 507 |
+
<p>Your AI recruiter β answer thoughtfully and take your time</p>
|
| 508 |
+
<div class="voice-wave" aria-hidden="true">
|
| 509 |
+
<span></span><span></span><span></span><span></span><span></span><span></span><span></span>
|
| 510 |
+
</div>
|
| 511 |
</div>
|
| 512 |
|
| 513 |
<div class="chat-area" id="chatArea">
|
|
The diff for this file is too large to render.
See raw diff
|
|
|
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Codingo β LUNA Explainer Video: Production Guide
|
| 2 |
+
|
| 3 |
+
A complete, do-it-yourself plan for a short social-media video that shows off Codingo for your
|
| 4 |
+
final-year project. Your AI recruiter **LUNA** narrates and explains the recruitment pipeline, with
|
| 5 |
+
screen recordings of the (now polished) real app.
|
| 6 |
+
|
| 7 |
+
> You generate the actual video β this guide gives you the script, storyboard, exact tools, and
|
| 8 |
+
> settings. Nothing here needs code.
|
| 9 |
+
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
## 1. Format & scope
|
| 13 |
+
|
| 14 |
+
| Setting | Recommendation |
|
| 15 |
+
|---|---|
|
| 16 |
+
| Aspect ratio | **9:16 vertical** (Reels / TikTok / LinkedIn / Shorts). Also export a 16:9 version for YouTube if you want. |
|
| 17 |
+
| Length | **45β60 seconds** (attention drops fast on social). Optionally also cut a **15β20s teaser**. |
|
| 18 |
+
| Resolution | 1080Γ1920, 30fps |
|
| 19 |
+
| Vibe | Clean, premium, confident β "a real AI product." Calm tech music, captions on. |
|
| 20 |
+
| Structure | Hook β Meet LUNA β The 5-step pipeline β Proof (real app) β Call to action |
|
| 21 |
+
|
| 22 |
+
---
|
| 23 |
+
|
| 24 |
+
## 2. Which tool does what (read this first)
|
| 25 |
+
|
| 26 |
+
There's confusion about "Veo vs talking avatar" β here's the truth, because they do different jobs:
|
| 27 |
+
|
| 28 |
+
| Job in your video | Right tool | Why |
|
| 29 |
+
|---|---|---|
|
| 30 |
+
| **LUNA's face talking** (her exact photo, lip-synced to your script) | **D-ID** or **HeyGen** (photo/avatar mode) | These are built to make *one specific face* speak a script. Upload `LUNA.png`, paste the script, pick a voice β you get LUNA talking. |
|
| 31 |
+
| **Cinematic b-roll** (abstract "AI" shots, neural-network visuals, a modern office) | **Google Veo 3** (via Google Flow / Gemini) or **Runway / Pika** | Generative text-to-video. Great for 2β4s mood shots **between** sections. **Do not** expect Veo to make LUNA's exact face reliably speak your lines β that's not what it's for. |
|
| 32 |
+
| **The product itself** (the hero, the pipeline animation, a live interview, the dashboard) | **Screen recording** of your polished app | This is the backbone and the proof. Most of the video should be this. |
|
| 33 |
+
| **Voice** (if not using HeyGen's built-in) | **ElevenLabs** (most natural) | Or match the app's own voice, Microsoft `en-US-AriaNeural`. |
|
| 34 |
+
| **Edit / captions / music** | **CapCut** (free, fastest for social) or Premiere/DaVinci | Auto-captions, beat-synced cuts, export presets for each platform. |
|
| 35 |
+
|
| 36 |
+
**Recommended minimal stack:** HeyGen (talking LUNA) + your screen recordings + CapCut (edit). Add Veo
|
| 37 |
+
shots only if you want extra polish.
|
| 38 |
+
|
| 39 |
+
`LUNA.png` lives at `backend/static/images/LUNA.png` β that's the file you upload to the avatar tool.
|
| 40 |
+
|
| 41 |
+
---
|
| 42 |
+
|
| 43 |
+
## 3. The narration script (LUNA, first person β ~130 words, ~55s)
|
| 44 |
+
|
| 45 |
+
> Tone: warm, confident, professional. Pauses marked with "β".
|
| 46 |
+
|
| 47 |
+
**[Hook]**
|
| 48 |
+
"Hiring technical talent is slow, biased, and exhausting. β I'm LUNA, and I fix that."
|
| 49 |
+
|
| 50 |
+
**[Meet LUNA]**
|
| 51 |
+
"I'm an AI recruiter built into Codingo β and I run the entire hiring pipeline."
|
| 52 |
+
|
| 53 |
+
**[Pipeline β one line per step]**
|
| 54 |
+
"It starts when a recruiter posts a job. β
|
| 55 |
+
A candidate applies, and I instantly parse their CV β skills, education, experience. β
|
| 56 |
+
Then I run a real voice interview, asking role-specific questions and follow-ups. β
|
| 57 |
+
Every answer is scored against a live database of thousands of interview questions. β
|
| 58 |
+
And finally, I rank every candidate on the recruiter's dashboard β by skill match and performance."
|
| 59 |
+
|
| 60 |
+
**[Proof / CTA]**
|
| 61 |
+
"Faster. Fairer. Fully automated. β This is Codingo. The future of recruitment β and it's already here."
|
| 62 |
+
|
| 63 |
+
*(Need 30s? Keep Hook + the 5 pipeline lines + the last sentence.)*
|
| 64 |
+
|
| 65 |
+
---
|
| 66 |
+
|
| 67 |
+
## 4. Shot-by-shot storyboard
|
| 68 |
+
|
| 69 |
+
| # | Time | Script line | What's on screen | Source |
|
| 70 |
+
|---|------|-------------|------------------|--------|
|
| 71 |
+
| 1 | 0β4s | "Hiring β¦ I fix that." | LUNA talking, centered, with a soft gradient background | HeyGen/D-ID (LUNA.png) |
|
| 72 |
+
| 2 | 4β8s | "I'm an AI recruiter β¦ entire hiring pipeline." | Cut to the **landing hero** (dark, glowing LUNA), slow zoom-in | Screen recording |
|
| 73 |
+
| 3 | 8β12s | "It starts when a recruiter posts a job." | The **Post Job** form being filled / submitted | Screen recording |
|
| 74 |
+
| 4 | 12β17s | "A candidate applies, and I instantly parse their CVβ¦" | **Apply** page β click "Parse Resume" β fields auto-fill | Screen recording |
|
| 75 |
+
| 5 | 17β26s | "Then I run a real voice interviewβ¦" | **Interview with LUNA** screen β LUNA avatar talking, waveform, a question appears, mic records | Screen recording (the star shot) |
|
| 76 |
+
| 6 | 26β34s | "Every answer is scored against a live databaseβ¦" | The animated **"How it works"** pipeline section scrolling/playing; optionally overlay a Veo "data/AI" b-roll | App + optional Veo |
|
| 77 |
+
| 7 | 34β42s | "I rank every candidate on the dashboardβ¦" | **Dashboard** with ranked candidates, scores highlighted | Screen recording |
|
| 78 |
+
| 8 | 42β55s | "Faster. Fairerβ¦ it's already here." | Back to LUNA talking; end card with "Codingo" logo + your name/uni | HeyGen + CapCut title |
|
| 79 |
+
|
| 80 |
+
**Pro tip:** record each app screen at high resolution on desktop, then reframe/crop to vertical in
|
| 81 |
+
CapCut with a slow Ken-Burns zoom so static screens feel alive.
|
| 82 |
+
|
| 83 |
+
---
|
| 84 |
+
|
| 85 |
+
## 5. Screen-recording shot list (capture these from the live app)
|
| 86 |
+
|
| 87 |
+
Record on the deployed Space (or locally) with a clean browser (no bookmarks bar, incognito):
|
| 88 |
+
1. **Hero** β load the homepage, let LUNA's glow animation breathe (3β4s).
|
| 89 |
+
2. **How it works** β scroll slowly so the 5 steps animate in.
|
| 90 |
+
3. **Post Job** β fill role/skills, hit submit (speed up 2Γ in edit).
|
| 91 |
+
4. **Apply + CV parse** β upload a resume, click parse, show fields filling.
|
| 92 |
+
5. **Interview** β start an interview; capture LUNA speaking (waveform active), a question, and the mic recording state. This is your money shot.
|
| 93 |
+
6. **Closing** β the score card with the glowing result.
|
| 94 |
+
7. **Dashboard** β the ranked candidate list.
|
| 95 |
+
|
| 96 |
+
macOS screen record: **Cmd+Shift+5**. Record system audio off (you'll add LUNA's voice + music in edit).
|
| 97 |
+
|
| 98 |
+
---
|
| 99 |
+
|
| 100 |
+
## 6. Music, captions, export
|
| 101 |
+
|
| 102 |
+
- **Music:** calm, modern, "tech product" β search CapCut/Epidemic Sound for "ambient tech / corporate inspire." Keep it low under LUNA's voice (-18 dB).
|
| 103 |
+
- **Captions:** auto-generate in CapCut, then fix LUNA/Codingo spelling. Big, bold, centered, one line at a time β most people watch muted.
|
| 104 |
+
- **Brand:** end card with the Codingo wordmark colors (indigo `#6366F1` β violet `#8B5CF6`, cyan spark `#22D3EE`) and "Final Year Project β <your name>, <university>".
|
| 105 |
+
- **Export:** 1080Γ1920, H.264, 30fps. Make a 16:9 1920Γ1080 version too for YouTube/LinkedIn landscape.
|
| 106 |
+
|
| 107 |
+
---
|
| 108 |
+
|
| 109 |
+
## 7. Tools & pricing (quick reference)
|
| 110 |
+
|
| 111 |
+
| Tool | Use | Cost |
|
| 112 |
+
|---|---|---|
|
| 113 |
+
| **HeyGen** | Talking LUNA (photo avatar + voice) | Free trial (watermarked, short); ~$24/mo Creator removes watermark |
|
| 114 |
+
| **D-ID** | Talking LUNA alternative | Free trial; ~$5.9/mo+ |
|
| 115 |
+
| **ElevenLabs** | Premium natural voice | Free tier (limited chars); ~$5/mo Starter |
|
| 116 |
+
| **Google Veo 3** (Flow/Gemini) | Cinematic b-roll only | Via Google AI / Gemini Advanced subscription |
|
| 117 |
+
| **Runway / Pika** | B-roll alternative | Free tier + paid |
|
| 118 |
+
| **CapCut** | Edit, captions, export | Free (Pro optional) |
|
| 119 |
+
|
| 120 |
+
**Cheapest path that still looks pro:** HeyGen free trial for 2β3 short LUNA clips + screen recordings
|
| 121 |
+
+ CapCut. If the watermark bothers you for the final post, one month of HeyGen Creator (~$24) covers it.
|
| 122 |
+
|
| 123 |
+
---
|
| 124 |
+
|
| 125 |
+
## 8. 60-minute production checklist
|
| 126 |
+
|
| 127 |
+
1. β Generate LUNA's talking clips in HeyGen (paste script section by section; pick a warm female voice).
|
| 128 |
+
2. β Screen-record the 7 app shots above.
|
| 129 |
+
3. β Drop everything into CapCut on a 9:16 timeline; lay LUNA's voice as the spine.
|
| 130 |
+
4. β Place talking-LUNA at the start/end, app recordings in the middle (follow the storyboard table).
|
| 131 |
+
5. β Add music (low), auto-captions (fix names), and the end card.
|
| 132 |
+
6. β Export 1080Γ1920; watch once muted to confirm captions tell the whole story.
|
| 133 |
+
7. β Post. π¬
|