Skip to content
Fridman

A bot for the field team

People at Reefa don’t log in to any panel. They start and end a shift in Telegram with one button, with the site’s location, send photos of their work, ask for cleaning supplies and check their earnings. I built the bot myself, and in September 2026 I rebuilt it from scratch around one rule: one button per step.

This works for any company whose people work away from the office: cleaning, security, maintenance, construction. I build field-team bots as part of a company system, from PLN 60,000 excl. VAT. I am based in Kraków and work remotely and on site across Poland.

1,100 h

of work logged through the bot in August 2026, across 364 shifts (as of 21 Sept 2026)

Company
Reefa, a B2B cleaning company in Kraków and Katowice
Period
June–October 2026
My role
Owner. I designed and built the bot; the rebuild went through independent AI-agent reviews.
A similar project
from PLN 60,000excl. VAT

What it looks like on screen

This is a shift from the worker’s side. Next to it are the rules the bot applies behind that one button.

The rules behind one button

3 min
double-start guard, with a “Cancel start” button
90 s
window in which a repeated press is ignored
30 min
window in which a restart must be confirmed
6 h
after this long, ending the shift needs confirmation
14 h
a forgotten shift closes itself, set to the median length of that person’s recent shifts on that site
15 min
photo window after the shift ends
20, 40, 60 min
alerts when a shift hasn’t started on time
5 min
how often the background check runs
Schematic of a bot conversation. The site, time and photos are examples, not real data.

Why a normal panel doesn’t work in the field

Someone cleaning an office at six in the morning isn’t going to log in to a panel or fill in a form. They have a phone and a messenger. If recording a shift takes more than one tap, some shifts simply won’t get recorded, and nobody will know how many hours were worked on site.

The first version of the bot worked, but people said it “asks twice”, and at one site photos kept going missing. I solved both problems by starting with the data, not the code.

What the office needs from people in the field

  • When someone started and finished work on site
  • Photos after every shift, attached to the right shift
  • A heads-up that someone is late, before the client calls
  • Supply requests without phone calls and text messages
  • All of it in Polish or Russian, depending on the person

What I built

The bot is part of the system described in the Reefa panel case study: whatever a worker does in Telegram shows up in the panel straight away.
  • The “one button” rebuild

    An audit in September 2026 confirmed 55 issues. The cause of “it asks twice”: a second location sent a few seconds later flipped the shift state. I rewrote the bot as a router, a library and separate flows, with 19 tests on real sequences. Before release on 22 September the code went through two independent reviews by 93 and 45 AI agents.

  • Photos that no longer go missing

    The logs showed no errors at all. Only the data did: in 17 of 24 shifts at that site, the last photo arrived 0–1 seconds before “Finish”, so closing the shift overtook the album upload. I added a 15-⁠minute photo window, a ban on closing a shift with no photos (with a separate “Finish without photos” button), a clear “photo not saved” message, unique file names and a retry when Telegram rate-limits.

    runs on its own
  • Language chosen per person

    The coordinator picks Polish or Russian before sending the invite. The bot recognises buttons in both languages, so switching never breaks anything. Before release: 23 of 23 tests, a 21-⁠agent review and 22 fixes.

  • Shift rules

    runs on its own

    A 3-⁠minute guard against double starts with a “Cancel start” button, confirmation to end after 6 hours, and a forgotten shift closes itself after 14 hours, set to the median length of that person’s recent shifts on that site. A background check runs every 5 minutes.

  • Late-shift alerts

    runs on its own

    When a shift hasn’t started on time, the bot sends an alert after 20, 40 and 60 minutes.

  • Photos for managers and clients

    runs on its own

    Albums go to managers in batches of 10, and the client sees the photos from every shift in the “Photos” tab of their portal.

  • Group bot for apartment buildings

    runs on its own

    Crews post the apartment number and photos in the building’s group chat. The bot works out the building from the group name and the apartment number (including 4.2, 4-2 or 12A.2). When the number is missing, AI reads it off the door in the photo, and when unsure, the bot asks in the group. A daily summary goes out at 21:00.

  • Matching the operator’s reports

    The PDF reservation importer read 31 of 31 rows and left none unmapped. From 9 September the bot’s data matched the apartment operator’s reports day by day, and I reconciled the whole of September: 151 cleanings.

  • Three separate bots

    The team bot, the sales bot and my management bot are kept apart, so messages for staff, sales and the owner don’t mix.

  • Documents through the management bot

    runs on its own

    I forward a photo of a signed document, and AI identifies the worker, the type and the month, files it on their card and asks about missing months.

  • Locked front door

    The bot only accepts messages from Telegram that carry a secret key. Live check: without the key the answer is 403, and the background check runs with no errors.

