Case study · Internal automation platform
In productionFeatured project

ResearchNet

Type an address once and get several real answers at the same time, on one clear screen.

Private internal tool · not a public product

1 → all
one address, all providers at once
64 s
per check (was 115 s)
5
plans with their own access
+
built to add more providers
The problem

Qualifying a lead meant opening one tab per provider, by hand.

Selling internet means confirming whether service reaches the customer's address. That used to mean visiting the coverage tools of several different providers one by one, each with its own page and flow, with no record of what was checked, when or by whom.

What it does

One address in, several answers out.

In1 address
Processseveral providers in parallel
Outa clear status per provider

Parallel checks

One address, all providers checked at the same time instead of one by one.

Unified results

Very different pages collapse into the same statuses: available, already has service, doesn't qualify, needs a call, coming soon or unknown.

Multi-unit handling

Addresses with apartments or lots resolve on their own: the right unit is matched, or you're told when a choice is needed.

Clear interface, day and night

Simple and fast, made to be used many times across a full sales day.

/// The interfaceSee interface screenshots

Real screenshots of the internal tool.

Main screen · dark mode
Main screen · dark mode
Result per provider
Result per provider
Main screen · light mode
Main screen · light mode
Providers selected
Providers selected
/// The engineering

The hard part wasn't reading the screen; it was staying reliable.

No two of the pages are alike, and none holds still. The real challenge was keeping the platform working while each provider changes and limits automated access.

01

Moving targets

Providers redesign their pages without notice; one fully rebuilt its address form mid-project. So each provider lives isolated in its own module behind one shared result format: a redesign is a contained fix in one file, not a platform-wide outage.

02

Reliability first

When a site changes or limits access, the platform retries sensibly, cools down after a failure and switches path, so one hiccup doesn't take down the whole query.

03

Shared resources

The checks run at once and share network and sessions. With per-provider limits and session control, a busy provider never slows down or starves the others.

04

Faster in production

After a round of optimization, a check that took 115 seconds dropped to 64.

/// Architecture

How a query flows.

Clientbrowser · dashboardCloudflaretunnel · TLSAPI · Express 5auth · sessionsdevice approvalplan-based accessusage · billingMariaDBprofiles · usage · migrationsOrchestratorparallel checksISP-AISP-BISP-CISP-DISP-E+ moreone module per provider · extensible
/// From script to platform

What began as a personal tool became an internal SaaS.

When usage grew beyond one person, the tool gained a real backend: accounts, plans, history and billing.

Managed accounts

Only the admin creates them and the email works as the username; there's no self sign-up.

Real plan access

Each account only sees the providers in its plan, enforced on the server on every request, not just hidden in the UI.

Usage history

Each check is logged once, and both the dashboard and the monthly totals read from that same record.

Billing control

Monthly per-customer view with negotiable discounts, auto-calculated overage and a manual override; frozen when the month closes.

Device-aware login

The admin account recognizes trusted devices and emails an approval link when it detects a new one.

/// Stack

What it's built with.

Node.jsExpressPlaywrightCamoufoxMariaDBJavaScript · HTML · CSSsystemdCloudflare TunnelTransactional email

A living system.

Because the providers' pages change over time, the platform is kept up and adapts continuously to stay reliable, and it's ready to add new providers. It's a private internal tool, not a public product.

Want a tool like this for your business?

I design, build and run custom systems, end to end.

Get in touch →