I didn't want to pay a VA KSh 15,000 a month to answer the same twelve questions
Our chama has twenty-three members. We meet twice a month, we pool contributions for merry-go-round loans, and we invest in small ventures when we've saved enough. It works well. But the WhatsApp group is chaos. Every week, someone asks when the next meeting is. Someone else asks how much they owe. Someone wants to know if their M-Pesa went through. I'm the secretary, so I answer. Again. And again.
I looked at hiring a part-time VA. The going rate in Nairobi for someone to monitor a WhatsApp group and answer basic questions is around KSh 15,000 a month. That's KSh 180,000 a year to reply to messages I could answer in my sleep. I thought: there has to be a cheaper way.
I'd read about people using Claude to draft emails and write product descriptions. I wondered if I could train it to answer chama questions. Turns out you can, and the whole setup cost me KSh 300 in tokens over two weeks of testing. Here's how I did it, what I got wrong, and what I'd do differently next time.
The workflow: WhatsApp Business API, a Google Sheet and Claude Sonnet 4.5
WhatsApp doesn't let you plug an AI directly into a personal group chat. You need the WhatsApp Business API, which costs nothing to set up but requires a business phone number. I used a second line on my Safaricom account. Then I connected it to Make.com, which is a workflow automation platform. Make has a free tier that gives you 1,000 operations a month—more than enough for a small chama.
The flow works like this: a member sends a message to the business number. Make captures the message, sends it to Claude Sonnet 4.5 with a prompt and a Google Sheet of chama data, and Claude writes a reply. Make sends the reply back through WhatsApp. The member gets an answer in about eight seconds.
I used Claude Sonnet 4.5 because it's good at reading structured data and keeping a consistent tone. I tested Gemini Flash first—it's faster and cheaper—but it kept adding extra pleasantries I didn't ask for. Claude stuck to the script.
The prompt: teach Claude what a chama secretary sounds like
This is the prompt I gave Claude. I pasted it into the Make workflow as a system instruction:
"You are the secretary of a Nairobi investment chama with 23 members. Answer member questions about contributions, meeting dates, loan balances and M-Pesa payments. Use the Google Sheet data provided. Be polite, brief and clear. Use Kenyan English. If a member asks about a loan they don't have, say so gently. If the question is outside your data (e.g., a new policy request), tell them to raise it at the next meeting. Sign off as 'Chama Bot' so they know it's automated."
The first version didn't include "sign off as 'Chama Bot'." Big mistake. Members thought I was personally replying at 11 p.m. and started sending follow-up questions that needed judgment calls. Once I added the sign-off, everyone understood it was automated, and the follow-ups dropped by half.
The Google Sheet: your source of truth
Claude can't access your bank account or your M-Pesa statement. It can only work with data you give it. I built a Google Sheet with four tabs: Members, Contributions, Loans and Meetings.
The Members tab has names and phone numbers. The Contributions tab lists every M-Pesa payment with the date, amount and member name. The Loans tab shows who borrowed what, when it's due, and how much they've repaid. The Meetings tab has the next three meeting dates and locations.
I used Zapier initially to pull the sheet into Make, but Zapier's free tier ran out fast. I switched to Make's native Google Sheets module, which is simpler and doesn't count against a separate quota.
Here's where I messed up: I formatted M-Pesa amounts with commas (KSh 5,000) in the sheet. Claude read "KSh 5,000" as text, not a number, and couldn't calculate totals. A member asked, "How much have I contributed this year?" Claude said, "I can't calculate that." I removed the commas, reformatted the column as plain numbers, and added "KSh" in the prompt instructions instead. Problem solved.
What went wrong: Claude thought every Jane was the same Jane
We have two Janes in the chama. Jane Wambui and Jane Akinyi. The phone numbers are different, but I'd only put first names in the Members tab. When Jane Akinyi texted asking about her balance, Claude pulled up Jane Wambui's record. Jane Akinyi was not pleased.
I fixed it by adding full names to the sheet and telling Claude in the prompt: "Always match by phone number first, then confirm the name." I also added a line: "If two members share a first name, use their full name in the reply." Now when Jane Akinyi asks a question, Claude says, "Hi Jane Akinyi, your balance is..." It's a small thing, but it matters.
The cost: KSh 300 in tokens versus KSh 15,000 for a VA
I ran this setup for two weeks during testing, answering about 180 messages. Claude Sonnet 4.5 costs $3 per million input tokens and $15 per million output tokens. Each message used roughly 800 input tokens (the prompt, the sheet data, the member's question) and 150 output tokens (Claude's reply). That's 144,000 input tokens and 27,000 output tokens total.
The math: (144,000 ÷ 1,000,000) × $3 + (27,000 ÷ 1,000,000) × $15 = $0.432 + $0.405 = $0.837. At an exchange rate of KSh 130 to the dollar, that's about KSh 109. I rounded up to KSh 300 to cover the first week when I was testing different prompts and running the same questions multiple times.
A VA would have cost KSh 15,000 for the same period. The bot saved me KSh 14,700. Over a year, assuming message volume stays steady, I'm looking at around KSh 3,600 in token costs versus KSh 180,000 for a VA. The difference pays for two chama loans.
What I'd change: add a fallback for complex questions
The bot handles about 85% of questions perfectly. The other 15% are edge cases: "Can I defer my contribution because my boda broke down?" or "Why did we invest in that hardware shop?" Claude can't answer those. It says, "Please raise this at the next meeting," which is correct but feels a bit cold.
If I were doing this again, I'd add a fallback that tags me in the WhatsApp Business chat when Claude detects a question it can't answer. Make can do this with a conditional branch: if Claude's reply includes the phrase "raise this at the next meeting," send a notification to my phone. Then I can jump in and reply personally. I haven't built that yet, but it's on the list.
I'd also test DeepSeek R1. I tried it after I'd already committed to Claude, and it's faster at parsing spreadsheet data. The output is a bit more formal, but for a chama bot, formal might actually be better. DeepSeek is cheaper, too—about half the cost per token. If I were starting from scratch, I'd run a Compare test between Claude Sonnet 4.5 and DeepSeek R1 with ten sample questions and pick the one that felt more natural.
One week in, members started asking if the bot could do more
The auto-reply works. But now members are asking if the bot can send reminders three days before a meeting, or confirm M-Pesa payments automatically. Both are possible. Make can schedule messages, and M-Pesa has an API (though it requires a business account and a bit more setup). I haven't built those features yet, but the fact that members are asking means they trust the bot. That's the part I didn't expect.
I thought people would be annoyed by an automated reply. Instead, they like getting an instant answer at midnight when I'm asleep. One member told me, "It's like having a secretary who never gets tired." I'll take that.
Questions people ask
Does this work with a normal WhatsApp group, or do I need a business account?
You need WhatsApp Business API, which requires a separate business phone number. A normal WhatsApp group won't let you connect an automation tool like Make. The business number can be a second SIM on your existing phone.
What if my chama data changes—do I have to update the prompt every time?
No. The prompt stays the same. You just update the Google Sheet. Claude reads the sheet every time it replies, so it always has the latest data. I update our sheet once a week after our treasurer reconciles M-Pesa.
Can Claude send messages on its own, or does it only reply?
In this setup, it only replies. If you want Claude to send reminders or initiate messages, you need to add a scheduled trigger in Make. That's a separate workflow, but it's not complicated.
How do I stop the bot if something goes wrong?
Make has a pause button on every workflow. Click it, and the bot stops replying immediately. I keep the Make app on my phone for this reason. I've paused it twice—once when I was testing a bad prompt, once when a member reported a bug.
I'm not saying every chama needs a bot. But if you're spending hours a week answering the same questions, and you're comfortable with a bit of setup, this works. The KSh 300 I spent in tokens bought me back about four hours a month. That's time I can spend on the actual work of running the chama, not typing "Next meeting is Saturday" for the fifth time in a week.
If you want to try this, Kryotta gives you access to Claude Sonnet 4.5, DeepSeek R1 and the other models I mentioned in one workspace. You can test prompts in Compare before you commit to a workflow. Start here and see what two weeks of token costs actually look like for your use case. You might be surprised.



