Skip to Content
/* ============================================================ 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