Selected work

Geoekoproekt case study

From n8n chatbot to digital engineering assistant

A useful consultation, a clear project brief, and a reliable lead handoff in one conversation.

Client
Geoekoproekt
Industry
Engineering surveys
Work
Product strategy, AI, web app
Geo Chat answering an English question about site investigation for a two-storey house
Real local product capture. English conversation.

The starting point

The first bot proved the idea. The business process needed its own product.

The n8n version answered questions from company documents and emailed a summary when it noticed contact details. That was enough for a prototype.

An engineering enquiry is rarely one question. A specialist needs to know what is being built, where it is located, which survey may be required, and what information is still missing. The application must also retain the enquiry when email delivery fails and keep it visible after the conversation ends.

The useful part of the conversation should happen before the bot asks for a phone number.

We stopped extending the workflow. Instead, we designed the consultation, lead capture, delivery, and reporting as one product.

What the visitor gets

The assistant handles the first consultation without turning it into a long form.

  1. 1

    Ask in plain language

    The visitor describes a house, site, survey, or concern in their own words.

  2. 2

    Answer one useful question at a time

    The assistant identifies the likely service and asks only for the next missing detail.

  3. 3

    Prepare the project brief

    Location, building type, dimensions, project stage, and open questions become structured data.

  4. 4

    Bring in an engineer

    After validating a phone number or email, the application creates the lead and sends the full context to the team.

The rebuild put the whole consultation in one product

Before

A chatbot workflow

  • Answers generated inside n8n
  • Short conversation memory
  • Contact detected in the last message
  • AI summary sent by email
  • Limited visibility after handoff

After

A digital consultation product

  • Dedicated Node.js application
  • Conversation history and project profile
  • Strict phone and email validation
  • Lead stored before delivery starts
  • Dashboard, reports, tests, and monitoring

The business can see what happens after the chat opens

Every conversation with at least one visitor message is available in a private dashboard. The team can review the transcript, project details, requested service, contact status, and delivery result.

The screenshot uses local test conversations. The figures are not production performance metrics.

English preview of the Geo Chat conversation dashboard with filters, outcomes, and project details
Real dashboard capture with visible labels translated for this case study.

The system controls what can appear in public answers

Company pages answer questions about services and contacts. Approved technical documents support engineering questions. Old prices, internal calculations, and uncertain material stay out of public answers.

When the website changes, the sync service receives a signed update and reads the public page again. The chat does not rely on an old copy of the site.

6,822
searchable technical passages
34
processed source documents
3,056
passages approved for public answers
32
automated tests passing

A lead is saved before an email is sent

If email delivery fails, the enquiry remains in the application and the delivery worker can try again.

Duplicate protection

Repeated submissions return the existing lead instead of creating another notification.

Strict contact validation

An unfinished number or a cadastral reference cannot be mistaken for a phone number.

Retryable delivery

The application keeps the lead locally and can retry delivery after a temporary provider error.

Why we moved the complete product away from n8n

n8n was useful for proving that people would use the assistant. The next version needed reliable state, clear ownership of data, automated tests, security controls, and a user interface designed around the consultation.

A dedicated application made each of those parts easier to understand and control. It also removed the core product's dependency on a visual workflow.

Technical notes

Geo Chat runs as a Dockerized Node.js 22 and Express application. SQLite in WAL mode stores sessions, messages, project profiles, leads, delivery jobs, and product events. SQLite FTS5 provides local full-text search across website content and approved documents.

Session access uses signed HMAC tokens. Public endpoints have origin checks, rate limits, payload limits, and prompt-injection guardrails. A signed Drupal webhook and a daily sitemap pass keep website knowledge current.

The widget is plain JavaScript and CSS, so the main website only needs one script tag. The AI service, keys, storage, and delivery workers stay on a separate server.

Is your automation becoming a customer-facing product?

We can turn it into a product your team can rely on.

Discuss your project