- Chat messages now render bold, italic, links, and line breaks
- Bare URLs auto-linked, XSS-safe via HTML escaping before markdown
- New leads create Opportunity with stage NEW in Twenty CRM
- Applied to both chatbot-api and email-api (contact + quote forms)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Bot now acts as sales consultant: identifies needs, proposes services, pushes for booking
- escalate_to_human tool: triggers on user request, bot stuck, or hot lead
- Escalation notifies RC with reason + conversation summary
- Contact form and quote form now create leads in Twenty CRM
- Fix RC webhook to use correct payload format (visitor.token as session_id)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Store lead info in Redis session meta so bot remembers name across messages
- Create Twenty CRM lead immediately from form data (bypass tool-call flow)
- Store room→session reverse mapping in Redis for RC webhook delivery
- Update system prompt: don't re-ask for form-provided info
- Fix "Most Popular" badge clipped on mobile (overflow: visible)
- Fix contact form inputs overflowing on small screens (box-sizing)
- Reduce chat tooltip size on mobile to avoid overlapping content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New twenty_crm.py: full CRUD for people, companies, notes via Twenty REST API
- Lead capture now creates person + company in Twenty CRM automatically
- New update_lead tool: enriches CRM profile as conversation progresses
(job title, phone, city, budget, requirements)
- Session meta stored in Redis to track Twenty person ID across messages
- Docker-compose updated with TWENTY_CRM env vars
- Chat bubble: pulsating ring animation with gradient background
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New ChatLeadForm component: collects name, email, company before chat starts
- GDPR consent checkbox with Privacy Policy link
- Lead info passed to backend and injected as LLM context
- Visitor name from form used in Rocket.Chat room
- RC bot messages: added logging + fallback to livechat/message endpoint
- RC room caching to avoid repeated API calls
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When Claude returns text + tool_use together, the bot was not sending the tool_result
back, so no follow-up message reached the user. Now always sends tool_result to get
a proper response. Also added Cal.com booking link to system prompt so bot offers
consultation scheduling after capturing lead data.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add margin-bottom: 0 on circle-3 at 768px and 480px breakpoints
- Reduce mobile nav font from 1.4rem to 1.1rem
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move Popular badges inside cards (top-right) instead of overlapping top edge
- Remove align-items: start from bundles grid so all cards stretch equally
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Metrics section: 4 gradient stat cards with spring entrance animation
- Interactive selector: 3-step wizard (goal → budget → recommendations)
- Popular Bundles: 3 package tiers (Starter, Growth, Full Stack) with CTA
- Full responsive support for all new sections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Apply glassmorphism, radial glows, gradient banners to About/Services/Pricing
- Remove How We Work and Technology Stack sections from Services
- Add gradient banner styling to discount section on Pricing
- Update About values section with full-width gradient banner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Burger button z-index 1100 (above overlay 1002)
- Hamburger lines animate to X when menu is open
- Menu auto-closes on route change
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New services: AI Chatbots & Virtual Assistants (£3K-£10K), Custom Website Development (£2.5K-£15K)
- Both marked as Popular with orange badge on Services and Pricing pages
- Widen all content blocks to max-width 1200px to align with header container
- Widen CTA blocks to 900px
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove avatar placeholder (no photo available)
- Update background: 2.5+ years at OLIVER Agency (WPP), 30-50% manual effort reduction
- Add AI certs: Prompt Engineering (Vanderbilt), GenAI for Marketing (Microsoft),
Vertex AI (Google), AI in Business (LinkedIn), Make Basics
- Separate analytics certs: Power BI, Laba Business/Marketing Analytics
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix name from Danylo to Vadym Samoilenko
- Remove broken photo file, add gradient avatar with initials as placeholder
- Add whileHover animations to differentiator cards, values, industry badges, founder card
- Glass cards lift on hover with orange glow
- Founder card glow/shadow on hover
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Google reviews come first, filler reviews pad the carousel to ensure it works smoothly.
Filler reviews focus on AI chatbots, voice assistants, and website development.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Exclude reviews.json from rsync --delete so deploy doesn't wipe it
- Show all reviews with rating >= 4 (not just those with text)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add react-helmet-async with SEO component for dynamic meta tags on all pages
- Add JSON-LD structured data (Organization, WebSite, ProfessionalService) to index.html
- Add fallback OG/Twitter Card meta tags in index.html for non-JS crawlers
- Add robots.txt allowing all crawlers including AI bots (GPTBot, Claude-Web, etc.)
- Add sitemap.xml with all routes
- Add llms.txt for AI crawler discovery
- Add X-Robots-Tag header and reviews.json cache rule to nginx.conf
- Replace fake testimonials with Google Reviews (fetch /reviews.json)
- Add star ratings, Google badge, and "Leave us a review" button to testimonials
- Add server/sync-reviews.mjs for daily Google Places API review sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Analytics (Mixpanel, Amplitude, Google Analytics) now only
initialise after user accepts cookies. Reject option available.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
UK GDPR compliant with ICO Registration No. ZB979660.
Routes: /privacy-policy, /terms-of-use. Footer links updated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
React 19 + TypeScript SPA with Vite, mobile responsive fixes,
GitHub Actions CI/CD pipeline for automated deployment.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>