Generic Soft

Engineering teams built around your needs — from solo engineers to full-scale squads.

SOFTWARE DEVELOPMENT Custom Software Development Web Application Development Backend Development Frontend Development E-commerce Development MVP Development SaaS Development UX/UI Design AI & MOBILE Machine Learning Deep Learning Computer Vision Natural Language Processing Agentic AI LLM Integration iOS App Development Android App Development Cross-Platform App Development CLOUD, QA & DATA Cloud Migration Cloud Architecture DevOps & CI/CD Cybersecurity Software Testing & QA Automation Testing Business Intelligence Big Data CRM All Services → OUR PRODUCTS
MSGPLS Viber business messaging

Sell more in every chat Support that never sleeps Every delivery in the loop Campaigns people answer

Product offers, cart reminders and checkout — right inside Viber, where your customers already are.

Boost my sales
INSECTARIUM-X TRL 7 Automated Bio-Protection

Precise Microclimate Remote Control Full Traceability Autonomous Operation

Automated management of temperature, humidity, lighting, and ventilation for reliable breeding of beneficial bioagents.

Request a Demo

We've delivered 60+ projects across 11+ sectors. Experience in your industry? We have it.

Agriculture Banking Fintech Insurance Healthcare Real Estate Logistics IoT AI Cybersecurity Blockchain All Industries → Careers Technologies Our Work Blog
Case Study · Mobility & navigation · AI proof of concept

AI Crawler for Tolls & Emission Zones.

Toll prices and low emission zone rules are published on hundreds of government, regional and municipal websites, often as PDFs or interactive forms. We built a proof of concept that collects them automatically, spots every change, and turns it into a report a person can check in minutes.

Client project · The client's name is withheld at their request. Map of a low emission zone and toll road with a change-detected report card
Client Global mobility and navigation company (confidential) Engagement Proof of concept Coverage 4 countries, 30+ cities and toll assets Built with Python · Crawl4AI · Playwright · OpenAI
The challenge

Hundreds of sources, no common format.

Large mobility and navigation platforms depend on accurate, current information about toll charges and low emission zone (LEZ) regulations in many countries. That information lives on government portals, regional environmental platforms and municipal websites, inside interactive forms, dynamically rendered pages and PDF legal documents.

Monitoring all of it by hand doesn't scale, and every missed update is a business risk: outdated prices, wrong access restrictions and regulatory non-compliance.

Six kinds of official source: government portals, regional environmental platforms, municipal websites, interactive forms, dynamically rendered pages and PDF legal documents
The six kinds of official source the crawler had to read.
The goal

Could an AI-assisted crawler do it automatically?

The client asked us to validate whether an AI-assisted crawler could take over the monitoring end to end. The proof of concept had to show three things.

01

Extract the data: pull toll and LEZ data from diverse official sources, without manual copying.

02

Detect what changed: compare each run with the last and find the deltas over time.

03

Report it clearly: produce structured, readable reports showing what changed, where and when.

Scope

Four countries, the most important sources first.

During the proof of concept we built 14 production-ready scraper modules covering more than 30 cities and toll assets.

The scope deliberately focused on Priority 1 sources, to prove feasibility, robustness and data quality before going for full geographic coverage.

Road-sign style summary of coverage: Spain 17 cities, Italy 13 municipalities, Turkey 2 toll systems, United States 1 toll system; 14 scraper modules, 30+ cities and toll assets
Spain: LEZ data via zonabajasemisiones.es and municipal sources. Italy: LEZ data via the ARPAE regional platform, plus Verona and Novara. Turkey: KGM highways and the Avrasya Tunnel. United States: Delaware SR1.
How it works

Scrapers collect. AI reads. A diff reports.

Deterministic scrapers do the collecting and AI does the reading. A hash check in between decides whether the AI needs to look at a page at all, and a structured diff turns the results into a list of changes.

Six-step pipeline: fetch with Crawl4AI and Playwright, fingerprint each page, analyse changed pages with OpenAI, structure as JSON, compare with the committed baseline, report as Excel and CSV; unchanged pages skip AI and keep the baseline
How one source moves through a crawler run. Unchanged pages leave at step 2 and keep their last result.
Key capabilities

Five building blocks, one modular system.

Site-specific and platform-level scraping • Individual scrapers for standalone municipal and toll websites • Unified scrapers for central platforms that cover many cities • Static pages, dynamic content, forms and PDF documents AI-assisted analysis • Raw content is analysed with an OpenAI large language model • Unstructured text becomes structured rules, restrictions, fees and dates Cost-aware change detection • Every page is hashed on every run • If the hash hasn't changed, AI analysis is skipped Delta reporting • New data is compared with a committed baseline • Per-source reports in Excel and CSV Orchestrated runs • All scrapers can run in sequence from one entry point • Results combine into a single report for review
Cost control

Paying for AI only when a page changes.

Most regulatory pages don't change from one run to the next. Each page gets a fingerprint, and if it matches the previous run the page skips AI analysis completely and the last result is kept.

That cuts AI costs by roughly 70–80% on repeat runs, which makes frequent, recurring monitoring affordable.

Three runs over 24 pages: the first run sends all 24 pages to AI (100%), repeat runs send only 6 (25%) and 5 (21%) changed pages
Illustration of three runs over 24 pages.
Reporting

Reports a reviewer can act on.

Every source gets its own delta report in Excel and CSV, plus a combined report across all sources.

