WaterClub — what changed and what is coming

Live at waterclub-changes.pages.dev · updated Saturday 22 August 2026 at 22:13 +04

Saturday 22 August 2026

Field teamUnder construction85%Site-visit reports live — nine techs, per-tech links, live customer view, e-signature

BeforeSite visits happened but produced nothing durable — no photos on file, no report to the customer, no way for Sales or CS to see what a technician found on the day.

AfterEvery tech has a private link (waterclub-sitevisit.pages.dev). They fill in a 10-section report on their phone with free-form notes, photos and measurements. Tapping Share opens WhatsApp with a link to the customer, who sees the same page live as it fills in. At the end the customer signs on their phone; the signed PDF emails to Sales + CS + Michelle + Omar + Liliana automatically within 2 minutes.

Who it helpsOne record of every visit, seen by the whole company. Backs up quotes, protects against the-tech-never-mentioned-that disputes, gives the customer a real deliverable that says WaterClub took the visit seriously.

ByClaude

ZohoUnder construction80%Liliana's card statements: full report sent, Monday reminder scheduled

Before22 months of card spending (AED 1.94M, 1,543 transactions) reached the accounts as 47 unnamed lump transfers — no supplier, no VAT reclaim, no cost deduction.

AfterEvery transaction read and sorted; full written report sent to Liliana (cc Omar) with PDF, a 133-line supplier-bill worksheet with Paula, and an 8am Monday reminder scheduled to start the work.

Who it helpsAED 39,305 of VAT potentially reclaimable and AED 145,818 the company may owe Liliana, both currently invisible in the books.

ByClaude

ZohoUnder construction70%Built the real stock-count list and asked Paula for the filed tax returns

BeforeThe open stock count covered 454 items chosen by unclear logic and missed the three most inflated ones; nobody had the FTA returns

AfterRanked every valued item by money at stake: 50 items carry 99.7% of the AED 676.7M overstatement. FTA returns requested from finance.

Who it helpsTurns a 454-item warehouse job into a 50-item morning, and gets the one number that decides the tax exposure

ByClaude

ZohoUnder construction70%Liliana's card spending sorted into business, personal and undecided

Before34 credit card statements, AED 1.94M of spending with no vendor names in Books — the 'MS. LILIANA - PERSONAL FUNDS' entries were undescribed transfers.

AfterEvery transaction named and grouped. AED 1,498,418 (77%) is business, of which AED 825,407 carries VAT — about AED 39,305 recoverable if the supplier invoices exist. AED 253,488 personal. AED 190,816 across 147 merchants left for Liliana to call, on one sheet ordered biggest-first; the top 40 rows settle AED 158,727 of it.

Who it helpsTurns an unreadable personal card into a list Paula can raise supplier bills from, and puts roughly AED 39,000 of recoverable VAT and a much larger Corporate Tax deduction back in view.

ByClaude

ZohoUnder construction70%Liliana's card spending turned into a supplier bill worksheet

BeforeThe 47 entries on her account in Books are round-number card payments, not purchases, so the earlier worksheet asked her to name a supplier on a line that covers dozens of them. AED 725,068 of business spending had no supplier name and no VAT against it.

AfterThe purchases were read off the card statements instead and grouped the way a supplier invoices — one line per supplier per month. 131 supplier-months, AED 491,624 of business purchases, AED 18,057 of VAT inside them.

Who it helpsPaula can raise real vendor bills against real supplier names, which is what makes the VAT reclaimable and the cost deductible.

ByClaude

ZohoUnder construction60%Traced why the books show a fake profit to an abandoned stock count

Before99 dead duplicate items carried AED 245.7M of pretend stock value; nobody knew why the November corrections were made

AfterFound an open stock count from 21 Nov 2025 with 0 of 454 items ever counted, opened hours before the AED 677M correcting entries. Nothing changed in Zoho.

Who it helpsExplains the whole episode as inexperience rather than concealment, and identifies the one action that actually repairs the accounts

ByClaude

ZohoUnder construction60%Stock count sheet built for the warehouse

BeforeAn abandoned 454-item count that included none of the 60 most inflated items

After66 items covering 99.7% of the overstatement, grouped for one walk, printed blind so the counter cannot copy the computer; plus an office copy naming the arithmetic fault on each line

Who it helpsFound that 99% of the AED 683M overstatement is the price per unit, not the quantity — 46 items are valued at quantity x quantity x cost

ByClaude

ZohoUnder construction60%Correcting journals drafted and sent for review

BeforeFive wrong journal entries found in the deep audit, with no agreed correction and nothing prepared to fix them.

AfterFive correcting entries written out, dated today, balanced and checked against Zoho's own accounts. Three ready to post; two held pending the FTA receipt figure and the tax advisor. Sent to Paula and Liliana, Omar cc'd, PDF attached. Nothing posted to Zoho yet.

Who it helpsThe books can be corrected without deleting anything and without touching a filed year — every correction sits beside its original with the reason written in.

ByClaude

ZohoPending60%Asked Liliana about the early-settled instalment plans

BeforeAED 225,453 of instalment plans closed early on the cards was being read as spending with a large supplier behind it.

AfterIdentified as seven plans settled early across three cards on 27 Jan and 25 Feb 2026, and excluded from business cost. Liliana asked what each plan was originally for and when it started, because any plan that began before Nov 2024 is a real cost we cannot see.

Who it helpsStops AED 225,453 being claimed twice, while checking we are not silently discarding a genuine cost.

ByClaude

ZohoPending50%Asked Paula what is actually in the petty cash tin

BeforeCash In Hand shows AED 3,303.40 in Books, but the account is being used to stage large movements — AED 2.97m in and out in one day, and two VAT payments Liliana actually made personally — so the balance cannot be checked against anything.

AfterPaula asked to count the physical cash, name who holds it, and produce any petty cash log; plus the AED 453.10 still open on the Feb-Apr VAT quarter.

Who it helpsEither the account gets a balance somebody can verify, or it gets renamed so it stops looking like money in a drawer.

ByClaude

ZohoPending40%One recap to Liliana replacing four separate asks

BeforeLiliana had four separate emails from me about her cards and no single view of what was still outstanding.

AfterOne list, biggest first: the 147 merchants (AED 190,816), the seven instalment plans (AED 225,453), the nine missing months of 2024, the AED 145,818 paid onto the cards that Books does not record, and whether a fourth card exists.

Who it helpsThe reconstruction is blocked on five answers, not on more analysis; putting them in one place is what gets them answered.

ByClaude

ZohoPending30%Today-and-Monday task lists sent to Liliana and Paula

BeforeFive open questions and a 133-line supplier worksheet, with no agreed order and nobody's name against anything.

