Skip to content
← Back to Portfolio
Timocom plugin — freight offers and lightweight CRM
Timocom plugin — freight offers and lightweight CRM

Timocom plugin — freight offers and lightweight CRM

A Firefox extension that captures freight and client offers from Timocom via DOM listeners (without costly API access) plus a lightweight local CRM for lead management.

Project date: January 15, 2024

AI Highlight

  • Context:A Firefox extension that captures freight and client offers from Timocom via DOM listeners (without costly API access) plus a lightweight local CRM for lead management.
  • Technologies:JavaScript, Firefox Extension API, DOM Manipulation, HTML5, CSS3, LocalStorage
  • Summary:# Context On Timocom, freight and client offers change quickly. Official API access can be expensive or unavailable for the needed scope, while manual copy-paste burns time and introduces errors. This plugin is a practic...

Timocom plugin interface

Context

On Timocom, freight and client offers change quickly. Official API access can be expensive or unavailable for the needed scope, while manual copy-paste burns time and introduces errors. This plugin is a practical workaround: it listens to DOM changes, captures offer data, and stores it in a lightweight in-browser CRM.

Goal

I designed and delivered a Firefox extension that:

  • captures freight / client offer data near real time,
  • does not require a costly Timocom API,
  • provides a local CRM (leads, history, statuses),
  • runs as content script ↔ background ↔ storage.

My role

I owned design, solution design, implementation, and up to 30 days of post-launch care (fixes after platform UI changes, stabilisation).

Scope

Smart DOM monitoring

  • MutationObserver instead of aggressive polling,
  • reaction to listing appearance / changes,
  • independence from a paid API.

Built-in CRM

  • organise leads and interactions,
  • persist data (LocalStorage / IndexedDB),
  • track statuses from contact to completion.

Technical layer

  • content script (DOM observation, parser, UI inject),
  • background script (CRM logic, events),
  • storage manager (preferences + larger datasets).

Approach

Event-driven architecture: the browser reacts to page changes instead of constantly hitting the network. The parser is adaptive — Timocom renders offers in different layouts depending on filters and views, so extraction needs fallbacks and graceful handling of missing fields.

Content Script  ↔  Background Script  ↔  Storage
(DOM + parser)     (CRM + events)        (LocalStorage / IndexedDB)

Challenges

  • Dynamic platform frontend — classic scraping breaks on SPAs; MutationObserver + selective observation targets.
  • Variable offer structure — different formats per view; adaptive parsing and normalisation.
  • Browser performance — debounce, narrow observation targets, and efficient storage so monitoring does not grind tabs down.

Outcome

The result is a Firefox extension that collects Timocom offers without an API and organises them in a local CRM — a cheaper, faster operational path for freight work. I provided up to 30 days of post-launch care after go-live.

Plugin dashboard

CRM

Stack

  • JavaScript (ES6+)
  • Firefox Extension API (content / background scripts)
  • DOM MutationObserver, HTML5, CSS3
  • LocalStorage + IndexedDB

Related projects