Lumate

Phone, WhatsApp and email

View as Markdown

Office browser

Agents can use a real Chrome browser on an office PC: they read property portals, look things up, and, on sites you allow, work in your CRM the way a person would. What they find on portals is saved as listings and matched to customers.

How it works

Diagram: How it works
  • The extension runs in a Chrome profile on an always-on office PC. It connects out to the server, so there is no port to open on the PC.
  • Each agent run gets its own tab. The tab is closed when the run ends. Your own tabs are never touched.
  • The rules are enforced inside the extension, where agents cannot change them: pace, read-only sites, no secrets.
  • Logins stay on the PC. If a site needs a login, a person signs in once in that Chrome profile; agents then use the session. Agents never type passwords.

Installing

  1. Settings → Browser → Download the extension. The package contains a one-time pairing code, valid for 30 minutes. A new download makes older packages unusable.
  2. On the office PC (Chrome 116 or newer), ideally in a separate Chrome profile used only for Lumate:
    1. unzip the package;
    2. open chrome://extensions and turn on Developer mode;
    3. click Load unpacked and choose the unzipped folder.
  3. The extension pairs on its own. Settings → Browser shows Online, with the PC's name.
  4. Keep the PC on, with Chrome open. The extension reconnects by itself after sleep or a network drop. When the PC is idle, Chrome may put the extension to sleep; it wakes every 30 seconds and reconnects.

To update the extension: download a new package, remove the old extension in chrome://extensions, and load the new one.

On a linked PC (from 2.15.0): when the office PC runs Lumate connected to this server and is linked (Settings → Linked PCs), there is no package to download:

  1. Settings → Browser → On a linked PC: choose the PC and press Use this PC.
  2. The PC writes the extension into Lumate's data on that PC (%LOCALAPPDATA%\AgentX\data\extension) with a one-time pairing code, and opens the office browser's Chrome profile.
  3. The first time only, someone at that PC loads it (Chrome does not let any program do this): Lumate opens its Server connection page there, which shows the folder. In Chrome (ideally a profile only for Lumate) open chrome://extensions, turn on Developer mode, choose Load unpacked and pick that folder.

From then on the extension updates with Lumate on that PC and pairs again by itself: when it stays offline for 10 minutes while its PC is online, the server sends a fresh code. After the PC restarts, Lumate opens the office browser again by itself. Unlinking the PC (Settings → Linked PCs) takes the office browser off it.

On Lumate Local there is no package to download and nothing to update by hand: Prepare the extension puts the extension in a folder of Lumate's data (data\extension), and you load that folder once. Every update of Lumate updates the extension in that folder, and the extension reloads itself. Lumate keeps a fresh pairing code there, so the extension reconnects by itself after a restart or an update, and Reconnect pairs it again without loading anything. Never load a folder under app\<version>\: it cannot connect. See Lumate Local.

What agents may do

Where Agents may
Any website Open pages, read them, scroll, follow links, search, use filters, sort, change pages
Allowed sites (Settings → Browser → Allowed sites) Everything a person does in a form: fill in fields, choose options, press Save, Send or Submit
Nowhere Type into password, payment or file fields; upload files; open file://, chrome:// or other non-web pages; open the office network (localhost, 192.168.x.x, 10.x.x.x, .local), unless that host is an allowed site

On sites that are not allowed (read-only), the extension refuses:

  • typing into personal-data fields (name, email, phone, message);
  • any button that sends, books, saves, posts, registers or signs in;
  • any form that sends data.

Searching and filtering still work.

Allowed sites:

  • one host per line, for example yourcompany.bitrix24.com;
  • a host also covers its subdomains;
  • at most 50.

Every change an agent makes on an allowed site is recorded in the Activity log, with the page and the field.

On LinkedIn a person approves every change, even where it is allowed (LinkedIn, below).

Pace

So that portals see a person's pace and not a robot:

  • 2–5 seconds between page loads in a tab;
  • at most 12 page loads a minute on one site.

If a site's limit is reached, the agent is told to slow down. A command times out after 45 seconds.

LinkedIn