AfterLiliana has five tasks for today with a time against each, and Paula has five for Monday. Both start from the same fifteen suppliers, which are 85% of the AED 493,879.

Who it helpsTurns AED 493,879 of unrecorded business spending into a list two people can actually work through, and moves DU, DEWA and ENOC off a personal card so it stops growing.

ByClaude

ReportsUnder construction30%Owner improvement questionnaire sent to Omar and Liliana

BeforeOmar asked for a three-month improvement plan covering focus, tasks, attitude, hiring/firing/training. Building it needs to know things not in the ledgers — how each of them feels, who they trust, what they're avoiding.

After17-question survey emailed to both, PDF attached. Asks them to answer independently so divergence is visible. Covers where they want to land, day today, team member-by-member, the two of them working together, what to change.

Who it helpsTurns a huge open ask into a plan built from their own words, and surfaces the disagreements between them that no ledger reveals.

ByClaude

respond.ioPending5%Bring AI to the rest of the team, not just sales

BeforeAisha handles inbound sales conversations only. CS, renewals chasing, complaint triage and field-team dispatch are all still fully manual.

After**Scoping stage.** Likely candidates: a CS assistant that reads an incoming complaint, drafts the response Sherosh would send, and links the relevant Zoho record; a renewals assistant that keeps each handler's list live (already partly built by the AMC call page); a field-team assistant for Mr Pinto that answers "where is the nearest slot for this postcode?" using the FSM diary. Order and priorities to be decided with Omar.

AffectsAI assistants beyond sales — CS, renewals, dispatch

Who it helpsSherosh (CS), Mr Pinto (dispatch) and the four renewals handlers — the same lift Aisha has given sales.

ByClaude

WebsitePending0%SEO and content upgrade across the site

BeforeSite copy, meta descriptions, page titles and blog cadence have not been reviewed in a long time. "Fix SEO and content gaps" is a stated mission of the workspace but no dedicated pass has been made.

After**Not started.** Waiting for Omar to say what to prioritise first — page titles + meta descriptions, blog content, or product-page copy — and which pages matter most (villa, commercial, whole-house).

AffectsSEO — organic ranking + on-page content

Who it helpsAny customer arriving from Google — and WaterClub's cost per lead, which drops when the site ranks for what it sells.

ByClaude

ZohoPending0%Card decision sheet sent to Liliana

Before147 card merchants worth AED 190,816 could not be told apart as business or personal from the statement alone.

AfterSent to Liliana as a PDF to read and a spreadsheet to fill — biggest first, with a suggestion where there was one. The first 40 lines carry AED 158,727 of the 190,816. Omar cc'd; not sent to Paula, since the underlying statements are personal records.

Who it helpsOnce she answers, the business share of the card is settled and Paula can start raising the supplier bills that unlock the VAT and the tax deduction.

ByClaude

WebsiteDone12 thin blog posts rewritten into 7 real articles

Before23 of 40 posts were under 400 words (median 318). Three separate posts on hydration, three on the benefits of filtering - competing with each other and none long enough for Google to treat as an answer.

AfterSeven articles of 1,330-1,420 words, each published on the address the old post already had so its standing with Google carries over. Five duplicates folded into the article that absorbed them, binned, and their old addresses permanently redirected.

Who it helpsThe blog now answers the questions UAE customers actually type, on addresses that already have history. Nothing anyone has bookmarked or linked to breaks.

ByClaude

WebsiteDoneMedical claims, retired rental price and the mineral myth taken off the blog

BeforeSix posts told the reader a water filter reduces the risk of cancer, one naming three cancers and another quoting percentages. Three still advertised the Dh49 per month rental we no longer sell. Four claimed our filters keep the healthy minerals in water, which is a European argument that is untrue for desalinated UAE water and argues against our own RO machines.

After21 passages rewritten across 8 posts to say what a filter actually does. The one post whose title was itself a cancer claim was removed and its address redirected.

Who it helpsThe site no longer makes a health claim it cannot back up, no longer advertises a discontinued product, and no longer contradicts its own articles.

ByClaude

WebsiteDoneEight new articles published on questions nobody in the UAE was answering

BeforeThe blog had 12 real articles. Searches like 'does reverse osmosis waste water' and 'can I fit a filter in a rented apartment' returned no UAE page at all — the results were American blogs, Quora and a property portal.

AfterEight articles published, 1,480-1,620 words each, on cold water in summer, filter vs purifier, RO and minerals, RO and waste water, filters in rented apartments, villa tank cleaning, office coolers vs plumbed-in, and limescale. Each answers one question a UAE customer actually types, and links through to the filter finder, the comparison page or maintenance.

Who it helpsTwenty articles now, up from twelve. These are the searches people run before they buy, and until today WaterClub had no page in any of them.

ByClaude

WebsiteDoneThe buying guide now recommends RO by emirate, matching the catalogue

BeforeThe guide told every reader reverse osmosis is 'the standard recommendation in this region', reasoning that desalinated water carries dissolved salt worth reducing. That is backwards — desalination removes it at the plant. Meanwhile the catalogue sells the RO machine specifically for Sharjah, RAK, Fujairah and Umm Al Quwain, so the website and the price list were recommending different things to the same customer.

AfterThe guide now answers by emirate: Dubai and Abu Dhabi are desalinated and need carbon plus a fine barrier; the northern emirates blend in groundwater, which is what RO was designed for. RO stays available anywhere for someone who wants the widest barrier.

Who it helpsA salesperson reading the site now pitches the same thing the price list sells, and the customer gets asked where they live before being told what to buy.

ByClaude

SEO & marketingDoneEight new articles published and announced to the team

BeforeThe blog had 12 real articles and nothing answering the questions customers ask most; the buying guide told everyone RO was the standard choice in the UAE, contradicting our own price list.

AfterEight 1,500-word articles live on waterclub.ae, each answering a real customer question and linking through to the finder, comparison and shop. The buying guide now answers by emirate. Sales and renewals team emailed the links with a note on what changed in the pitch.

Who it helpsThe team can send a link instead of retyping the same explanation, and customers land on our site rather than a competitor's. The RO advice now matches what we actually sell.

ByClaude

SEO & marketingDoneEight more articles published — batch two

BeforeThe blog answered 20 customer questions. Nothing on the site explained chlorine, softeners, what installation involves, what a TDS meter proves, why the northern emirates differ, whether UV is needed, what a maintenance plan covers, or how to judge a filter company.

AfterEight more articles live, 1,450 to 1,700 words each, cross-linked to each other and to the existing guides. The blog now answers 28 questions.

Who it helpsThese are the questions a customer asks just before buying, and no UAE competitor answers them properly. Each one also arms the sales team with a link instead of a long explanation.