How it fits together

A worker sees one button per step. The rules behind it run without anyone in the office.
  1. 1. Worker

    • Button in Telegram

      one per step

      a person decides
    • Location

      checked at the site

    • Photos of the work

  2. 2. Bot

    • Shift flows

      19 tests on real sequences

      runs on its own
    • Time rules

      3 min, 90 s, 6 h, 14 h

      runs on its own
    • Photo window

      15 minutes after finishing

      runs on its own
    • Person’s language

      Polish or Russian

      runs on its own
  3. 3. Panel

    • Shift log

      hours for payroll

      runs on its own
    • Photos on the shift

      runs on its own
  4. 4. Outputs

    • Manager

      albums of 10 photos

    • Client

      “Photos” tab in the portal

    • Late-shift alerts

      at 20, 40 and 60 min

      runs on its own

The worker taps a button and sends photos. The bot applies the shift rules and records everything in the panel, from where photos go to the manager and the client, and late-shift alerts go out on their own.

Key:runs on its owna person decidesdata, people or a place of work

Numbers from the system

Numbers from the system, with the date of each measurement
What I measureValue
Hours logged through the bot, Juneas of 21 Sept 2026848 h, 251 shifts
Hours logged through the bot, Julyas of 21 Sept 2026960 h, 329 shifts
Hours logged through the bot, Augustas of 21 Sept 20261,100 h, 364 shifts
Issues confirmed in the audit before the rebuildas of 22 Sept 202655
Scenario tests after the rebuildas of 22 Sept 202619
Independent code reviews before releaseas of 22 Sept 20262 (93 and 45 agents)
Shifts with the last photo 0–1 s before the endbefore the fixas of 9 Aug 202617 of 24 at one site
Language version testsas of 2 Oct 202623 of 23
Apartment cleanings reconciled with the operatoras of 1 Oct 2026151 in September

The bot doesn’t cover every site yet. In June roughly half of the planned visits went through it, so the hours in the table are only part of the company’s work.

I count hours only from shifts of up to 12 hours.

What it runs on

Telegram Bot API
the conversation, buttons, photos and location
Supabase Edge Functions (Deno)
bot logic and a background check every 5 minutes
Supabase: Postgres and Storage
shifts, photos, permissions
Anthropic Claude
apartment numbers from door photos, documents, purchase requests
Scenario tests
19 sequences taken from real shifts

What you can take for your company

  • Put the tool where people already are

    Your field team has a phone and a messenger. A bot needs no training, no login and no extra app to install, so people actually use it.

  • Diagnose from data before changing code

    The photos weren’t lost because of a bug you could find in the code. It only showed up in the timestamps in the database. Before I rebuild anything for you, I look at what the data says.

  • Rules instead of reminders

    A photo window, a double-start guard, forgotten shifts that close themselves. Each of these rules replaces a phone call from the office.

  • One button per step

    The fewer decisions a worker has to make, the fewer errors in the data. I design each screen so that at any moment only the right action is possible.

Services where I do this

Other case studies

  • 13An operating system for a service companyOne panel for the whole company: schedules and shifts, finances across several entities, petty cash, bank matching, e-signed contracts and client reports.
  • 11AI agents that run part of the company11 routines and agents: a panel doctor, SEO content, lead growth, moderation, tenders and a morning brief. Five of them log every decision, and releases roll back automatically.
  • +30%Organic growth of reefa.plA plan of 33 SEO and GEO changes, 29 free tools, an open norms dataset (460 categories from 2,338 rows of data) and a content routine. Clicks from Google rose from 8.6 to 11.2 a day in July.
  • 3 daysKtoSprząta.pl — an industry platformA directory of companies from public registries, a search that fixes typos, a free Pro panel for companies and AI moderation three times a day.

Let’s talk about your company

30 minutes, no sales deck. You tell me where time and money leak, and I tell you what I’d do first and roughly what it costs.