Each row shows the affected parameter, the previous value and the current one, so a reviewer can confirm a change without opening the original website.

Combined delta report in Excel: one row per parameter with source, previous value, current value and a Modified, Added, Removed or Unchanged label, plus one sheet per source
Report layout with sample values. Not real regulatory data.
Technical challenges

What made it hard, and how we solved it.

Every source behaves differently, so the crawler had to cope with a wide range of structures, formats and access rules.

Very different website structures: a tailored scraping strategy for each standalone site, and unified scrapers for platforms that publish many cities in one place.

Geo-blocked sources: some sources, especially in the United States, only answer local visitors. Proxy-based access solved this.

Dynamic content and interactive elements: pages that render in the browser or hide data behind forms are handled with browser-based scraping through Playwright.

PDF-heavy legal documentation: reliable extraction and parsing of PDF documents before the text reaches AI analysis.

Websites that change often: a modular design means one scraper can be fixed or refactored without touching the others.

Results

What the proof of concept showed.

Automated monitoring of toll and LEZ rules across several countries is technically feasible, and affordable to run on a schedule.

14 Production-ready scraper modules 30+ Cities and toll assets covered 4 Countries: Spain, Italy, Turkey, USA 70–80% Lower AI costs on repeat runs
Impact & next steps

A proven foundation, ready to scale.

The proof of concept validates a robust and scalable approach to automated regulatory monitoring in the mobility domain.

What we proved Automated monitoring of toll and LEZ rules across several countries is technically feasible AI-assisted analysis clearly improves extraction accuracy from unstructured legal text Hash-based optimisation keeps recurring monitoring cost-efficient Delta reports give clear, actionable insight into regulatory changes The road ahead More cities and countries Central dashboards for non-technical users Advanced orchestration and scheduling AI-driven discovery of newly published regulatory sources Validation workflows for conflicting or ambiguous updates

Each extension can be delivered on its own, as business priorities require.

By combining deterministic scraping with AI analysis and cost-aware change detection, the crawler gives enterprises a reliable way to keep toll and LEZ intelligence up to date.

Tech stack

Built with

Language Python Scraping & automation Crawl4AI Playwright Proxies AI OpenAI LLMs Processing Custom hashing Structured diffing Output JSON CSV Excel Execution Script-based orchestration

More case studies

View all work → See case study → ESP Rainmaker See case study → Add+Space See case study → Voxter

Ready for results like these? Discover if we're a good fit for you.

Case Study · {{ cs.industry }}

{{ cs.name }}.

{{ cs.summary }}

Client project · The client's name is withheld at their request.
Co-funded by
the European Union
Programme
Competitiveness and Innovation
in Enterprises
{{ cs.heroAlt }}
{{ cs.industry }}
{{ x.k }}
{{ x.v }}
{{ s.eyebrow }}

{{ s.title }}

{{ p }}

{{ s.chatName }}
Chatbot on Viber
{{ c.t }}
Illustrative conversation
{{ s.macTitle }}
Portfolio value
{{ s.macValue }}
Live
{{ r.n }}{{ r.v }}{{ r.d }}
Illustrative interface
Whole house · now
{{ s.homeTotal }}
{{ p.l }}
{{ r.n }}{{ r.w }}
{{ m.k }}
{{ m.v }}
Illustrative dashboard
Sender
Sending
−€25.00
NFC
Receiver
Received
+€25.00
{{ t.t }}
Illustrative offline transfer
{{ s.panelTitle }}
{{ x.t }}
{{ s.panelHub }}
{{ s.panelHubSub }}
{{ t }}
{{ s.imgAlt }}
{{ s.flowTitle }}
{{ x.t }}
{{ s.flowEngine }}
{{ s.flowEngineSub }}
ParameterPreviousCurrent
{{ r.p }}{{ r.a }}{{ r.b }}
Illustrative delta report
{{ s.eyebrow }}

{{ s.title }}

{{ s.intro }}

{{ c.n }}

{{ c.t }}

{{ s.eyebrow }}

{{ s.title }}

{{ p }}

{{ r.t }}

{{ s.eyebrow }}

{{ s.title }}

{{ s.intro }}

{{ m.v }}
{{ m.k }}
{{ c.name }}{{ c.count }}

{{ c.desc }}

{{ s.note }}

{{ s.eyebrow }}

{{ s.title }}

{{ ft.t }}
•{{ sb }}
{{ s.eyebrow }}

{{ s.title }}

{{ s.intro }}

{{ col.title }}
{{ o }}

{{ col.note }}

{{ s.closing }}

{{ s.eyebrow }}

{{ s.title }}

{{ s.intro }}

{{ s.eyebrow }}

{{ s.title }}

{{ p }}

{{ s.imgAlt }}
Swipe sideways to see the full diagram.
{{ s.caption }}

{{ s.quote }}

{{ s.by }}
{{ s.eyebrow }}

{{ s.title }}

{{ st.cat }}
{{ it }}
{{ m.value }}
{{ m.label }}
{{ b.eyebrow }}

{{ b.title }}

{{ b.p1 }}

{{ b.p2 }}

Outcomes

What changed for {{ cs.name }}

✓{{ o.text }}
“

{{ cs.quote }}

{{ cs.quoteBy }}
{{ cs.name }}
How we worked

From kickoff to production in four phases.

{{ ph.when }}
{{ ph.title }}

{{ ph.text }}

Ready for results like {{ cs.ctaLike }}? Discover if we're a good fit for you.