ByClaude

ZohoDoneAsked the bookkeeper to explain the abandoned stock count and two August entries

BeforeNobody had asked why the corrections were made, and the entries that zeroed an owner's capital account were eight days old

AfterSent three sets of questions to finance, cc both owners: the November stock count, the COGS corrections, and entries 215/216

Who it helpsGets the explanation while it is still remembered, and puts a stop on anything further being backdated into a filed year

ByClaude

ZohoDone2024 and 2025 locked in Zoho Books

BeforeAnyone could post or edit a transaction dated into 2024 or 2025, both already filed with the FTA. 34 entries had already been backdated that way, one by five years.

AfterAll transactions dated up to and including 31 December 2025 are locked. Zoho refuses them outright. Reversible from the same screen with the owners' agreement.

Who it helpsThe two filed years can no longer move underneath us while the stock valuation is being sorted out, so whatever we find is measured against a fixed picture.

ByClaude

ZohoDone153 August renewals with no invoice raised — sent to CS to bill by Tuesday

Before167 August renewals had been flagged as never invoiced. Nobody had walked the list to separate the real cases from Books duplicates.

AfterRe-checked across duplicate customer records — 14 were already billed under a second record. Real number: **153 to raise**. Full CSV sent to Sherosh at wecare@, CC Liliana + Omar, deadline **Tuesday 25 August**. Includes flags for the 68 duplicate-record cases and the 4 customers who don't exist in Books yet.

AffectsRenewals + finance — August invoicing

Who it helpsPaula in finance (real reconciliation) and every customer on the list (a card payment can now settle a real invoice).

ByClaude

scripts/send_unbilled_amc_to_sherosh.py, outputs/august-renewals-not-billed-2026-08-22.csv
ZohoDoneAction plan sent to owners and finance

Before25 findings and no agreed sequence — investigation had outrun action

AfterOne plan with a named owner per step, arranged backwards from the 30 Sept 2025 CT deadline; sent to Omar, Liliana and Paula

Who it helpsThe 2025 return has five weeks and depends on a physical stock count that has not started

ByClaude

SEO & marketingDoneReview claim on the blog corrected to what Trustpilot actually shows

BeforeA blog post opened with "Waterclub has over 5,000 5-star reviews". Trustpilot shows 3,948 reviews rated 4.9 out of 5 — so the number was overstated and describing every one of them as five-star was not something any rating page claims.

AfterIt now reads "rated 4.9 out of 5 from more than 3,900 reviews on Trustpilot", with a link to the profile so anyone can check it in one click. Rounded down rather than up.

AffectsBlog — review and rating claims

Who it helpsAnyone quoting the website to a customer. A review claim that cannot be checked is the one thing that can get a page penalised, and it is also the kind of thing a competitor reports.

ByClaude

SEO & marketingDoneSearch engines were being asked to wait 20 seconds between pages

BeforeA file on the website told every search engine to pause 20 seconds between pages. Google ignores that instruction, so it never slowed Google down — but Bing does honour it, so the only effect was making the site slow to index everywhere except the engine it was aimed at. The same file was also blocking WordPress from applying its own crawling rules.

AfterReplaced with the standard set and no waiting instruction. Deliberately kept minimal — this is the one file where a mistake can remove a whole site from search. Checked afterwards that the home page, the shop, an article and the sitemap are all still reachable.

AffectsWebsite — search engine crawling rules

Who it helpsEverything we publish. New articles now get picked up as fast as the search engines are willing to fetch them instead of one page every twenty seconds.

ByClaude

scripts/fix_robots_txt.py, waterclub.ae/robots.txt
SystemDoneChange log can no longer be wiped by its own rebuild script

BeforeThe script that rebuilds the change log wrote the file from scratch from its own fixed list. Anything logged since that list was last edited — 15 entries, including everything from today — would have vanished the next time anyone ran it.

AfterIt now keeps every entry it does not recognise, takes a copy of the file before touching it, and reports how many it carried over. Proved by running it: 49 entries in, 49 entries out.

AffectsChange log — rebuild

Who it helpsEveryone reading the change page. The record of what was done stops being one accidental command away from disappearing.

ByClaude

scripts/backfill_changelog.py
SEO & marketingDoneEight more articles published — the questions customers type that had no UAE answer

BeforeThe blog had 44 articles. Nobody in the UAE market answers the informational searches — 'is alkaline water worth it', 'will a filter reduce my water pressure', 'what does bottled water actually cost a family'. Those searches were being won by property portals and forums.

AfterEight new articles, 1,570-1,720 words each, on their own permanent addresses: alkaline water, filtered water for coffee and espresso machines, whole-house versus kitchen, what a UAE family really spends on bottled water, moving home, what happens if you skip a filter change, water pressure, and Dubai water with hair and skin. Each carries its own search title and description, four links out to the rest of the site, and links sideways to its sisters. All eight are in the sitemap.

Who it helpsThe blog now answers 52 real questions instead of 44. Every one of these is a search a customer types before they ever hear our name, which is the cheapest place to meet them.

ByClaude

SEO & marketingDoneCrawl throttle removed from robots.txt

BeforeThe file telling search engines how to read the site asked them to wait twenty seconds between pages. Google ignores that instruction, so it was never slowing Google down — but Bing and Yandex obey it, so the site was crawling at a standstill everywhere except the one engine it was aimed at. The same file was also blocking WordPress's own crawl rules from ever reaching it.

AfterReplaced with the standard WordPress rules plus the sitemap address. Nothing is blocked that should be readable; the checkout and account pages are deliberately left crawlable so search engines can read the 'do not list this' tag on them and drop them.

Who it helpsNew articles can be found and listed in hours rather than weeks on every search engine, not just Google.

ByClaude

SEO & marketingDoneReview claim on the blog corrected to what Trustpilot actually shows

BeforeA blog article opened with 'Waterclub has over 5,000 5-star reviews'. Trustpilot's own page shows 3,948 reviews at 4.9 out of 5 — so the sentence overstated the count and described every review as five stars, which no rating page claims.

AfterRewritten to say only what the Trustpilot page says, rounded down rather than up, with a link so a reader can check it in one click.

Who it helpsA rating claim a customer can verify is worth more than a bigger one they cannot, and an unverifiable claim is exactly the sort of thing that gets a site penalised.

ByClaude

SystemDoneSaturday office announced to the team, running until AED 500k/month

BeforeFive-day office week. Sales the week of 15–21 Aug closed AED 43,598 — half of the previous week (AED 77,839) — while leads coming in stayed high.

AfterAnnouncement sent to the eight sales + renewals people: office is open **Saturdays 10:00–16:00 from 29 August**, every week until closed monthly sales hit **AED 500,000**. `.ics` attached so each person adds it to their own calendar in one tap. The daily report now shows month-so-far, target and per-day-to-target so everyone can see where we stand.