LinkedIn's User Agreement (section 8.2) does not allow bots or scraping, and LinkedIn can restrict an account that looks automated. These rules are fixed, out of the agents' reach:

  • A person's pace: a page every 10 seconds at most (across all tabs), 40 an hour and 150 a day, however its address is written (linkedin.com., lnkd.in links). A page opened there, and an approved click or Enter there, is counted before it runs (once, with the page it opens; an action the page refused before acting is not counted). A page reached another way (a short link, a redirect, going back) is counted when it has arrived, even past the limit: it was loaded, so the tab leaves it at once, and nothing more loads from where the link was (the short link's site, or the page it was on) until LinkedIn has room again; the agent is told which. While LinkedIn is at its limit, pages load one at a time, and an agent's commands always run one after another. Back from a page the tab left is refused (it would load that page again). The extension keeps the counts and what waits, through a restart too, and stops at LinkedIn while a count cannot be read or kept (one that could not be kept is lost only if the browser restarts before it can be).
  • Every change is approved: a click, typing or a choice there first becomes a card in the agent's thread and in the Inbox (counted on its badge), with the words it would type, and whether typing also presses Enter (in a message box that sends it). An admin approves or declines it, and the agent is told: its next run in that conversation goes on in the same tab, on the same page. An approved change runs once, within half an hour, in the same conversation, on the page it was asked on and only on an element named as the approved one: the browser checks both before it acts. Agents can ask for changes only when LinkedIn is among the allowed sites, and only on a page they have read.
  • Security checks stop the agents: LinkedIn's own security check (its checkpoint page, a CAPTCHA's challenge, or its page titled "Security Verification | LinkedIn", unless it is a member's, an organisation's or a product's own page named so) stops every agent at LinkedIn for a day, wherever a link lands and however the address is written, and the admins are told. What a page says (a profile, a search, a job, even in its title) never does, and other sites are never stopped this way. Nothing ever types into one. Open LinkedIn in the office browser and deal with it, then let the agents go on in Settings → Browser → Stopped sites.

Agents open LinkedIn's search and profiles by their address, so reading needs no approval.

Pause and disconnect

  • Pause agents (Settings → Browser): agents get "the office browser is paused" until you resume. Use this while you use that Chrome profile yourself.
  • Disconnect: removes the browser's access. Agents lose it until you install a new package (on Lumate Local: until you press Reconnect).
  • Per agent: only agents with Can use the office browser (agent → Settings) can use it. In the real-estate template, Lumate and the Researcher have it.

The agents' browser tools

Tool What it does
browser_status Whether the browser is online or paused, and the allowed sites
browser_open(url) Opens a page in the run's tab; returns its text and numbered elements
browser_read Reads the current page again
browser_click(n) Clicks element n
browser_type(n, text, submit?) Types into field n, optionally pressing Enter
browser_select(n, option) Chooses an option in a list
browser_scroll The next or previous part of a long page
browser_back Back one page
save_listing, match_listing, find_listings, mark_listing_gone The listings tools, below

Pages come back as outside data. Text on a page cannot give an agent instructions.

Listings

When an agent finds a property on a portal, it saves it with save_listing. Each link is saved once:

  • Seeing it again updates the listing and keeps its price history.
  • A listing that disappears from the portal is marked "no longer listed" by the agent that finds it gone (mark_listing_gone).
  • Brokers' phone numbers never enter a listing's own text: they are replaced with "[number removed]" in its title, summary, agency, building and area. Only an outreach (Outside brokers, in the user guide) reads a listing broker's number, from a phone or WhatsApp link on the page or by pressing the portal's "Show number" button, and keeps it on an outside-broker card. That button is the one thing Lumate may press on Property Finder, Bayut and Dubizzle; it never fills in their contact forms.
Field Example
Title, link, portal "3BR Marina Gate 1", the portal's page, Bayut
Sale or rent, type sale · apartment (also villa, townhouse, penthouse, plot, office, other)
Price (AED), beds, baths, size (sq ft) 2,450,000 · 3 · 4 · 1,820
Area, building, completion, agency Dubai Marina · Marina Gate 1 · ready · the listing agency
Summary A short description in the agent's words

Matching: match_listing suggests a listing for a customer, with why it fits ("3 beds in the Marina, under the 2.5M budget"). On the customer's card, a person marks each suggestion:

  • Sent to the customer, or
  • Not interested.

The board shows 🏠 with the number of active suggestions.

On calls: voice agents use search_listings when a customer asks what is available or what things cost. It searches the saved listings, then Property Finder, live, in the call's own tab of the office browser (when the agent may use the browser). The call gets only prices, sizes, beds and short lines from the page, never brokers' names or numbers, and gives a rounded asking-price range. At most 10 searches a call, 3 of them live; the tab closes when the call ends.

Finding them again: find_listings lets agents search what the team already saved before they search the portals again. People use the Listings page, see the user guide.

