Lesson 6. Versioning and Backups#
Goal: learn how to save data versions and make backups so you don't lose information.
Why Versioning Matters#
An agent can accidentally:
- delete a row
- overwrite data
- corrupt the format
Without a backup — you lose the data.
Versioning means saving snapshots of data at specific points in time.
How to Work with Versions in Google Sheets#
Google Sheets automatically saves change history:
- open the document
- click
File → Version history → See version history - select the version you need and restore it
You can also create named versions manually:
File → Version history → Name current version- enter a version name (e.g., "Before agent launch")
- you can always return to this version
How to Work with Versions in Airtable#
Airtable saves change history on paid plans (from $20/month).
On the free plan there's no history → back up manually:
- export the base to CSV (via
...→Export) - save the file with a date (e.g.,
clients_2026-01-31.csv) - export weekly (or before important changes)
How to Work with Versions in Notion#
Notion saves page change history:
- open the page
- click
⋮→Page history - select the version you need and restore it
For a full backup of the base:
- export the entire base (Workspace settings → Export all workspace content)
- save the file (Markdown or HTML format)
- export monthly
Git: A "Time Machine" for Your Files#
Google Sheets, Airtable, and Notion are great for tabular data. But if you work with text files — specs, prompts, articles, configs, knowledge bases — there's a much more powerful tool: Git.
What Git Is in Plain Terms
Git is a version control system. Imagine that every time you save a file, a snapshot of all files in the folder is created. You can:
- view any previous version
- see exactly what changed (which lines were added, removed, modified)
- roll back to any snapshot with one click
- store all versions in the cloud (GitHub, GitLab) — like a free backup
Analogy: Google Docs saves history of one document. Git saves history of the entire folder of files, with signatures: who, when, and why changed it.
Why Git for Non-Technical Users
1. Safety when working with AI: When an AI agent (Claude Code, Cursor, Gemini CLI) edits your files, it might accidentally delete a needed paragraph, rewrite text poorly, or break the structure. With Git you can restore any previous version with one click.
2. Understanding changes: Git shows a "diff" — the difference between versions. You immediately see what the AI changed: green for added lines, red for removed. Much easier than comparing two documents manually.
3. Cloud backup: Via GitHub (free account) all your files and history are stored in the cloud. Even if your computer breaks — data is safe.
4. Collaboration: If you work with an AI assistant (or a colleague), Git lets you see who changed what and when.
Getting Started: GitHub Desktop (No Command Line!)
You don't need a terminal or complex commands. GitHub Desktop is a free app with a visual interface:
Step 1. Install:
- Download GitHub Desktop (Windows, macOS)
- Create a free account at github.com
- Sign in to GitHub Desktop with your account
Step 2. Create a repository:
- In GitHub Desktop:
File → New Repository - Choose the folder with your documents (or create a new one)
- Name the repository, e.g.:
my-documentsorproject-docs
Step 3. Daily workflow (3 actions):
-
Work with files as usual — edit in any editor (Word, Notion export, Cursor, VS Code)
-
Save a version (commit):
- Open GitHub Desktop — it shows which files changed
- At the bottom left write a short description: "Updated spec for client" or "AI rewrote section 3"
- Click
Commit to main— version saved!
-
Push to the cloud:
- Click
Push origin— your files and history are sent to GitHub
- Click
Step 4. Roll back to a previous version:
- In GitHub Desktop:
History→ select the commit → right-click →Revert changes in commit - Files return to the previous state
Alternative: Git in VS Code and Cursor
If you use Cursor or VS Code (see Module 3, Lesson 2), Git is built into the editor:
- The left panel has a "branch" icon (Source Control) — it shows changed files
- Write a description and click the checkmark (Commit)
- The
Sync Changesbutton pushes to the cloud
This is more convenient than a separate app because everything is in one window: editing + AI assistant + version control.
Git Glossary for Non-Technical Users
| Term | In plain terms |
|---|---|
| Repository | Folder with files that Git tracks |
| Commit | Saved snapshot of all files with a signature |
| Push | Sending snapshots from your computer to the cloud (GitHub) |
| Pull | Downloading updates from the cloud to your computer |
| Diff | Showing differences between two versions of a file |
| Revert | Rolling a file back to a previous version |
| Branch | Parallel version of the project (for starters you only need one — main) |
Tip: To start, you only need 3 actions: edit → commit → push. That's enough for reliable versioning of all your documents.
When to Use Git vs Built-in Versioning
| Situation | Tool |
|---|---|
| Customer tables, orders | Google Sheets / Airtable (built-in history) |
| Documents in Notion | Notion (built-in page history) |
| Text files: specs, prompts, articles, configs | Git (via GitHub Desktop or Cursor) |
| Files edited by an AI agent | Git (essential! for safe rollback) |
| Project folder (code + documents) | Git (industry standard) |
Data Handling Rules for Agents#
1. Make a backup before launching the agent
Before connecting the agent to the database:
- export the data (CSV, JSON, Excel)
- save a copy with the date
- confirm the copy opens and data is readable
2. Test the agent on a copy of the base
Don't connect the agent to the live base right away. Create a copy (test base) and test the agent on it.
3. Set access permissions
The agent should have minimal required permissions:
- if the agent only reads → grant "Read only"
- if the agent adds data → grant "Write" only to the needed table
- don't grant delete rights unless required
4. Log agent actions
If the agent changes data — log its actions:
- create a separate "Action log" table
- record each agent action (date, time, what it did, result)
- if something breaks — you can roll back changes
Module Practice#
Practice Task 1: Create a Customer Table in Google Sheets#
Task: create a customer table with clean data, ready for agent connection.
Requirements:
- Fields: ID, Name, Email, Phone, Status, RegistrationDate
- Formats:
- ID — number (1, 2, 3, …)
- Name — text (First Last)
- Email — lowercase text (ivan@example.com)
- Phone — text in format
+79001234567 - Status — text from list:
active,lead,inactive - RegistrationDate — date in format
YYYY-MM-DD
- Data: fill 10 rows (invent customers)
- Cleanliness:
- no empty values in critical fields (Email, Status)
- no extra spaces
- no duplicates (two customers with the same Email)
Checklist:
- First row is headers (no spaces, no special characters)
- All fields filled (no empty cells in Email, Status)
- Formats consistent (all phones in one format)
- No duplicates (check by Email)
- No empty rows between records
Practice Task 2: Create Structure in Airtable#
Task: create a freelancer CRM structure in Airtable.
Requirements:
- Table 1: Clients
- Fields: Name (text), Email (email), Phone (phone), Status (single select: lead / active / inactive), RegistrationDate (date)
- Table 2: Projects
- Fields: Name (text), Client (link to Clients), Status (single select: planned / in_progress / completed), Deadline (date), Amount (number)
- Table 3: Meetings
- Fields: Client (link to Clients), Date (date), Topic (text), Status (single select: scheduled / completed / cancelled)
Steps:
- Create a base in Airtable
- Create three tables
- Set up links (in Projects, Client links to Clients)
- Fill with test data (2 clients, 3 projects, 2 meetings)
- Create a Calendar view for Meetings (by Date field)
Checklist:
- Three tables created
- Links configured (Projects → Clients, Meetings → Clients)
- Test data filled
- Calendar view for meetings created
Practice Task 3: Clean Messy Data#
Task: given a table with messy data. Clean it.
Original table:
| Phone | Status | |
|---|---|---|
| ivan@example.com | +7 900 123-45-67 | Active |
| Maria@EXAMPLE.com | 89007654321 | active |
| alex@example.com | +7(900)9876543 | |
| ivan@example.com | +79001234567 | Active |
What to do:
- Remove extra spaces in Email
- Convert Email to lowercase
- Convert Phone to single format
+79001234567 - Convert Status to single format (choose one:
active,lead,inactive) - Fill empty Status values (decide on default status)
- Remove duplicates (rows with same Email)
Result:
| Phone | Status | |
|---|---|---|
| ivan@example.com | +79001234567 | active |
| maria@example.com | +79007654321 | active |
| alex@example.com | +79009876543 | inactive |
Checklist:
- No extra spaces
- Email in lowercase
- Phone in single format
- Status in single format
- Empty values filled
- Duplicates removed
Artifacts#
After completing the module you will have:
1. Customer Table in Google Sheets#
- 10 rows with clean data
- consistent field formats
- ready for agent connection
2. CRM Structure in Airtable#
- three linked tables (Clients, Projects, Meetings)
- test data
- Calendar view for meetings
3. Data Cleanliness Checklist#
- list of rules for checking data before connecting to an agent
- reusable for any project
4. Agent Action Log (Template)#
Table for logging agent actions:
| Timestamp | Action | Entity | EntityID | Result | Details |
|---|---|---|---|---|---|
| 2026-01-31 10:15:00 | create | Client | 123 | success | ivan@example.com |
| 2026-01-31 10:16:00 | update | Client | 123 | success | Status → active |
| 2026-01-31 10:17:00 | create | Meeting | 456 | failed | Date format error |
Zapier Practice: Configure an Agent to Write Clean Data#
Bonus Task#
Task:
Create a new chatbot/agent in Zapier (or improve an existing one) that collects data from customers and writes it to Airtable with validation.
What to do:
-
Create a base in Airtable:
- Name: "Customers [Your niche]"
- Fields:
- ID (Auto number)
- Date (Date, automatic)
- Name (Single line text, required)
- Email (Email, required, with validation)
- Phone (Phone number, required, with validation)
- Source (Single select: Telegram, Website, Ads)
- Status (Single select: New, Processed, Closed)
- Notes (Long text, optional)
-
Create a chatbot/agent in Zapier:
- Name: "Lead collector [Your niche]"
- Role: "You are a lead collection assistant"
-
Write a prompt with validation:
You are a lead collection assistant for [your niche].
Your task: collect data from the customer and write it to Airtable.
Data to collect:
1. Name (text, required)
2. Email (format: example@mail.com, required)
3. Phone (format: +7-xxx-xxx-xx-xx, required)
4. Notes (text, optional)
Validation rules:
- Email: check format (must contain @ and domain)
- Phone: check format (must start with +7 and contain 11 digits)
- If format is wrong, ask to re-enter: "Please enter email in format example@mail.com"
Actions:
1. Ask for data one by one
2. Validate each field
3. After collecting all data, repeat for confirmation
4. If customer confirmed, write to Airtable (use plugin)
5. Say: "Done! Your request has been received. We'll contact you within a day."
Format:
- Friendly tone
- Short questions
-
Connect Airtable to Zapier:
- Skills → Add Skill → Plugins → Airtable
- Configure credentials (API Key from Airtable)
- Specify base and table
-
Test:
- Write to the bot with correct data → check record in Airtable
- Write with wrong email (e.g., "ivan@") → check that the bot asks to re-enter
- Write with wrong phone (e.g., "123") → check validation
Checklist:
- Base in Airtable created (correct fields and types)
- Chatbot/agent created in Zapier
- Prompt written (with validation)
- Airtable plugin connected
- Testing passed (correct data → record works)
- Validation works (wrong data → bot asks to re-enter)
What you'll get:
An agent that collects clean, validated data and automatically writes it to a structured Airtable base.
Time: 40–50 minutes