AffectsTeam schedule — Saturday working days

Who it helpsWhole sales + renewals team — a clear shared target that ends the Saturday requirement automatically the day we hit it. Nobody keeps working Saturdays after the reason is gone.

ByClaude

scripts/announce_saturday_work.py, outputs/waterclub-saturdays.ics, scripts/send_daily_report.py
ZohoDoneTwo of the five correcting journals posted

BeforeEntry 211 credited Ms. Liliana a second time for a VAT payment already credited in entry 197, and entry 197 closed the Feb-Apr 2026 VAT quarter a second time over the top of Zoho's own return journal 210 — so the quarter was recorded three times and she was credited twice.

AfterPosted as entries 222 and 223, both dated today, each carrying its reason in the note. Nothing deleted, nothing dated in a filed year touched, both originals left in place beside the correction.

Who it helpsRemoves AED 45,291.34 of double credit to Ms. Liliana and AED 45,291.34 of cash the company does not hold.

ByClaude

ZohoDoneCorrection to my own correction — entry 211 reinstated

BeforeI reversed entry 211 as a duplicate credit to Ms. Liliana. It was not one. It records her funding the AED 45,291.34 actually paid to the FTA in May, and removing it left Cash In Hand at minus AED 41,987.94 and made the books say Ms. Liliana owed the company AED 18,368.86.

AfterReinstated as entry 225, dated today with the reason written in. Cash In Hand is back to AED 3,303.40 and Ms. Liliana's account to AED 26,922.48 in her favour. The genuine duplicate, entry 197, stays reversed.

Who it helpsThe books stop under-recording what the company owes one of its owners, and Cash In Hand stops showing an impossible negative balance.

ByClaude

ZohoDoneTwo audit findings withdrawn after checking them against the ledger

BeforeThe audit reported AED 2,970,432 of imaginary cash from entry 167, and a Feb-Apr VAT payment that still needed recording once the duplicates were out.

AfterBoth wrong. A vendor payment of exactly AED 2,970,432 the same day takes the cash straight back out, so nothing was ever there. And the VAT chain is already complete — entry 210 raised it, a tax payment settled it, entry 211 funded it. Only AED 453.10 remains outstanding.

Who it helpsTwo large journals were withdrawn before posting; one of them would have invented a three-million overdraft.

ByClaude

SEO & marketingDoneGoogle Search Console connected and reading

BeforeNobody had ever looked at what Google says about waterclub.ae. The task was recorded as blocked on Omar's Google login.

AfterConnected with no login needed and no change to the website — Google already accepted the Analytics tag as proof. The account turned out to hold years of history. Our full list of pages was handed over so Google re-reads the 60 articles instead of the 36 it last saw.

Who it helpsWe can now see which searches bring people in and which pages they land on, instead of guessing.

ByClaude

SEO & marketingDoneFirst read of what Google actually shows people

BeforeWe were guessing which searches mattered, from competitor counts and keyword tools.

AfterThree months of real data: 1,600 visits from 169,000 times we were shown. The single biggest search in the UAE, 'best home water filters', showed our home page 34,768 times on page one and got nobody to click, because until this week the page was titled 'HOME'. Shower filters and glass bottles turn out to be real demand we have never written about.

Who it helpsThe next batch of articles is chosen from what people search for, not from what we assume.

ByClaude

respond.ioDoneFixed broken sales follow-up template (Sales 1.2)

BeforeThe saved reply reps send when a customer doesn't answer ended mid-sentence — 'You, and talk soon!' — and was written entirely about us ('I'm really excited', 'I can't wait to share our amazing options') with no reason for the customer to reply.

AfterRewritten to lead with the customer, acknowledge the missed call lightly, and ask the one question that decides the right product — which emirate they're in. Gives them something easy to reply to.

Who it helpsEvery rep uses this when a lead goes quiet. A broken sentence was reaching real customers, and a follow-up with no question in it rarely gets an answer.

ByClaude

ReportsDoneGrace's performance report and sales playbook

BeforeGrace asked how she could sell more. Nobody had looked at her actual numbers over a full year — a two-week snapshot had wrongly suggested her closing had collapsed.

AfterTwelve months of her invoices read properly. She is the top salesperson in the business: AED 1.17M, 39.3% of all sales revenue, on the fewest leads of anyone. Sent to her with a 14-message playbook replacing the templates that were letting her down.

Who it helpsThe real constraint turned out to be lead supply, not ability — she converts a lead into 4-5x more money than anyone else and receives the fewest. Rebalancing costs nothing.

ByClaude

SEO & marketingDoneEight new articles published (batch 4)

BeforeGoogle was showing waterclub.ae for shower filters, reusable bottles and 'best water filter' searches with no page that answered any of them — thousands of impressions a quarter earning almost no clicks.

AfterEight articles published, chosen from what UAE customers actually type into Google: do shower filters work, how often to change the cartridge, choosing a reusable bottle, a plain guide to under-sink filters, reverse osmosis or carbon, what makes a filter good, cold water throughout a villa, and how to check a company's certifications. The blog is now 68 articles.

Who it helpsCovers search demand we were already being shown for and never answered. Each one links onward to the finder, the comparison page and the shop.

ByClaude

ReportsDoneSales leaderboard no longer counts imported lists as leads

Before117 contacts uploaded in three batches on 13 and 16 August were counted as inbound leads, which is the whole of the 89/52/29 split the team argued over

AfterContacts created 6-or-more to the same minute are treated as an upload, not an enquiry; the real split is Grace 52, White 57, Katherine 55

Who it helpsClosing rates are comparable between reps again, and lead-fairness decisions are made on real numbers

ByClaude

SEO & marketingDoneHome page rewritten for the 'best home water filters' search

BeforeThe home page was titled as a label for the business, and 34,768 searches a quarter for 'best home water filters' saw it on page one and clicked it zero times.

AfterThe home page and the comparison page now read as an answer to somebody comparing filters. No claim that we are the best — only what the pages actually contain.

Who it helpsThe home page carries 110,002 impressions a quarter at 1% clicked. This is the widest single lever on the site.

ByClaude

SEO & marketingDoneFull search report sent — three months of Google, read end to end

BeforeNobody had ever seen what Google actually does with the site. Search Console had years of history in it and had never been opened.

AfterA report that says plainly: we rank fine and we are not clicked. 68,827 first-page views a quarter return 0.7%. Sent as a PDF so it forwards.

Who it helpsTurns a guess about SEO into a measured baseline, and names the three fixes worth the most: the home page (done), the three competing shower pages, the glass bottle page.