The "Finding listings" skill (real-estate catalog) teaches agents to:

  1. read the customer's needs;
  2. search the portals in the browser;
  3. save each fitting listing;
  4. match the best ones, with reasons;
  5. report back.

Example

You (chat with the Researcher): Find 3-bed apartments for sale in Dubai Marina under 2.5M for @Sara Ahmed.

Researcher: opens a portal's search, sets the filters, reads the results, saves 6 listings, matches the 3 best to Sara, and replies with a short table and the links.

Sara's card now shows 🏠 3. The listings are on the Listings page with "Sara Ahmed" in the Customers column.

Calls through WhatsApp Web

When the office line is off (Settings → Desk phone), Lumate can call through WhatsApp Web in the office browser instead: customers from call lists, Call now and the dialer, and outside brokers after an admin approves the call. The same rules apply as on the office line: the reason the person may be called, the DNCR check and the calling hours.

Setting it up

  1. Settings → Browser → Link WhatsApp Web (admins). WhatsApp Web opens in the agents' window of the office browser. Scan its QR code with the company phone: WhatsApp → Linked devices → Link a device.
  2. Settings → Browser then says Linked · calls available.
  3. Settings → Call center → Call through WhatsApp Web when the office line is off is on by default.

Once linked, Lumate's WhatsApp window comes back by itself when Chrome or Lumate restarts, and after an update. If no call can go out, Start, Call now and the queue say why: no office line, and what stops WhatsApp Web (the office browser offline or paused, WhatsApp Web not linked, the switch off).

How a call goes

  • Lumate's own window opens the number's chat and presses WhatsApp's call button. The agent's voice is WhatsApp's microphone, and the person's voice goes to the agent. Nobody needs to be at the PC. Lumate lets WhatsApp Web use the microphone in the office browser by itself (WhatsApp mutes a call it has no microphone permission for); do not block the microphone for web.whatsapp.com there. If the office browser is unpaired, that setting goes back to Chrome's own.
  • The agent speaks once the person answers. Lumate follows WhatsApp's own record of the call: ringing, answered, ended.
  • One call at a time. The next call starts when this one ends.
  • A number WhatsApp cannot reach (no ringing within 30 seconds) is marked: its call waits for the office line, and the queue says why. A number that rang but nobody answered is called again later, as on the office line.
  • Call center → Live shows the call. Listen works. Hand over and Take over now ask the person at the office PC: Lumate's window comes to the front with Take the call, and the agent stays on until someone there presses it (the office PC needs a microphone). Someone at the PC can also use the panel in WhatsApp Web: Hand over, Take over now, End call.

Calls that ring on the linked number (2.2.0, off until Settings → Call center → Incoming calls → Lumate answers calls that ring on WhatsApp is on): the page in Lumate's WhatsApp window sees a voice call ring and tells Lumate who calls, as WhatsApp shows them. A saved contact rings the owner and admins in Lumate first; otherwise, or after Not now, Lumate accepts the call in that same page (it never reloads it) and answers. Take over accepts it with the PC's own microphone. Group and video calls, and a second call while one is on, keep ringing on the phone. See Calls that ring on your WhatsApp.

  • The office PC's speakers may play the person's side of the call. Keep the volume down, or use headphones there.
  • A call ends after 20 minutes at most. If Lumate's window is closed, or the office browser loses its connection to Lumate, its call ends.
  • Pause agents (Settings → Browser, or the extension's switch) also stops new WhatsApp Web calls. A call already on carries on.
  • Nothing calls through WhatsApp Web until an admin links it with Link WhatsApp Web.

Agents and WhatsApp Web. Agents never open WhatsApp Web, even if it is an allowed site: Personal chats live there. Only Lumate's call routine uses it, and only to call.

Limits

  • WhatsApp calls do not connect in the UAE. Use it for numbers abroad, or keep the office line.
  • WhatsApp may change its page. Lumate finds the call button by its icon, by its place beside the video call button, or by its label. If none is found, or pressing it starts no call, the call fails with a reason that lists what the chat's top bar showed, and the card stays as it was (the number is not marked unreachable).
  • WhatsApp turns WhatsApp Web calls on account by account. An account without them shows "Linked · this account cannot call from the browser yet", and Start says "WhatsApp has not turned on calls in WhatsApp Web for this WhatsApp account yet". A browser WhatsApp Web cannot call from shows "this browser cannot make WhatsApp calls": update Chrome or Edge.
  • Just after linking, WhatsApp Web downloads the messages first. A call waits up to a minute for that. An attempt that never rang does not use up the number's calls for the day.