/* ============================================================
BLUU KAZI — ODOO IMPLEMENTATION CODE SNIPPETS
Use this file as a reference. Paste each section where noted.
============================================================ */
/* ─────────────────────────────────────────────
SNIPPET 1: HERO PARTICLE ANIMATION
Paste this inside your HTML block, right after
and before the nav. Remove the existing hero::before pseudo-element.
─────────────────────────────────────────────*/
/* ─────────────────────────────────────────────
SNIPPET 2: ANIMATED STAT COUNTERS
Replace the static stat numbers in your hero-stats section.
The data-target attribute holds the final number.
data-suffix adds %, h, etc. after the number.
─────────────────────────────────────────────*/
0%
Interview Fatigue Cut
0
Vetted Finalists Delivered
0h
Average Time to Match
/* ─────────────────────────────────────────────
SNIPPET 3: ODOO CUSTOM CSS
Paste this in: Website → Customize → Edit CSS → Custom CSS
This makes ALL Odoo native blocks inherit Bluu Kazi branding.
─────────────────────────────────────────────*/
/* === Bluu Kazi Global Brand Override for Odoo === */
/* Import brand fonts */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@300;400;500;600&display=swap');
/* Global resets */
body { font-family: 'DM Sans', sans-serif !important; background: #0A0A0E; color: #FFFFFF; }
h1, h2, h3 { font-family: 'Bebas Neue', sans-serif !important; letter-spacing: 2px; text-transform: uppercase; }
/* Odoo nav override */
#wrapwrap .navbar { background: rgba(6,12,26,0.95) !important; border-bottom: 1px solid rgba(26,92,255,0.18) !important; }
.navbar .nav-link { color: rgba(255,255,255,0.7) !important; font-size: 14px; font-weight: 500; }
.navbar .nav-link:hover { color: #FFFFFF !important; }
/* CTA buttons — override Odoo defaults */
.btn-primary, .o_website_form_send, .s_website_form .btn {
background: #1A5CFF !important;
border-color: #1A5CFF !important;
border-radius: 6px !important;
font-family: 'DM Sans', sans-serif !important;
font-weight: 600 !important;
letter-spacing: 0.3px;
padding: 14px 28px !important;
transition: background 0.2s !important;
}
.btn-primary:hover, .o_website_form_send:hover {
background: #3A7BFF !important;
border-color: #3A7BFF !important;
}
/* Form inputs — override Odoo form block styles */
.s_website_form input,
.s_website_form select,
.s_website_form textarea {
background: rgba(255,255,255,0.05) !important;
border: 1px solid rgba(255,255,255,0.1) !important;
border-radius: 8px !important;
color: #FFFFFF !important;
font-family: 'DM Sans', sans-serif !important;
padding: 12px 16px !important;
}
.s_website_form input:focus,
.s_website_form select:focus,
.s_website_form textarea:focus {
border-color: #1A5CFF !important;
background: rgba(26,92,255,0.06) !important;
box-shadow: none !important;
outline: none !important;
}
.s_website_form label { color: rgba(255,255,255,0.7) !important; font-size: 12px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; }
/* Live Chat widget — brand colors */
.o-livechat-root .o-mail-ChatWindow { background: #060C1A !important; border: 1px solid rgba(26,92,255,0.3) !important; border-radius: 12px !important; }
.o-livechat-root .o_LivechatButton { background: #1A5CFF !important; }
/* Appointment booking page */
.o_appointment_form .o_appointment_slots { background: #060C1A !important; }
/* Page background */
#wrapwrap { background: #0A0A0E !important; }
/* Footer */
.o_footer { background: #060C1A !important; border-top: 1px solid rgba(26,92,255,0.18) !important; color: rgba(255,255,255,0.6) !important; }
.o_footer a { color: rgba(255,255,255,0.6) !important; }
.o_footer a:hover { color: #3A7BFF !important; }
/* ─────────────────────────────────────────────
SNIPPET 4: ODOO AUTOMATED ACTION — EMPLOYER INTAKE AGENT
Settings → Technical → Automated Actions → New
Model: crm.lead | Trigger: On Creation
Action Type: Execute Python Code
Paste the Python code below into the "Code" field.
─────────────────────────────────────────────*/
# EMPLOYER INTAKE AGENT — Python Code for Automated Action
for record in records:
# 1. Score the lead based on form data
score = 0
# Industry scoring — higher value industries score higher
high_value_industries = ['Technology / Cybersecurity', 'Healthcare', 'Logistics & Supply Chain']
medium_value_industries = ['Hospitality', 'Security / Law Enforcement']
if record.partner_name and any(ind in (record.description or '') for ind in high_value_industries):
score += 30
elif any(ind in (record.description or '') for ind in medium_value_industries):
score += 20
else:
score += 10
# Hiring need scoring
if 'Executive Search' in (record.description or ''):
score += 30
elif 'Direct Placement' in (record.description or ''):
score += 25
elif 'Workforce Consulting' in (record.description or ''):
score += 20
else:
score += 10
# Has phone number
if record.phone:
score += 10
# Has company name
if record.partner_name:
score += 10
# 2. Set priority based on score
if score >= 60:
record.priority = '2' # High — 3 stars
record.tag_ids = [(4, env.ref('crm.crm_tag_hot').id, 0)] if env.ref('crm.crm_tag_hot', False) else []
elif score >= 40:
record.priority = '1' # Medium — 2 stars
else:
record.priority = '0' # Normal — 1 star
# 3. Create a follow-up activity
env['mail.activity'].create({
'res_model_id': env['ir.model']._get('crm.lead').id,
'res_id': record.id,
'activity_type_id': env.ref('mail.mail_activity_data_call').id,
'summary': 'Initial employer outreach call',
'date_deadline': fields.Date.today() + timedelta(days=1),
'user_id': record.user_id.id or env.user.id,
'note': f'New employer lead scored {score}/100. Follow up within 24 hours.',
})
# 4. Add to Employer mailing list
employer_list = env['mailing.list'].search([('name', 'like', 'Employer')], limit=1)
if employer_list and record.email_from:
env['mailing.contact'].create({
'list_ids': [(4, employer_list.id)],
'email': record.email_from,
'name': record.contact_name or record.partner_name,
})
/* ─────────────────────────────────────────────
SNIPPET 5: ODOO AUTOMATED ACTION — CANDIDATE QUALIFICATION AGENT
Model: hr.applicant | Trigger: On Creation
─────────────────────────────────────────────*/
# CANDIDATE QUALIFICATION AGENT — Python Code
for record in records:
# 1. Auto-tag by specialty (stored in description or custom field)
desc = (record.description or '') + ' ' + (record.partner_name or '')
tag_map = {
'Security / Cybersecurity': 'cybersecurity',
'Hospitality': 'hospitality',
'Logistics': 'logistics',
'Healthcare': 'healthcare',
'Technology': 'technology',
'Leadership': 'leadership',
}
for label, keyword in tag_map.items():
if keyword.lower() in desc.lower() or label.lower() in desc.lower():
tag = env['hr.applicant.category'].search([('name', 'ilike', label)], limit=1)
if not tag:
tag = env['hr.applicant.category'].create({'name': label, 'color': 1})
record.categ_ids = [(4, tag.id)]
break
# 2. Assign recruiter based on specialty (customize user IDs)
# record.user_id = env['res.users'].search([('name', 'ilike', 'Recruiter Name')], limit=1)
# 3. Create resume audit task
env['mail.activity'].create({
'res_model_id': env['ir.model']._get('hr.applicant').id,
'res_id': record.id,
'activity_type_id': env.ref('mail.mail_activity_data_todo').id,
'summary': 'Deep Resume Audit — Operational Grit Check',
'date_deadline': fields.Date.today() + timedelta(days=2),
'user_id': record.user_id.id or env.user.id,
'note': 'Complete resume audit per Bluu Kazi process. Check for high-stakes environment experience.',
})
# 4. Add to Talent mailing list
talent_list = env['mailing.list'].search([('name', 'ilike', 'Talent')], limit=1)
if talent_list and record.email_from:
env['mailing.contact'].create({
'list_ids': [(4, talent_list.id)],
'email': record.email_from,
'name': record.partner_name,
})
/* ─────────────────────────────────────────────
SNIPPET 6: EMAIL TEMPLATES (plain text versions)
Email Marketing → Templates → New
─────────────────────────────────────────────*/
-- EMPLOYER WELCOME EMAIL --
Subject: Your workforce consultation request — Bluu Kazi
Hi {{object.contact_name}},
Thank you for reaching out to Bluu Kazi.
We've received your request and a specialist will contact you within 24 hours to schedule your 30-minute consultation.
What to expect:
→ We'll align on your exact hiring needs and timeline
→ We'll explain our 5-step precision delivery process
→ We'll give you a clear picture of our talent pipeline in your sector
In the meantime, you can book a time directly at:
[LINK: Your Odoo Appointment booking page]
The Bluu Kazi Team
talent@bluukazi.com | www.bluukazi.com
-- CANDIDATE WELCOME EMAIL --
Subject: You're in the Bluu Kazi talent network
Hi {{object.partner_name}},
Welcome to the Bluu Kazi talent network.
Your profile has been received and a recruiter will review your background within 48 hours.
Our process:
1. Deep Resume Audit — we look for "Operational Grit"
2. Initial Sync (15-20 min call)
3. Virtual Interview with scenario-based screening
4. Precision matching to active employer openings
We'll be in touch soon.
The Bluu Kazi Recruiting Team
talent@bluukazi.com | www.bluukazi.com