ByClaude

WebsiteDoneMedical claims removed from the shop pages

BeforeProduct pages claimed dermatologists recommend our showers for eczema and acne, that the MEGA RIO is 'dermatologist-approved for eczema households', that TARA is for 'kidney patients, dialysis-prep households', that the filter enhances the immune system and reduces hair loss.

After18 passages across 8 pages rewritten to describe what the equipment does. TARA now defers to the customer's own doctor rather than speaking for them. Nothing about the products, prices or the 29% water saving changed.

Who it helpsA health claim next to a Buy button is a claim we are being paid for. The blog was cleaned of these earlier; the shop was not, and the shop is where the money changes hands.

ByClaude

ZohoDonePaula's full Monday report sent

BeforePaula had five separate emails from this week and no single view of what to do, what changed in the ledger, or why item cleanup is refusing.

AfterOne report sent (cc Omar and Liliana, PDF attached): five Monday tasks, four figures only she can explain, AED 16,941 of unclaimed input VAT and bad-debt relief, and the abandoned November stock count that blocks everything.

Who it helpsMonday becomes a fifteen-supplier job instead of a 133-line one, and the one decision blocking the stock fix is named.

ByClaude

ReportsDoneGrace's reopen list — 579 of her own past customers, best call first

BeforeGrace asked to reopen the 500+ customers on her account but had no list; her buyers were only visible one invoice at a time in Zoho.

AfterA phone page behind the dashboard password with 579 customers she personally sold to who have not bought for six months or more, AED 2.17M of past business, ordered by what the call is worth. Each card says why she is calling and writes the WhatsApp message for her. Anyone already on the renewals list, the filter-chase list, mid-conversation with a colleague, or marked inactive is left out.

Who it helpsAED 2.17M of past business she can work through in priority order, without three people asking the same customer for three different things in the same week.

ByClaude

ShopDoneGlass bottle pages now describe the bottle

BeforeBoth glass bottle pages described the Aqua Bar restaurant dispensing system — CO2 cylinder, chiller module, 'replaces AED 60,000/year of San Pellegrino' — on a page selling a AED 21 bottle. The category block had been pasted onto the two products in HO.RE.CA that are not machines.

AfterBoth rewritten for the person actually searching: what the glass is, the grip moulded into it, what it is for, and which of our other bottles to buy instead if this is the wrong one.

Who it helpsThe plain bottle page is the third most-shown page on the site — 8,635 views a quarter from people searching 'glass water bottle dubai'. They were landing on a page about restaurant plumbing.

ByClaude

SEO & marketingDoneShower filter pages stopped competing with each other

BeforeFour pages sold the same shower filter in different quantities and Google treated them as four answers to one search. Nearly 8,000 views a quarter split three ways, all stalled around position 30 — which is nowhere.

AfterAll the pack pages now point Google at one main page, which gained a list of every pack and its price so nobody loses the option they wanted. Nothing was deleted and every pack is still on sale.

Who it helpsThe demand is real — 'shower filter', 'shower filter cartridge' and 'water filter for shower' are about 3,000 searches a quarter — and we were splitting our own answer three ways.

ByClaude

respond.ioDoneTraced Grace's ghosted-quote problem to its cause

BeforeGrace reported losing deals to silence after sending prices; assumed no follow-up existed

AfterProved the automatic chase runs correctly for her (157/160 categorised, all 43 quotes chased, 1 in 4 customers return). Found the real gap: 6 customers who came back and got no reply, and 127 colleague conversations that never entered any chase because no closing reason was ticked

Who it helpsStops a wrong fix being built, and names a leak that can be closed

ByClaude

ReportsDoneGrace's day-by-day call plan

BeforeGrace had 579 dormant customers and no order to work them in; six people who answered a follow-up had been waiting up to 255 days with nobody watching.

AfterTwelve working days, every person named with their number: day 1 is the six waiting on a reply, then business accounts, machines with no plan, lapsed plans, repeat buyers.

Who it helpsAED 2.17M of past business worked warmest-first instead of at random.

ByClaude

Friday 21 August 2026

ZohoUnder construction40%VAT reclaim on old bad debts

BeforeOld unpaid invoices had output VAT paid to the FTA that could have been reclaimed under FTA VATP024 — nobody had gone through and identified which invoices qualify.

AfterCandidate list built at `outputs/bad-debt-vat-relief-candidates.csv` — around **AED 15,000+ on the next return, up to AED 19,000 across the next two**. Drafted emails to Paula (finance) and Liliana ready to go. A parallel note on **bunching supplier purchases** into high-output-VAT quarters was written up. Waiting on Paula to confirm the write-off + notify steps have been done in Books.

AffectsFinance — VAT reclaim + cash-flow timing

Who it helpsWaterClub (real cash back from the FTA) and Paula (a clean, row-by-row list to work rather than trawling Books).

ByClaude

scripts/build_bad_debt_vat_list.py, outputs/bad-debt-vat-relief-candidates.csv, outputs/vat-bunching-purchases.md, outputs/paula-vat-access-email.md
ZohoUnder construction30%167 August renewals never billed at all

BeforeOf the 238 renewals due in August, 167 have no invoice raised in Books — not merely unpaid, but never billed. Discovered while building the AMC call list.

AfterThe 167 are on the list and being chased by CS as if they were unpaid, but there is no invoice for the customer to pay against. Paula needs to raise them in Books before any card payment can actually reconcile. Question for Omar: is the invoice supposed to be raised on renewal (finance) or on collection (CS)?

AffectsRenewals + finance — invoice raising

Who it helpsFinance (real reconciliation instead of shop-order-by-hand) and CS (a customer paying against a real invoice).

ByClaude

outputs/2026-renewals-dashboard.html
SystemUnder construction15%Family Club — the loyalty programme

BeforeNothing in the business is designed to stop customer decay after year one. Year-one retention 92%, year-five retention 18%. A customer buys, gets installed, gets filter changes, and only hears from us when we want money.

AfterFull programme written up in `outputs/family-club-full-programme.md` — grounded in five years of WaterClub's own sales data. Not points, not discounts: reasons to stay and reasons to talk. Waiting on Omar to read and decide which pieces to build first before anything is shipped to a customer.

AffectsLoyalty programme (customer retention)

Who it helpsEvery existing customer, and the CS + sales team who lose renewals to "a cheaper filter man" in year three because there's nothing holding them.

ByClaude

scripts/build_family_club_doc.py, outputs/family-club-full-programme.md
SystemUnder construction10%Second Mac as a warm standby, so the whole system survives Dubai going dark

BeforeEverything runs on one Mac Mini in Dubai. If it dies, the Telegram bot, the dashboard refresh, the renewal alarm, the alerts — all of it stops. There is no standby.

