BeforeZoho still offered WC - SMART PLAN 588 and it was billed 36 times in August, the last on the 23rd. Two different items both meant the RIO plan at 708, and the one the office actually uses was set to charge 788.
After588 is off the invoice screen. One 708 item remains, the one the office already invoices with, now priced 708 instead of 788. No invoice was altered and every step reverses with --undo.
Who it helpsRIO renewals bill 708 as Omar set, and there is only one item to pick, so the wrong one cannot be reached for.
ByClaude
BeforeBoth opened their lists with the office password, which also shows money owed and every salesperson's figures
AfterEach emailed their own password plus their new personal filter-chase link; all four renewals handlers now have a password that opens only their own work
Who it helpsA handler sees their own customers and nothing else
ByClaude
BeforeA flyer answer created a respond.io contact assigned to the rep, but the conversation stayed closed so it never appeared in their list of things to do; nothing reached Zoho CRM at all
AfterThe conversation is opened onto the rep's queue, and the person is created as a Zoho CRM lead owned by that rep with what they said about their kitchen written on it; anyone already on file gets a note instead of a duplicate
Who it helpsThe rep sees the lead where they already work, and it is on the CRM list the business plans from
ByClaude
Before146 items whose own name said DO NOT USE, DONOTUSE or DUPLICATE, 6 rental items that had been unpublished from the shop in August but were still selectable in Zoho, and 7 audit-confirmed duplicates with a live twin — 159 in total, sitting on the picker where staff had billed AED 840,025 against them by mistake in the last twelve months.
AfterAll 152 switched off. The 140 that would not budge earlier were held by Paula's abandoned November stock count. Rather than scrap her count, the count was pruned to the 311 real items she still needs to count — her setup work is intact — and the 143 junk items were removed from it and then deactivated. The count backup and every write is reversible from ledger files.
Who it helpsNobody can pick a DO NOT USE, duplicate or rental item on an invoice from now on. That closes the AED 840k a year of mis-billing the old picker allowed.
ByClaude
BeforeThe water poll wrote the answer to the campaign database and told nobody. A person could tick 'message me on WhatsApp' and the rep whose QR they scanned never heard about it — the only reader was the 20:00 email, hours later, as a count with no names.
AfterEvery answer that asks to be contacted is handed to that rep within two minutes: the person is created in respond.io and the conversation assigned to them, and the rep gets an email with the number, what is wrong in their kitchen and their own words.
Who it helpsA person standing at a stall who asks to be called is the warmest lead the campaign can produce, and it was being lost.
ByClaude
BeforeFriday's report told her she was given far fewer leads than colleagues (89/52/29) and called it the biggest thing to fix
AfterCorrected: a bulk contact upload had been counted as real enquiries; the real 75-day split is 172/214/198 and there is nothing unfair to put right
Who it helpsShe is not working from a wrong picture of her own position, and the rest of the report stands
ByClaude
BeforeWhite had no picture of his own book; 1,078 conversations were invisible to him and nobody had told him why his numbers looked flat
AfterOmar's note emailed to care@waterclub.ae cc Omar, PDF attached, replies routed to Omar — his real figures, the 717 reconnect leads and three daily habits
Who it helpsHe starts Monday knowing the gap was the tools, not him, and knowing exactly which names to call first
ByClaude
BeforeHer conversion rate and the 69 customers who came back after a quote were measured but never told to her
AfterEmailed her own figures, the three lists on her page and the AED 54,920 left over 7 working days; deliberately no comparison to colleagues
Who it helpsThe warmest names get called first instead of going cold in the silence after a quote
ByClaude
BeforeThe day window was built four hours early, so any answer given after 20:00 Dubai fell outside 'today' and was credited to nobody — Omar's own test answer on Katherine's link counted as zero.
AfterThe window is read as Dubai midnight to midnight properly. His answer now shows against Katherine.
Who it helpsAn evening answer at a community stall is the most likely kind, and it was the kind being lost.
ByClaude
BeforeThe flyer was a survey with a QR on it and no price anywhere; the banner had a QR and empty space below it; the online quiz thanked everybody the same way however bad their water was.
AfterFlyer front is a six-point tick list ending in a green band that tells three-ticks-or-more to scan or WhatsApp; the back carries all four system prices, what is included, Trustpilot and both mobiles. The banner carries the from-price. On the quiz, three or more problems swaps the ending for a WhatsApp button to the rep whose flyer they held, message pre-written.
Who it helpsA flyer that can be read on a doorstep and answers what it costs, and a quiz that hands the warmest answers straight to a salesperson instead of a thank-you page.
ByClaude
BeforeBoth opened their list with the office password, which also shows money owed and every salesperson's figures
AfterEach emailed their own password, opening only their own page; sent one email per person so no password reached the wrong mailbox
Who it helpsA renewals handler sees their own work and nothing else
ByClaude
BeforeSherosh and May opened their call lists with the main board password — the one that also shows the money owed and every salesperson's figures. The filter-change list was a single page holding both their halves, sorted apart by a button, so either could see the other's customers.
AfterEach of them has a password of their own. Sherosh's opens his renewals list and his half of the filter changes; May's opens hers. The other person's customers are not in the file at all, so there is nothing to reveal. Nobody was signed out — the board password still works everywhere, so Omar needs only the one he has, and the pages people already had open kept working.
Who it helpsAll four renewals handlers are now on their own way in, and each page holds only the customers that person is meant to call.
ByClaude
BeforeThe form promised a summary of what neighbours said, and only asked for a WhatsApp number.
AfterIt offers a suggestion for their own home and asks whether they want WhatsApp, email or a call — then asks only for that one detail. The rep's page shows the choice and opens the right button.
Who it helpsNobody is asked for a number they were never going to be called on, and the follow-up arrives the way the customer chose.
ByClaude
BeforeThe daily report said nothing about the outdoor campaign, so how many households answered the poll and how many agreed to be contacted was only visible to whoever opened the campaign pages.
AfterA section per evening: answers, opt-ins and how many named two or more water problems, per rep, plus whether each rep filed their day and the campaign running total. It flags a day left unfiled and a rep collecting answers but no opt-ins.
Who it helpsThe opt-in is the whole point of standing in a community all day, and now it is on one line in front of everyone every evening rather than counted by hand.
ByClaude
BeforeEveryone on the renewals team opened their call list with the main board password. That one password also opens the money owed, every salesperson's figures and all four call lists. And their short link went to the shared page, so taking the name off the end of the address showed all four lists at once.
AfterBushra and Pinto each have a password of their own, and a page that holds only their own customers — the other three lists are not in the file at all, so there is nothing to reveal. Their links are unchanged. Omar's password still opens everything, so he needs only the one he has. Sherosh and May are deliberately unchanged for now, because they are working their lists today.
Who it helpsA password now protects something real rather than hiding it, and nobody has to be trusted with figures they were never meant to see.
ByClaude
BeforeThe outdoor plan existed on paper only; no way to collect a household's answers and no way to file a day in the field.
AfterPoll page live at waterclub.ae/how-is-your-water/ with a QR per rep, answers landing on that rep's own outdoor-day page, and both reps emailed their private link, the car briefing sheet and the plan. Week 1 is Dubai Hills Estate from Monday 24 August.
Who it helpsEvery household answer is captured with the name of the rep who met them, and each day is filed from the phone before they leave the community.
ByClaude
BeforeIt was rebuilt only by hand, so a customer who had already been booked in stayed on Sherosh's and May's list until somebody remembered to re-run it. The date it measured 'overdue' against was also frozen at 17 August in the code, so nobody new ever became due.
AfterIt rebuilds and republishes every working morning at 07:50, alongside the salespeople's pages so it still costs one publish a day. Today's rebuild: 513 customers, AED 1,601,065 — 8 people dropped off because they have since been booked in.
Who it helpsSherosh and May stop calling customers who are already booked, and anyone newly overdue appears on the list on their own.
ByClaude
BeforeSherosh, May, Bushra and Pinto had a call list on a web page but nothing that told them each morning who to ring, who had gone quiet, or what they had collected.
AfterEach of them now gets their own 07:00 email, Monday to Saturday: what is still uncalled and what it is worth, the customers contacted three or more days ago who have gone quiet, what they have renewed, plus the filter list for Sherosh and May and the win-back list for Sherosh. Built from the same page they work, so it can never disagree with their screen.
Who it helpsThe money that is due gets chased from a list that puts the most overdue first, instead of whoever happens to be remembered.
ByClaude
BeforeFour scripts each kept their own copy of the words a customer uses to decline; they had drifted apart, and four people who had already said no were sitting on Mr White's warmest list
AfterThe vocabulary lives in one place and all four lists read it — 11 more declines caught on his list, Grace's checked and already clean
Who it helpsA rep is not sent to ring somebody who told us not to bother, which is what makes them stop trusting the list
ByClaude
BeforeHis cards showed a name and a line of what they said; making the call meant opening respond.io for each one
AfterEvery card carries the number, emirate, villa or flat, what they asked for, their email, when they first wrote in, and the last 14 messages behind a tap — 1,188 of 1,202 cards
Who it helpsHe can work the list straight off the page instead of switching apps for every name
ByClaude
BeforeThe overnight job failed four nights running (20–23 Aug) because a healthy tab was wrongly read as broken. A failed night stops before the call lists are rebuilt, so they kept an older read of Zoho — 16 customers who had already paid were still on the list to be chased. The alarm stayed silent because it only checked the job had run, not that it had worked.
AfterThe tab check was corrected, the lists rebuilt from a fresh read of Zoho and published — 453 customers, AED 420,209. The alarm now reads the job's own verdict on itself; tested against the last five nights, it stays quiet on the good one and fires on all four bad ones.
Who it helpsNobody is asked for money they have already paid, and a night that fails will say so instead of passing quietly.
ByClaude
BeforeOnly Grace received a daily email. White's walk wrote the file but emailed nobody, so his 20 waiting customers and 434 quiet quotes sat unread until someone opened a page.
AfterHis 05:30 walk now emails him at care@waterclub.ae around 06:35, Omar cc'd, PDF attached so it forwards on WhatsApp. Four faults were fixed first: a customer who asked us to stop messaging was top of his warmest list, five of fifteen names were mangled, the header count disagreed with the table, and the quiet-pile figure disagreed with his page.
Who it helpsThe warmest names he has reach his phone before he starts, and nobody who asked to be left alone is on the list.
ByClaude
BeforeThe conversation detail landed on the call pages this morning with nobody told, so the team would have carried on opening respond.io for every name without knowing they no longer had to.
AfterA note went to Sherosh, May and Grace (cc Liliana and Omar) explaining what is new, giving each their own link, and setting out six rules for using it properly — chiefly that a blank card means we genuinely do not know and must not be filled in from memory. It asks for a one-word reply so we can tell it was read.
Who it helpsThe change only pays off if the calls are actually made differently.
ByClaude
BeforeWhite had no page of his own. Every list we build reads the last message on a conversation, and on a chased thread that is the automatic follow-up — so 1,078 of his 2,488 conversations were invisible to all of them.
Afterhttps://waterclub-dashboard.pages.dev/white — his customers waiting, his quotes gone quiet, 708 leads to reconnect with, and his month against the AED 150,000 target. Own password, opens nothing else. Rebuilds itself every working morning.
Who it helps336 leads that no list had ever shown anyone, including a villa enquiry chased by templates and never answered by a person.
ByClaude
BeforeThe renewals, win-back and filter-chase call lists showed a name, a figure and a date. To find out where someone lives, what they wanted or what was last said, whoever was calling had to open respond.io and search for them.
AfterEach card now also shows their phone number, emirate, villa or flat, what they said they wanted, their email, when they first wrote in, and the last 14 messages of the conversation behind a 'Read the conversation' tap — photos and voice notes included. 652 of 1,044 renewal and win-back customers and 445 of 521 filter-chase customers are matched.
Who it helpsThe call can be made from the card. Nothing is guessed — a blank simply does not print.
ByClaude
BeforeA card showed a name, a number and one quoted line. To know what a lead had actually asked, been quoted or sent a photo of, you had to open respond.io and find the thread.
AfterEvery card carries the emirate, villa or flat, what they wanted, their email, when they first wrote in, and the last 14 messages of the conversation behind a tap — including the photos and voice notes, which open. 649 of the 650 leads have their conversation on the card.
Who it helpsWhoever rings can read the history and make the call from one screen, instead of switching to respond.io for every name.
ByClaude
BeforeA card gave a name and a quote only — she had to open respond.io to find out where somebody lived or what kind of home they had.
AfterEvery card shows the number, and where respond.io holds it, the emirate and whether it is a villa or an apartment. 227 of 650 carry a location; nothing is guessed.
Who it helpsShe can pick the Dubai villas out of 602 leads without opening anything else.
ByClaude
BeforeThe page was built once by hand — she would work through the names and find the same list waiting the next day.
AfterIt rebuilds and republishes every working morning at 07:50, twenty minutes after her daily email, re-reading her whole respond.io book for leads.
Who it helpsHer page stays a live picture of her day instead of a snapshot.
ByClaude
BeforeHer page needed the shared dashboard password — the one that also opens every salesperson's figures, the money owed and all four call lists.
AfterHer page has a password of its own. It opens her page and nothing else; the board password still opens both, so nobody needs two.
Who it helpsShe can reach her own work without being handed the keys to the whole business.
ByClaude
BeforeGrace had to enter the shared dashboard password every time she opened her page on her phone.
AfterHer page opens straight away. It is the only address on the site without a password; every other page and every data feed still refuses without one.
Who it helpsRemoves the one thing most likely to stop her using it each morning.
ByClaude
BeforeHer page showed 48 names, because the daily walk reads 320 of the 1,975 conversations she is actually holding. The rest were never looked at.
AfterAll 1,975 read. 602 leads to reconnect with, in three groups: 49 who asked something nobody answered, 478 where we spoke last then silence, 75 who only said ok. Existing customers, anyone the renewals team is calling, declines, suppliers and anyone she is mid-conversation with are all removed.
Who it helpsRoughly twelve times more warm names to call, each with the message already written.
ByClaude
BeforeGrace held a link to 579 lapsed customers to reopen — renewal work that had already moved to Sherosh's team, so two people would have rung the same customer in the same week.
AfterThe same link now opens her own leads page: 6 customers waiting on a reply, 42 quotes gone quiet, and her week against her own measure. Every name checked against all 1,044 rows of the renewals and win-back lists — zero overlap, so nothing on her page is an existing customer being collected from. She has been told the list moved and why.
Who it helpsHer time goes on live enquiries instead of plan collection, and the warmest names she has stop depending on scrolling back through an email.
ByClaude
BeforeUpdraftPlus was installed and connected, but no timer had ever been armed — a backup only happened when somebody remembered to press the button. Three backups in two years: July 2024, December 2025, August 2026.
AfterFiles and database both run at 3am Dubai, every night, to Liliana's Google Drive. Two weeks of files kept, a month of database. A failure now sends an email instead of passing in silence, and an alarm checks every six hours that a backup is both happening and still booked to happen again.
AffectsDisaster recovery — being able to put the shop back after a hack, a bad plugin update or a hosting failure
Who it helpsIf the website breaks, yesterday can be restored. Before this, the newest restore point could have been months old.
ByClaude
Before575 lapsed customers worth AED 2.17M sat on a separate page for Grace, mixed into a two-week call plan alongside her live sales work. Winning them back is renewal work, not a sale.
AfterThey are now a Win back tab on Sherosh's AMC call page, with their own message, their own tick, and no price quoted. Nobody appears on both lists — 118 were held back because they are already being chased for a renewal, 91 because they are on the filter list. The Grace page is retired.
Who it helpsOne person owns the whole conversation about a lapsed customer, and no customer gets rung twice by two people about two different things.
ByClaude
Before13 saved replies. Four were named after rep numbers (Sales 1.1, 1.2, 4.2, Welcome), unused and never updated. The kitchen price reply quoted 2,426 / 3,149 / 3,767 — old prices with VAT wrongly added on top. The maintenance reply quoted MEGA RIO at 949 and a whole-villa plan at 1,999 that does not exist
After18 saved replies. The four dead ones removed, the two price ones corrected against the live site, and nine new ones added: first reply (English and Arabic), tried-to-call, quote-gone-quiet, whole-villa site visit, why the tap runs warm, what is included, how to pay, and about WaterClub. Each signs itself with whoever sends it
Who it helpsEvery rep now has a correct, on-brand reply to hand for the questions that actually come in, and no saved reply quotes a price the customer will not be charged
ByClaude
BeforeThe whole website was returning an error for about two hours. A one-off instruction we added while changing the price told the site to clear its cache too early, and the cache tool crashed everything before it had finished loading
AfterSite back up. The stuck instruction was switched off and removed, and the script that created it now waits until the site has finished loading before touching the cache, so the same mistake cannot repeat
Who it helpsSite trading again, and the failure is designed out rather than just cleared
ByClaude
BeforeAED 2,888 — AED 10 dearer than the Premium beside it, so the cheapest kitchen option was not the cheapest
AfterAED 2,399 in all seven places at once: shop price, product description, Google summary, comparison table, shop card, the price list quotes are built from, and what Zoho bills
Who it helpsThe three kitchen options now read cheapest to dearest, and a customer is billed exactly what they were quoted
ByClaude
BeforeA dozen systems were checked automatically, but nothing watched waterclub.ae itself — today's outage was found by accident.
AfterHome page, shop and checkout are checked every five minutes; any failure raises an alert straight away.
Who it helpsThe shop being down is now announced in minutes instead of discovered by chance.
ByClaude
BeforeGrace had no way of seeing the customers who came back after a follow-up — once she ticked 'quote sent' the conversation left her screen, and a little over one in four of those customers return weeks later with nobody watching
AfterEvery working morning at 7:20, before she starts, she gets her own one-page email: who came back and is still waiting on her, her quotes gone quiet, her week and her month — PDF attached, Omar copied
Who it helpsThe warmest names she has stop going cold unseen; 68 customers came back after a follow-up in the period measured
ByClaude
BeforeWork for Grace was spread across five separate emails with no single picture of what was live versus waiting
AfterOne email to Omar separating what Grace already has, what is built and switched off pending his word, and the three decisions still open — with the four PDFs attached
Who it helpsOmar can see in one place what is actually running and unblock the three things that are not
ByClaude
BeforeGrace had a report in her inbox saying she was being starved of leads — 89 to one colleague, 52 to another, 29 to her — which was a counting error on our side.
AfterCorrected email sent: real split is 172 to her against White 214 and Katherine 198, with her closing at 51% against 30% and 21%. February confirmed as maternity leave, not a dip.
Who it helpsA salesperson is no longer holding a wrong number about her own treatment.
ByClaude
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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