EST. 2025

- Case 04 · Renewable energy

AI chatbot for a PV roof manufacturer.

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

  1. 01Question in the widget on the WordPress site
  2. 02Message to the Node.js backend
  3. 03LangChain + OpenAI API run the conversation
  4. 04Full set of roof and installation data
  5. 05Qualification: lead or not
  6. 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.

contact-form

The data controller is PRODAUT Sp. z o.o. We use your data to reply to your enquiry. If you consent to advertising cookies, a hash of your e-mail is sent to Google Ads for conversion measurement. Privacy policy.

Prefer a call? Pick a slot for a 30-minute consultation →

- See also

- 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.

PRODAUT Sp. z o.o. · Sułków 36, 48-120 Baborów · District Court in Opole, 8th Commercial Division of the National Court Register · KRS 0001242863 · NIP 7481597304 · REGON 544821885 · Share capital PLN 5,000

© 2026 PRODAUT · All rights reserved
Privacy policy·Cookies·GDPR
Made with in Katowice