AfterWritten plan at `plans/2026-08-21-imac-failover-mirror.md`. Tailscale (private network), Syncthing (file mirror) and an outside referee will let an iMac in Switzerland take over automatically if the Mini dies. Three owner decisions needed first: move the Mini onto Omar's own Tailscale network, allow `.env` to sync between the two Macs, and rotate both sudo passwords after setup.

AffectsBusiness continuity — automatic failover to Switzerland

Who it helpsOmar and Liliana — one power cut, one dead SSD or one router problem can no longer take everything offline at once.

ByClaude

plans/2026-08-21-imac-failover-mirror.md
ShopBlocked0%PRO plan button on the maintenance page — points at the wrong product

BeforeThe PRO plan (Fizzy / Aqua Bar sparkling) is advertised on `waterclub.ae/maintenance/` at AED 1,799.

After**Broken.** The button links to an unpublished product, so WordPress redirects the customer to the drinking-water plan and charges them AED 1,499. The advertised price and the price actually charged do not agree. Waiting on Omar to decide which price is right (the maintenance page and the shop disagree everywhere else that PRO appears).

AffectsShop — AMC PRO plan checkout

Who it helpsAny customer with a Fizzy or Aqua Bar unit trying to renew the PRO plan.

ByClaude

waterclub.ae/maintenance/
DashboardPending0%Handler ticks written back into the SHEROSH COLLECTION 2026 sheet

BeforeThe AMC call list captures every handler tick (Contacted / Renewed / Not now), but the SHEROSH COLLECTION 2026 Zoho Sheet — which Omar and finance also watch — does not see any of it. Two records that need to agree, don't.

After**Not started.** Needs a small writer that reads the `/api/outreach` store and pushes each new tick into the correct row in the Sheet. The Sheet's column layout has to be pinned first so a header change doesn't silently break it.

AffectsRenewals — cross-system consistency

Who it helpsOmar, Paula and anyone reading the Sheet — a single truth for who has been contacted, who has paid, and who has not.

ByClaude

SHEROSH COLLECTION 2026 sheet
WebsitePending0%Arabic version of the site

BeforeSite is English-only. A share of Dubai searches for water filters happens in Arabic and lands somewhere else.

After**Not started.** Strategic decision — needs Omar to commit to the work (translation, RTL layout, ongoing maintenance) or explicitly park it.

AffectsWebsite — Arabic locale

Who it helpsArabic-speaking customers, and WaterClub's reach in the half of the market English-only misses.

ByClaude

SystemDoneChange log for the whole team

BeforeModifications happened silently. There was no team-visible record of what shipped, what was under construction, or who a given change was actually meant to help.

AfterEvery write to Zoho, the website, respond.io or this system now logs a before/after entry to `data/changelog.jsonl`, with a status (done / under construction / pending / blocked), a percent-complete, and a note of who it helps. The daily report reads the last day's entries and shows them under 'What changed since yesterday'.

AffectsDaily report — 'What changed since yesterday' + 'Under construction / pending' sections

Who it helpsThe whole team — transparency on what shipped, what's coming, and who a change was for.

ByClaude

scripts/log_change.py, scripts/build_changelog_block.py, data/changelog.jsonl
SystemDonePublic change-log page — no password, updated daily

BeforeEven after the log existed, only people on the daily-report email saw it. The team had no bookmark for 'what have we shipped this week?'

AfterA public page went live at **https://waterclub-changes.pages.dev** — no password, filter buttons at the top (All / Done / Under construction / Pending / Blocked), grouped by day. Republished automatically every evening at 20:00 UAE as part of the daily report job.

AffectsChange log — waterclub-changes.pages.dev

Who it helpsEvery member of the team — a single URL to bookmark that always shows what shipped, what's coming, and who each change was meant to help.

ByClaude

cloudflare-setup/publish_changelog.sh, scripts/build_changelog_page.py, scripts/daily_report.sh
ReportsDoneDaily report opened up to the whole team

BeforeThe daily report was addressed to Omar with Liliana, Grace and Sherosh on CC — a private four-person briefing.

AfterEight team addresses are now in the TO line (Grace, White, Katherine, Jithin for sales; Sherosh, May, Bushra, Pinto for renewals). Omar and Liliana ride the CC. The email now reads as a team briefing rather than a private one.

AffectsDaily report — recipient list

Who it helpsEvery sales rep and every renewals handler — the same numbers at the same time, at 20:00 every evening.

ByClaude

scripts/send_daily_report.py

Wednesday 19 August 2026

SystemDoneAutomated cloud backups actually running

BeforeUpdraftPlus was installed on the site but had no destination and no schedule — the last backup was from 22 December 2025. If the site fell over there was nothing to restore from.

AfterDestination set to Google Drive on liliana@waterclub.ae. Database backed up daily, whole file tree weekly. 30 database snapshots and 8 file snapshots kept. First real backup ran the same day (12 minutes for the full site).

Who it helpsOmar and Liliana — the site can be restored from any point in the last month if anything breaks.

ByClaude

UpdraftPlus settings
WebsiteDoneSite security hardened and the product-finder quiz rebuilt

BeforeNo 2FA on WordPress. No captcha on public forms. 32 plugins installed, including one (WP File Manager) that carries a known vulnerability. Brand colours were the wrong Pantones. The product-finder quiz was broken because Divi was mangling its inline JavaScript.

AfterWP 2FA installed (Omar enrolled with Microsoft Authenticator). hCaptcha live on login, register, checkout and Contact Form 7. Divi licence wired to WaterClub's account. WP File Manager deleted; plugin count went from 32 to 21. Official WaterClub Pantones (#155C9A blue, #6DA130 green) applied across 9 Divi colour options. Product-finder quiz reduced from 5 questions to 4 (budget removed on Omar's call), rebuilt with proper emirate-based routing and kitchen-fit logic. Its JavaScript was moved out of a Divi code module (which was breaking it) and into a WordPress Code Snippet hooked directly into the page.

Who it helpsOwners — reduced attack surface. Customers — brand looks consistent and the finder actually recommends the right product now.

ByClaude

data/wp-backups/, Code Snippet #70
DashboardDoneSales leaderboard moved onto the live 5-minute push

BeforeSales figures refreshed once, overnight at 04:30 — so the 7-day leaderboard was stale for most of the day.

AfterThe 5-minute refresh now recomputes and pushes the leaderboard block as well. Adds ~15 seconds per run. If Zoho or respond.io blip during a push, the block is left out for that turn and the board keeps showing the last good version.

Who it helpsOmar, Liliana and the sales team — the leaderboard on the board matches reality within five minutes, not the next morning.

ByClaude

