Quote requests from the evening and the weekend waited until the next business day, and the sales rep still started by asking about the roof. Today a chatbot on the WordPress site collects roof and installation data, qualifies the lead and passes it straight to the sales rep with a summary of the conversation.
Client
Photovoltaic roof manufacturer
Industry
Renewable energy
Services
AI Chatbot, Automation
Duration
2 weeks
Year
2025
- Before
an evening enquiry waited, from Friday to Monday
until morning
the sales rep asked about the roof and installation by email or phone
by hand
enquiry went to the sales rep, including those that were not leads
every
Situation
The client manufactures photovoltaic roofs: roofing that is a PV installation at the same time. The people asking about them are usually building or renovating a house and want to know whether such a roof makes sense for them and roughly what it costs. Enquiries came in through the WordPress site at all hours; sales reps answered during business hours.
Every quote needs the same data: what the roof is today, area, pitch, orientation, electricity consumption, whether there should be energy storage. Without them the sales rep cannot calculate anything, so the first contact was a series of questions, not an offer.
What was not working
The site collected enquiries, but it did not collect data.
The form took a name, a phone number and free text. The sales rep asked for the rest afterwards, often over several emails.
An enquiry from Friday evening got a reply on Monday, by which time the person already had two other offers.
Everything landed on the sales rep: job applications, supplier offers, general questions about photovoltaics. That it was not a lead only came out after contact.
What we built
Instead of another form, a chatbot with a single goal: collect the data for a quote and hand it to a human. The WordPress site stayed as it was; it only got a chat widget. The logic sits alongside, in a Node.js service that talks to the OpenAI API through LangChain.
Widget on WordPress: a script embedded on the site, with no theme rebuild and no plugin to update every month.
Node.js backend: keeps the conversation history, enforces limits and streams responses, which is why the first words are on screen in under 2 seconds.
Product-specific prompt: a description of the client's roofs, the list of data to collect and the boundaries. The bot does not quote prices itself, because the price of a roof depends on too many things for a model to guess; off-topic questions are referred to the sales rep.
Qualification and handover: once it has the full set, the bot asks for contact details, assesses whether this is an enquiry for the sales rep and sends them a summary of the conversation with the data. Conversations that are not leads it ends politely on its own.
How it works day to day
Saturday, 10 pm. Someone asks from their phone whether a PV roof is suitable for their house. The bot answers in under two seconds and asks in turn: what roof today, area, pitch, orientation, electricity consumption, energy storage. At the end it sums up what it has established and asks for a phone number or email.
On Monday morning the sales rep gets not “hello, I would like a quote” but a full set of data and a summary of the conversation. They call with a proposal, not a questionnaire.
Results
The bot has been running since 2025, around the clock, and response time stays under 2 seconds. The sales rep starts from data, not questions, and evening and weekend enquiries do not wait until morning for a first reaction.
Lead and conversion figures belong to the client and we do not publish them. Honestly: the chatbot does not sell roofs, it shortens the path from a question to a conversation with the human who does. The code belongs to the client, who pays for the OpenAI API by usage, with no subscription for a middleman.
What we learned
A bot with a single goal works better than a bot that “answers everything”. A list of fields in the prompt and a clear end to the conversation delivered more than an open chat about photovoltaics. Boundaries matter more than eloquence: a model that guesses the price of a roof does the sales rep more harm than a plain form.
And in the right dose: if the client had only needed answers to common questions, an off-the-shelf chat widget on a subscription would have been enough, and that is what we would have told them. Here, qualification, a prompt for a specific product and handing over the lead in a form the sales rep can work with right away were what settled the case for custom code.
Data flow
01Question in the widget on the WordPress site
02Message to the Node.js backend
03LangChain + OpenAI API run the conversation
04Full set of roof and installation data
05Qualification: lead or not
06Summary to the sales rep
Results in numbers
bot response time
< 2 s
takes and qualifies enquiries
24/7
scope
of quote data before the sales rep's first call
full set
scope
- What's next
The bot's scope is deliberately narrow and will stay that way; if the client wants, the next step will be creating the lead directly in their CRM. Have a website where enquiries come in after hours? A free consultation takes 30 minutes, and an audit for PLN 699 net ends with a document covering architecture, scope, risks, a fixed price and a deadline, and we deduct it in full from the implementation price: get in touch.
- Stack
NODE.JS
OPENAI API
LANGCHAIN
WORDPRESS
- Have a similar process?
Tell us what eats your hours.
We'll get back within 4 business hours with questions, or straight away with a proposal for how to wire it up. No strings attached.
Practice management system data · pseudonymization · team chat
Reports from the practice management system collected automatically every evening, questions about the data asked in plain language in chat. The data never leaves the clinic.
A C# .NET application next to Subiekt nexo PRO: pulls orders from Amazon SP-API across five EU markets, determines the country and VAT rate and issues the invoice through Sfera.
of invoices automatic
100%
EU marketplaces
5
to production
3 wks
C# .NET WPF
AMAZON SP-API
SFERA SDK
MS SQL
Case
- Let's start
Want the same result in your company?
A 30-minute call, zero cost. Tell us where you lose hours and we'll come back with an estimate of how many you can get back.