Salesforce Write Access // Version 1 (Test)

Salesforce API guardrails

Today our system can only read Salesforce. This is the plan to let a small group write to it too, with strong safety rails and a Python script that checks the work every hour, plus AI that steps in if needed.

For Brian's review. Jason (Salesforce admin) has reviewed and is aligned. Prepared by Anthony + Claude. Updated 2026-06-02.

01The goal

In one sentence: let a few trusted people update purchase orders in Salesforce without handing anyone the keys to the whole system.

Right now our Salesforce connection can only look, not touch. We want to open up writing for a short, careful test. The thing we care about most: a person is never the one checking the work. An AI watches every change, records it, and can stop everything on its own if something looks wrong. Nothing should fall through the cracks because a human forgot to look.

02What V1 covers

Small on purpose. One shared connection, a couple of people, a narrow set of things they can change. If it works, we widen it later.

ItemV1 decision
Can changePurchase Orders and Purchase Order Lines (edit and create new ones)
Read onlyProducts (look, no changes in V1)
NeverDelete anything. "Removing" something is a status change, never a true delete.
The connectionOne shared login (the existing read-only one), not one login per person yet
How we know who did itA Google Sheet activity log records the real person's email on every single change
People in the testMaryanne, Arvhiane, and Jason
Where we test firstThe Salesforce sandbox, before any real data is touched

03The safety rails

Two kinds: rails that stop a bad change before it happens, and watchers that catch anything that slips through.

Before a change happens

  • One door. Every change goes through one tool that holds the keys. No one keeps the keys on their own laptop.
  • Show before you do. The tool previews exactly what will change. Nothing happens until the person confirms.
  • Sanity limits. Crazy values (a negative price, a huge jump) get rejected automatically.
  • Speed limit. A cap on how many changes one person can make per hour, so nothing can edit hundreds of records in a runaway.
  • Only the agreed fields. The tool only lets people touch the specific fields we approved.
  • Two people for big changes. Money changes, brand-new records, or anything over the limit need a second person to approve first.
  • Read it back. After each change the tool re-reads the record to confirm it saved what was intended.

Catching what slips through

  • The activity log is also the undo. Every change saves the old value first, so we can put it back.
  • Salesforce recycle bin (extra net). Even with delete off, Salesforce keeps trashed records for 14 days, so an admin can recover them. We will confirm this covers Purchase Orders in the sandbox.
  • Bypass alarm. The script compares our activity log to Salesforce's own record. A change in Salesforce with no activity log entry means someone went around the tool, and it alarms.
  • A script checks every hour, the AI acts if needed. A Python script compares the records each hour. If something serious turns up (an unlogged change, a delete, an off-limits edit), the AI freezes all changes until a person looks.
  • Anyone can hit the brakes. A team member can freeze all changes from Slack if something feels off.

04The activity log and the undo

We keep two records, not one. Together they are stronger than either alone.

The script cross-checks the two. They should always match. If Salesforce shows a change that our Sheet does not, that is a red flag. Saving the old value before each change is what gives us a working undo, because Salesforce has no one-click restore.

05The hourly checker

A Python script that runs every hour during the workday and watches the work for us. The AI only steps in to act when something looks off.

The hourly run is plain code, so it costs nothing to run. It only calls the AI to think when it actually finds something odd. Each hour it reads our activity log and Salesforce's history, compares them, and then:

It runs on a machine that stays on all day. If that machine ever goes down, someone else can pick up the exact same program on another machine, because everything it needs lives in the shared Sheet, not on one computer.

06What we have built so far

We did not just plan this. The two pieces below are built, and we will continue to test them.

Still to build: the change tool itself (Jason and Anthony will build this), the undo button, the two-person approval step, and the manual freeze command. These are next on our list.

07Where we bent your playbook

We built this off your write-access playbook and changed two things on purpose for this test. These are the parts we most want your read on.

1. Shared login instead of one per person

Your playbook says always give each person their own login. For a quick test we are sharing one login and using the Google Sheet to record who did what. We can switch to one-per-person later (per-person is free up to the license ceiling below). Is the shared login plus a hardened activity log acceptable for a bounded test?

License ceiling (so you can see the headroom)

LicenseTotalUsedFreeCost beyond free
SF Integration (API only)514$10/mo per person
Salesforce full (UI + API)431~$150+/mo per seat

Per-person identity for V1 is free up to the 4 open Integration slots, then $10 per person per month. The full Salesforce seats are nearly maxed and far more expensive, so the API path is the cheap one.

2. If the activity log is down, we stop

Your playbook says let the change go through and just flag the missing log. We flipped it. On a shared login the Sheet is the only record of who did it, so if the Sheet is unreachable we block all changes until it is back. A change we cannot attribute is worse than a change that waits.

08Honest risks we are not hiding

09What we need from you

Two questions, plus any feedback before we build the rest.

Q1. Do you approve us moving forward with the test?

Given the V1 scope and the guardrails above, are you good with us running this bounded test?

Saved
Q2. Are these guardrails enough, and is the shared-login shortcut OK for a bounded test?

Anything in the safety set you would add, drop, or change for a system of record like Salesforce versus an ad platform like Meta? Especially the two deviations in section 07.

Saved
Feedback

Anything wrong, missing, or worth changing before we keep building.

Saved