scripts/rebuild_dashboard_data.py, scripts/build_sales_leaderboard.py
DashboardDoneHours tab added to the dashboard

BeforeWork-hours data existed on its own page but wasn't reachable from the main dashboard rail — nobody found it.

AfterHours is now a tab in the main rail alongside Renewals, Field, Money and the others. Shows office team by their first→last *message actually sent* in respond.io (not the green dot, which lies about presence), and technicians by their first→last scheduled field job. Refreshed 3× a working day (09:00, 14:00, 20:00).

Who it helpsOmar — a quick glance tells you who is actually working when.

ByClaude

scripts/work_hours.py, dashboards/waterclub/hours.html
ReportsDoneDaily one-page report by email

BeforeNo end-of-day summary. The team learned what shipped ad-hoc from Omar, and Omar had to open the dashboard to see the numbers.

AfterEvery day at 20:00 UAE a one-page email lands, showing money owed, AMC renewals overdue, six-month lookahead, sales team last 7 days, and any auto-flag (a rep with 30+ leads and zero close, or stale figures). PDF attached so it can be forwarded on WhatsApp.

AffectsDaily report — 20:00 UAE

Who it helpsOmar, Liliana and the CS + sales leads — same picture, same time, every day.

ByClaude

scripts/send_daily_report.py, config/com.waterclub.daily-report.plist

Tuesday 18 August 2026

SystemDonePrevious developer's access removed from every system

BeforeThe prior developer's email still had admin access to WordPress, the Divi theme, Sucuri security alerts, Zoho and Cloudflare — roughly a year after he left.

AfterReassigned WordPress admin (user 1, owning 35 posts + 23 pages + 41 products) from nikos.art@gmail.com to liliana@waterclub.ae. Divi licence moved onto the WaterClub username. Sucuri alerts moved to ops@waterclub.ae. The Cloudflare Turnstile plugin (which held his keys) was deleted. The whole `wp-content/` tree was searched — no trace of his email remains.

Who it helpsOmar and Liliana — nobody outside the company can reach the site, the emails, or the Zoho org any more.

ByClaude

data/wp-backups/
respond.ioDoneAisha's share of leads bumped to 55% and her mistakes corrected

BeforeAisha was only receiving about 1 in 10 fresh leads. She was also quoting prices she'd invented (AED 828, 999) and confusing kitchen products against each other.

AfterA new redirect step in the auto-assigner watches the share and moves a lead from a human to Aisha whenever her share drops under 55%. Her prompt was corrected on two fronts: **desalinated UAE tap has no calcium** (so 'keeps the good minerals' is a lie here — the pitch was rewritten to chlorine / microplastics / eco), and a **kitchen-fit rule** was added so she never quotes cabinet dimensions.

Who it helpsAisha and any customer who lands with her — faster response, no made-up prices, and the right pitch for UAE water.

ByClaude

scripts/respond_auto_assign.py, outputs/aisha-prompt-live.txt
ZohoDoneThe retired AED 588 plan stopped being billed

BeforeFor a year, Zoho Books had been quietly billing the AED 588 plan instead of the AED 708 RIO plan — 796 line items, AED 95,520 under-charged — because the correct 708 item was switched off and seven items charging 588 were the only ones staff could pick from.

AfterAt Omar's instruction, the AED 708 item was switched back on, renamed **'WaterClub Maintenance Plan — RIO'** so it's actually recognisable in the pick-list, and all seven 588 items were switched off. No invoice was altered — items just disappeared from the list staff choose from. The number of invoices raised on a retired price dropped from 819 a year to 23.

Who it helpsPaula in finance, and every customer we were quietly undercharging — staff can no longer accidentally pick a wrong price.

ByClaude

scripts/fix_zoho_588_plan.py, scripts/zoho_amc_item_audit.py
WebsiteDoneLive site trimmed: navigation, shop, legal pages, /compare

BeforeNav had 10 items nobody used. `/shop` was hidden behind category pages. Legal pages were 2022 boilerplate. There was no `/compare` page. The homepage was quoting a support number that had changed.

AfterNavigation trimmed to what people actually click. `/shop` rebuilt with a tabbed grid (Kitchen, Villa, Sparkling, …). `/maintenance` redesigned around 7 clear cards. `/compare` page built with 20 machines in 4 tabbed tables. Returns & Refunds and Terms & Conditions rewritten from scratch (free install, AED 199 service-visit fee, TRN and address named, Paymennt as the gateway). Homepage: six real Google + Trustpilot quotes added, hours line changed to "Order 24/7 · WhatsApp 9am–9pm".

Who it helpsAny customer visiting the site — clearer navigation, honest legal pages, better product comparison, correct opening hours.

ByClaude

scripts/push_legal_pages.py
SystemDoneTelegram bot online, and alerts routed through it

BeforeNo bot. No monitoring. A system failure (Zoho auth dying, the dashboard freezing, the nightly rebuild silently skipping) would go unnoticed until someone happened to look.

After**@waterclub_admin_bot** is live in the WaterClub Admin group, in an Alerts topic. Ten checks run on their own intervals — the bot, Zoho auth, respond.io session, dashboard freshness, Aisha's round-robin, the nightly rebuild, the AMC and filter chase pages — and any failure lands as a single, deduped Telegram message with three buttons: 🔧 Fix this (opens a new topic with a Fix agent primed on the alert), 🔕 Snooze 1h, ✓ Ack. A separate Cloudflare Worker watches for the Mini going offline, since the Mini can't tell you it's offline.

Who it helpsOmar and Liliana — one place any problem shows up, with a one-tap fix, whether the Mini is up or not.

ByClaude

apps/command/bot.py, scripts/checks/, cloudflare-alerts/worker.js

Monday 17 August 2026

ShopDoneQuote system end-to-end, with a real pay-now button

BeforeThere was no formal quote. Reps sent numbers over WhatsApp and the customer had to be walked into a manual invoice to pay.

After`/quote` builds a branded WaterClub quotation (HTML and PDF) from the approved product catalogue, complete with the rep's mobile in the signature, warranty and maintenance blocks, and a green **Pay AED …** button. The button creates a pending order in the shop and lands the customer on WaterClub's own card checkout at the correct total.

Who it helpsGrace, White, Katherine and Jithin — a professional document to send, and the customer can pay in a single tap rather than waiting on Paula to raise an invoice.

ByClaude

scripts/quote_generator.py, data/product_catalogue.json, .claude/commands/quote.md
respond.ioDoneEvery Trustpilot review answered, with the hard ones routed to Sherosh

BeforeTrustpilot reviews were piling up unreplied. Bad reviews sat in public with no company response next to them.

