If you run the tech side of a business, a lot of your week goes into clicking through other people's software. The CRM, the email tool, the sequencer. Same screens, same buttons, every day.
Here is the cheat code. Have Claude create a wrapper of the app to do everything the native API can't. Then hand it the repetitive jobs, let it audit the account, and keep one page where it asks before anything risky.
- Agencies checked
- 64,380
- Loaded into 3 campaigns
- 24,950
- Demo pages built, one per shop
- 2,400
An example week of outbound jobs, to show the scale. Your numbers depend on your list and your tools.
The idea
Every button you click in a web app sends a request to the app's server. Save, move, rename, add to a campaign. The app is a screen on top of those requests.
A wrapper is a small tool that sends the same requests itself, using your login. Claude watches what the app sends, then builds one command per job.
Most apps also have a native API, but it only covers what the company chose to open up. A wrapper does everything the native API can't. If you can click it, Claude can do it.
Treat it like a VA
Once the wrapper exists, it works like a VA who lives inside your tools. You say one sentence, it does all the clicking, and anything risky waits for your OK.
- "Clean up the CRM": duplicates merged, every deal moved to the right stage, leads tagged by where they came from.
- "Send the newsletter": contacts who never open cleaned out, the segment built, the email scheduled.
- "Load tonight's leads": new leads checked and added to the right sequence, under each campaign's daily cap.
- "Chase who hasn't paid": a reminder drafted for every unpaid invoice, waiting for you to send.
- "Update the store": new prices and stock on every product.
- "Fix the ads": keywords that spend and never convert, paused.
Any tool you log into works. The possibilities are endless.
What you need
- Claude CodeA Pro or Max plan. Claude Code runs in your terminal: it reads files, runs commands and writes code.
- Your own loginAn account with the access you use by hand. The tool logs in once in a saved browser window and reuses that session.
- A small serverFor the daily jobs, so they run while your laptop is closed. Any cheap VPS works.
Step 1: Record what the app does
Pick one job you do often. Do it once by hand while Claude records the requests.
I want a command line tool for <APP> (<app URL>). Its API cannot do <the job>, so we will use the same requests the web app sends. Set up Playwright with a saved browser profile in .profile/ and open <APP> so I can log in once. Then record every network request while I <do the job>. Save them to captures/. Do not change anything yourself. When I am done, list each request: what it does, the URL, the headers and tokens it needs, and what success and failure look like.
Step 2: Build the tool, reading first
Build the read commands before anything that changes data. They are safe, and they show whether the tool sees the whole account.
Build <app>-ops, a Python tool with one command per job, from the requests in captures/. Reuse the saved login. Start with read-only commands: list everything, show one item, search by name. Compare the counts with what I see in the app. Do not add any command that changes data until the counts match.
Step 3: Test for quiet failures
An app's internal requests were not built for outsiders, so they often fail without saying so. Check for these before you trust the tool:
- A success code with an error page inside it.
- An empty list when a parameter is missing, which looks like "nothing here".
- Paging that ignores the page size, so page one looks like the whole account.
- Errors returned inside a successful response.
- A save that merges into the old version instead of replacing it.
- Items inside folders or filters that never show up in the main list.
Test <app>-ops against the real account, read-only. For every command, check that the count matches the app, that paging reaches the last page, and what happens when a header or parameter is missing. Any failure that comes back as a success must raise an error in the tool. Write what you found to TRAPS.md.
Step 4: Add rails
Now let it change things, with rules.
- Reading is free.
- Anything that sends, deletes or spends needs your OK.
- Before every change, it saves a copy of what was there.
- Every change goes into a log.
- Changes can be undone with one command.
Add write commands to <app>-ops. Before every write, save the item to snapshots/ and log the change to writes.jsonl. Add an undo command that puts a snapshot back. Refuse anything that sends, deletes or spends unless I pass --yes, and add --dry-run to show a change without making it. Test one write and its undo on a test item first.
Step 5: Hand it every job you repeat
This is where the hours come back. Jobs that took me an hour of clicking now take one sentence.
Create campaigns
Say you sell to agencies. In one week Claude can check 64,380 of them, keep the 24,950 that fit, and load them into 3 campaigns, 3 emails each. It can build 2,400 of them their own demo page, with their logo and colours. All of it waits as a draft until you press start.
Build a campaign in <app> for <who>. Find them in <source>, keep only the ones that match <your rules>, and drop anyone already in a campaign or on our do-not-contact list. Write a 3-step sequence: first email, follow-up after 3 days, last one after 5. Load the leads with their first names. Leave the campaign as a draft and show me 5 sample emails.
Outbound: load leads into the sequences
Every night it picks the new leads that pass my checks, checks each email before it goes in, and adds them to the right campaign. Every campaign has a daily cap, so a big batch never floods a mailbox.
Every night at 00:00, use <app>-ops to add new leads to our campaigns. Only take leads that pass these checks: <your rules>. Check each email first and skip any that are invalid or risky. Add at most <N> per campaign per day. Log what you added and what you skipped, with the reason.
Inbound: draft every reply
It reads every email that comes in, sorts it (new lead, question, supplier, spam), and drafts a reply from our past emails, playbooks and call notes. Nothing goes out on its own. A person reads the draft and presses send.
Every 10 minutes, read new emails in <inbox>. Sort each one: new lead, question, partner, supplier, spam. For anything that needs an answer, draft a reply using our past replies, playbooks/ and call notes, and list the sources you used. Save it as a draft. Never send.
Step 6: Let it audit the tool daily
Once the tool can read everything, ask it what is broken. On a busy cold email account, a first audit can turn up 3,610 leads that never got an email, 110 dead campaigns, and 30 mailboxes you pay for that never sent one.
Use <app>-ops to audit the account, read-only. Look for: things switched on that do nothing, things that are broken or point at something deleted, duplicates, work that is stuck, and anything we pay for that is not used. For each finding, give the count, three examples and the fix. Do not fix anything yet.
Once the audit is useful, run it every morning on the server and only report what is new.
Step 7: Get a dashboard for approvals
Some fixes should wait for you. For those, have Claude build a simple dashboard: one card per decision, with what it found, the exact change, and approve or skip.
Build a small password-protected dashboard that lists every fix from the daily audit that needs my OK. One card each: what was found, the exact change, what it affects, and Approve / Skip buttons. Approve runs the change through <app>-ops with its snapshot and log. Recheck open cards every hour and close the ones already done.
Things to watch
- Read the app's terms first. Some do not allow automated access, and it is your account at risk. Go slow and use your own login.
- Apps change their internal requests without warning. When a command breaks, have Claude record that job again.
- The saved login is a key to your account. Keep it on your own machine or server, never in a chat.
- If the official API covers a job, use it. It is built to stay stable. Wrap the app for the rest.
Where to start
- The tool you open every morning.
- The job you do the same way every day.
- Anything its API cannot do.
The possibilities are endless. Wrap Mailchimp and it creates and sends your newsletters for you. Wrap ManyChat and it builds your automations for you. Wrap your CRM and it keeps every contact and deal up to date.