AfterAll 3,949 reviews replied to in one 95-minute run. 3,731 five-star got a warm first-name reply; the 20 sub-four-star each got a hand-written reply written to plant reasonable doubt without conceding the customer's version. Sherosh gets a weekly digest at wecare@ with the 20 hardest cases, matched to Zoho where possible, with a suggested action and a direct reply link on each.

Who it helpsSherosh (the escalation handler) plus every visitor reading reviews before buying — the wall of unanswered reviews is gone, and the negative ones now have a considered company voice next to them.

ByClaude

scripts/trustpilot_pull_reviews.mjs, scripts/trustpilot_bulk_reply.mjs, scripts/send_sherosh_reviews_digest.py
DashboardDoneSherosh and May added to the sales leaderboard, with a 6-month trend view

BeforeThe board only showed Grace, White, Katherine and Jithin. Sherosh's and May's renewals collections were invisible on it.

AfterThe leaderboard now shows six people, with Sherosh and May tagged as customer-service so it's honest about where the money came from. Alongside it, a six-month trend table shows each person's month-on-month change: Sherosh has grown every month since May.

Who it helpsSherosh and May — their work is visible on the sales board for the first time. Omar and Liliana — a truer picture of who is bringing in what.

ByClaude

scripts/build_sales_leaderboard.py
Field teamDoneThree years of the old field system decoded

BeforeNothing was known about the pre-Zoho field system (Tookan). Nobody could say how many jobs a technician did in a day, how long a job took, or how much of the driving was avoidable.

After22,615 stops covering 5,988 customers, from May 2023 to April 2026, read out and analysed. Measured: 85-minute cycle per job (55 on-site + 30 driving), 5–6 jobs a day, 56% of the work is filter changes. **521 paying customers are past due a filter change with nothing booked** in the new system (AED 1.58M lifetime spend, typically 84 days late) — a list handed to CS.

Who it helpsOmar and Mr Pinto — real numbers to make routing and diary decisions against, plus a specific list of 521 customers to bring back before they forget about us.

ByClaude

scripts/tookan_analyse.py, scripts/tookan_routing_gain.py, outputs/field-changeover-gap.csv
respond.ioDoneVilla campaign: four rep-specific flyers plus Aisha sending it herself

BeforeNo villa marketing material. Villa prices on the site were out of date. Aisha didn't know to mention the free tank cleaning offer or hand a customer a flyer.

AfterA branded villa flyer went through 10 design rounds; the monochromatic v10 was approved. Four per-rep versions (Grace, White, Katherine, Jithin) plus one for Aisha are live on the dashboard's media folder. Aisha's prompt was updated so the moment she confirms a villa she sends her own flyer proactively. Villa prices corrected everywhere — Basic 4,499→5,339, Semi-Advanced 8,855→9,899, Full 13,999→15,000.

Who it helpsThe four sales reps — professional villa collateral. Any customer asking about villa — right prices, right offer.

ByClaude

scripts/respondio_update_aisha_prompt.py, outputs/aisha-media-catalog.md
WebsiteDoneWebsite, shop and team replies brought in line

BeforeWebsite, shop, catalogue and canned replies disagreed on every AMC price. Some plans advertised without a product behind them so the customer got a WhatsApp instead of a checkout.

After`waterclub.ae/maintenance/` set as the single source of truth. All five yearly plans agree on price everywhere (RIO 708, drinking 808, MEGA RIO 949, Villa Semi 1,399, Villa Full 1,799). The three plans that had no product were created in the shop and Zoho Books so the buttons on the maintenance page now take the customer to a real checkout. The 11 rental listings were unpublished at Omar's instruction. FAQ page rewritten with the correct install times (20–45 min for drinking, 3–4 hrs for villa).

Who it helpsAny customer visiting the site — the price they see is the price the shop actually charges, and every button works.

ByClaude

data/product_catalogue.json, scripts/create_villa_amc_products.py, scripts/create_zoho_amc_items.py

Friday 14 August 2026

DashboardDoneThe board updates itself every five minutes

BeforeThe dashboard was fully rebuilt and republished every five minutes — roughly 288 times a day. That was going to blow through Cloudflare's monthly deploy allowance in a fortnight, and page loads were slow while the rebuild ran.

AfterNow the Mini pulls only what changed from Zoho Books and the shop (≈11 seconds), pushes the figures to Cloudflare, and the open page asks for them every two minutes and swaps them in with no reload. A full rebuild runs once a night at 04:30. If the numbers on screen ever get older than 10 minutes, the board itself flags it in red.

Who it helpsOmar and anyone looking at the board — figures are never more than 10 minutes old, and the board will tell you itself if that ever slips.

ByClaude

scripts/rebuild_dashboard_data.py, scripts/nightly_dashboard.sh

Thursday 13 August 2026

DashboardDoneDashboard moved onto WaterClub's own Cloudflare account

BeforeThe dashboard was hosted on the operator's personal Cloudflare account — WaterClub did not own where its own customer data was living, and the password gate could silently be bypassed.

AfterLive at https://waterclub-dashboard.pages.dev, owned by omar@waterclub.ae. Every publish now proves the password gate is actually stopping customers before the URL is shared, and rolls the whole deploy back if it can't prove it.

Who it helpsOmar and Liliana — WaterClub owns the platform, and it is impossible to accidentally push customer data to a public URL.

ByClaude

cloudflare-setup/setup_own_cloudflare.sh

Tuesday 11 August 2026

ZohoDoneZoho Books and CRM connectors brought back to life

BeforeZoho reads were failing silently — the `requests` package was missing from the workspace's Python environment, OAuth tokens were never being loaded from `.env`, and the wrong token names were in use.

AfterBoth connectors verified live against WaterClub's Zoho org (724133677). A shared `skills/connectors/zoho_env.py` module now loads `.env`, checks the OAuth scope against the service being asked, and mints the correct token every time.

Who it helpsThe whole system — anything that needs to read Zoho (renewals, insights, field, invoices) now works. Nothing was reachable before.

ByClaude

skills/connectors/zoho_env.py
DashboardDoneFirst renewals dashboard, joined to the SHEROSH COLLECTION 2026 sheet

BeforeRenewals were being chased from a Zoho Sheet by hand. No shared view of who was overdue, how much money was at stake, or who was collecting.

AfterLive dashboard showing 1,423 active renewal customers with per-row WhatsApp buttons and handler pills (wecare / gogreen). Automatically merges with the existing SHEROSH COLLECTION 2026 Sheet so nobody has to duplicate work — 815 of 1,423 customers matched to it by invoice.

Who it helpsSherosh and May — one place to see the whole collection pipeline rather than a scattered sheet.

ByClaude

scripts/renewals_server.py, outputs/2026-renewals-dashboard.html