The Wellwhere the information actually lives
Your folder of files has worked fine so far. This is the session about the four moments it stops working, and the one thing that replaces it.
By the end of today you will know what a database is for, when you need one, and — just as usefully — when a folder of files is still the right answer.
Presented by Emile du Toit
brainitconsulting.com
Here is an overview of last time in five lines.
- You wrote a map — one page saying what a job is, before anybody builds it.
- Five headings, and the last one is what you are not sure about.
- You say what, not how. Deciding how is the part it is good at.
- The map lives in the folder, beside your house rules, and gets marked like everything else.
- And heading two asks where the information comes from.
Which is where today starts.
Contents
- Where does it actually live?Four moments a folder gives out.
- One well, many troughsWhat a database is for, and when you do not need one.
- Rows and columns is the whole ideaThere is less to this than people expect.
- Asking the well a questionYou will not write these. You should read them.
- Digging one, and before next timeFree, three minutes, nothing installed.
Then the questions this always raises, the glossary so far, and the picture to photograph.
Where does it actually live?
Every map you wrote last time ends at the same question.
Go back to the map you wrote in the last session and find heading two — the one that says where the information comes from. For most people in this room it says something like a folder, a spreadsheet, or, honestly, my head and a notebook in the truck.
For Dale it is a folder of text files that his daughter fills in each morning before she opens the office. That works. It has worked for months. It is worth being clear about that before we replace it with anything.
It stops working at four specific moments, and they are worth naming because you can usually feel one of them coming.
1. Two people need it at once. His daughter is editing the file while Dale is reading it. One of them is looking at something that is no longer true, and neither of them knows which.
2. You want it somewhere else. On the phone, in the truck, at half past six. The folder is on the office computer, and the office is shut.
3. You ask a question of all of it at once. “What did we bill in July?” A folder cannot answer that. Somebody opens twelve files and adds up.
4. The same fact is written in two places. Tanner's address is in the email and on the estimate. He moves. Now one of them is wrong, and it is a coin toss which one you read next.
Number four is the one that quietly costs money, and it is the one this session is really about. Everything else follows from it.
A folder is a fine place to keep things. It is a poor place to keep the truth.
One well, many troughs
What a database is for — and, just as usefully, when you do not need one.
A well is one hole in the ground, dug once, in the right place. Around the yard there are troughs — one by the gate, one in the paddock, one in the barn. Every trough draws from the same well. Nobody carries buckets between them, and no trough ever has different water in it from another.
That is a database. One place the information lives. Everything that needs it draws from there, and because there is only one of it, nothing can ever disagree with anything else.
The word people reach for first is “a big spreadsheet”, and it is close enough to start with. The difference that matters: a well is built to be drawn from by several things at once, from several places, without anyone waiting and without two people seeing different answers. A spreadsheet is one file, and one file has one person in it at a time.
Who is going to use it?
This is the question that decides whether you need a well at all, and it is worth asking out loud before anything else. There are three honest answers and they lead three different ways.
- Just me. Then a folder is fine, and a spreadsheet is fine. Genuinely — not as a consolation. If nobody else touches it and it lives on one machine, a well is a cost with no benefit, and anybody who tells you otherwise is selling something.
- Me and the people who work for me. Now you want a well. This is Dale: two people, two places, one truth. It is the most common answer in a room like this one and it is what today is aimed at.
- My customers, over the internet, with their own logins. Then you want a well and several other things besides — a way to know who is who, a way to send them mail, a way to keep one customer from seeing another's business. That is a bigger job than today, and we will come to it.
Only you touch it. It fits on one screen. You have never once wished you could ask it a question. Nobody has ever had to ask which copy is current.
If that is you, keep the folder. Come back to this session on the day one of those four moments happens, because it will, and you will recognise it.
A well is dug once, in the right place. That is most of the skill.
Rows and columns is the whole idea
There is less to a database than people expect. That is the good news.
Here is the entire structure, and there is genuinely nothing hiding behind it. A table is a list of one kind of thing. Every one of those things gets a row. Every fact you keep about them gets a column, and every row has the same columns as every other.
Dale's well has one table in it called jobs. One row per job. Seven columns, because there are seven facts worth keeping about a job. That is the whole design, and it took about four minutes to decide.
Two rules follow from the picture, and they are the only two you need today.
- One fact, one place. Tanner's address is written once. When he moves, it is corrected once, and every trough in the yard is correct from that moment. If you find yourself changing the same fact in two places, you have two wells and one of them is lying.
- One kind of thing per table. Jobs go in the jobs table. Customers, if you ever need them separately, go in a customers table. Resist the urge to build one enormous table with everything in it — that is a spreadsheet with extra steps.
The columns you choose decide the questions you can ask
This is the part worth slowing down for, and it came out of building the demo you are about to see rather than out of a book.
Dale's table records the date a request came in. It does not record the date the estimate went out. Nobody noticed, because nobody had ever needed it. Then somebody asked what looks like the simplest question in the world — what did we bill in July? — and the well cannot answer it. It can tell you what came in during July and has since been billed, which is a different question wearing the same coat.
“The table only records the day a request came in — there's no date for when it was sent out. So this is ‘jobs received in July that have been billed’, not ‘invoices sent in July’. If you want the two to line up going forward, we'd need a sent date column.”
Nobody asked it to check that. It is the single most useful sentence in this session.
So: a column you did not write down is a question you cannot ask. You will not get this right first time and you are not supposed to. Adding a column later is a small job. Knowing that you needed one is the hard part, and this is how you find out.
A column you never kept is a question you cannot ask.
Asking the well a question
You will not write these. You do need to be able to read one.
A question put to a well is called a query, and it is written in a language called SQL — most people say “sequel”. It has been around since the nineteen-seventies, which is why it looks the way it does, and it is not going anywhere.
You are not going to learn to write these, and you do not need to. What you need is to be able to look at one and check it asked what you meant — which is the same skill as reading the permission prompt in session five, and it matters for the same reason.
Read this one out loud in English and see how far you get:
SELECT customer, job
FROM jobs
WHERE waiting_on ILIKE '%dale%'
ORDER BY received;
Select the customer and the job — show me these two facts.
From jobs — out of the jobs list.
Where waiting_on is something like “dale” — but only the ones with my name against them.
Order by received — oldest first.
Four lines, four ordinary English sentences. That is most of SQL, and the rest is more of the same.
Here is the real exchange from the demo, exactly as it came back.
Which jobs are still waiting on me?
The SQL I ran:
SELECT customer, address, job, status, waiting_on, received, total
FROM jobs
WHERE waiting_on ILIKE '%dale%'
ORDER BY received;
That asks for every job where the ball is with you, oldest first.
One job is waiting on you.
Tanner — 212 Wilbanks Rd, came in 21 August 2026. Water heater rumbling, plus a gas smell at the stove. Status is stopped, nothing billed yet.
It's flagged to you because of the gas smell — that's gas work, so I haven't priced any of it and won't. No date promised to the customer.
For context, nothing else is sitting with anyone else except one job waiting on the customer (a model number and an address); the rest are one ready to price and four already sent.
Notice what happened in the third line of that query. It searched for anything like “dale”, because it did not know how Dale's name was written in that column — and it said so. In an earlier run it refused to guess at all, and told me a filter that guessed wrong would quietly hide jobs. That is the behaviour you want, and it is the reason to read the query rather than only the answer.
Read the question. The answer will always look confident.
Digging one, and before next time
Free, about three minutes, and nothing to install.
You do not dig a well by hand any more, and you certainly do not run one yourself. You rent one. It is free at the size any of us will use today, it lives on the internet rather than on your office computer, and getting one takes about as long as making a cup of tea.
There are several companies who will do this. We use Neon, and we get it through Vercel — which is worth explaining, because it saves you an account.
Vercel is where, next session, you will put something on the internet. It also has a marketplace of things you might need on the way, and a database is one of them. So you sign up once, at Vercel, and get the well from there. One account instead of two, one bill instead of two — and both of them are free at this size.
Show me every step — getting a free Vercel account, click by click
Free, about three minutes, and no card. You will need this account next session as well, so it is not a detour.
Signing up
- Go to vercel.com and click Sign Up.
- Choose Hobby when it asks what you are doing. Hobby is free and stays free. It is the right answer even though you are running a business — it is about how much you use, not who you are.
- Sign in with GitHub if you made an account in session seven. That is one fewer password, and it means the two already know about each other. Otherwise use your email.
- Give it a name when it asks. Your own name is fine. Nobody sees it but you until you decide otherwise.
- Skip anything about deploying a project. It will offer you templates and clever things. You do not need any of them today; close them down and you will land on an empty dashboard, which is exactly right.
Digging your own well
- Find the Storage tab on the dashboard.
- Choose Neon Postgres from the list, and the free plan.
- Give it a name — something you will recognise in a month.
my-first-wellis a perfectly good name. - That is it. The well exists. It is empty, and that is fine — you are not going to put anything real in it today.
- Find the connection string, look at it, and close the tab without copying it anywhere. Today you only need to know what it looks like and that it is a key.
It might not. Vercel changes its wording and moves its buttons more often than this page gets reprinted, and Neon does too. The shape does not change: sign in, find storage, pick Postgres, pick free, name it.
If you get stuck for more than ten minutes, stop. It is not you, and it is not worth an evening. Bring it to the next session, or send me a message and I will get you unstuck — that part is genuinely quick when somebody has seen the screen before.
What I did up here, in full
Nothing up my sleeve — every step of what I just did
Six steps and one command. The well did not exist twenty minutes before this session started.
- Sign in to Vercel — the free hobby account, the same one you will need next session anyway.
- Add a database from the marketplace. On Vercel that is the Storage tab, then Neon, then the free plan. It takes about thirty seconds and asks you almost nothing.
From the terminal it is one line, which is what I ran up here:
vercel integration add neon --name dale-well --plan free_v3 - Vercel hands back a connection string and puts it in the project for you. One line of text, beginning
postgresql://. That is the key to the well — more on it in a moment. - Make the table. I asked for it in English: “make a table called jobs, one row per job, with columns for customer, address, the job, status, who we're waiting on, the date it came in, and the total.”
- Put Dale's jobs in it — the same three from the inbox you have seen since session three, plus four already sent so there is something to add up.
- Ask it things in English. That is chapters three and four, and it is the whole point of the exercise.
The connection string is a key. Anyone who has it can read and change everything in your well, from anywhere, without a password prompt.
So: it never goes in a public repository, it never gets pasted into a chat window or an email, and it never appears in a screenshot. It lives in a file called .env.local in the project folder, and the very first thing you do is add that filename to .gitignore so the markers from session seven never pick it up.
If one does get out: go back to the dashboard and reset it. It takes a minute, and everything that was using the old one stops working until you update it — which is annoying, and much better than the alternative.
Before the next session
- Get the free Vercel account. The walkthrough above. Ten minutes, and you need it next time regardless.
- Dig one well and leave it empty. Storage, Neon Postgres, free plan, give it a name. Then close the tab. You have a well.
- Look at the connection string once so you know what one looks like, and put it nowhere.
- Take out the map you wrote last session and read heading two again — where the information comes from.
- Answer the question from chapter two, in writing, on the map: who is going to use this? Just you, you and your staff, or your customers? One line. It changes everything that comes after it.
- Then sketch the columns. What is the one kind of thing you are keeping — jobs, customers, deliveries? And what facts do you keep about each one? A list on paper is exactly enough.
Everything from every session is at github.com/brainit-consulting/ai-workshops — pick end-of-009 from the dropdown for the table Dale's well was built from.
And if the account or the well is where you get stuck, or you simply have a business to run and no evening to spend on this: that is what I am here for. Getting somebody unstuck takes minutes, and I would rather do that than have you decide the whole thing is not for you.
Step five is the one to actually do. It is one line, and it is the line that decides whether the next thing you build is an afternoon or a fortnight.
Questions people actually ask
Six that come up every time this session is taught.
Is this not just a big spreadsheet?
A bucket is not a well, however big the bucket.
It is close enough to picture, and it is a good place to start from. Two real differences: several things can draw from a well at the same moment without waiting or disagreeing, and a well can be asked questions of all of it at once. A spreadsheet is a file, and a file has one person in it at a time.
Do I need to learn SQL?
You do not need to dig to drink. You do need to look in the bucket.
No. You need to be able to read four lines of it and say whether it asked what you meant. That is a twenty-minute skill and it is worth having, because the answer that comes back will look equally confident whether the question was right or wrong.
What does it cost?
Free until the herd gets big.
Nothing, at the size anybody in this room will use. Free tiers on both Vercel and Neon are generous, and no card is asked for. If you ever outgrow it, you will have a business that can afford the bill and it will be about the price of a phone contract.
Is my information safe out there on the internet?
A well with a lid beats a bucket left in the yard.
Safer than the office computer, honestly — it is backed up, it is patched, and it does not get stolen out of a truck. The weak point is not the well; it is the key. Guard the connection string and you have done the large majority of it. And keep anything you would not want in the newspaper out of it until you know more.
What happens to my folder of files?
The old trough stays where it is until the new one holds water.
Nothing, yet. You do not move anything today. When you do move, you move one kind of thing at a time and you keep the folder until you have stopped needing it — which, with markers from session seven behind you, costs nothing to do carefully.
What if I get the columns wrong?
You will. Wells get deepened.
Everybody does, and adding a column later is a small job. The thing that stings is not a missing column — it is the same fact written in two places, which is why chapter three spends its time there rather than on getting the list perfect.
Plain words
Everything the series has named so far. Today's are marked.
This list grows every session and always shows the lot, so you never need last week's handout to read this week's.
- Large language model (LLM) 001
- The engine that predicts the next word. The horse.
- GPT 001
- Generative — it makes new text rather than looking up a stored answer. Pre-trained — all its learning happened in advance. Transformer — the design of the machinery underneath. A breed name, not a job title.
- Knowledge cutoff 001
- The date its training stopped. It knows nothing after it, and doesn't know that it doesn't. The last day the horse was out in the world.
- Prompt 001
- What you type. A pull on the reins.
- Chatbot 001
- A model you can talk to, turn by turn. Horse plus bridle.
- System prompt / instructions 001
- Standing orders sent with every message, whether you type them or not. The saddle.
- Context window 001
- How much of the conversation it can hold at once. How far it can see on this ride.
- Token 001
- A chunk of a word — how length is counted, and how you're billed. Sugar cubes.
- Hallucination 001
- Making something up and sounding certain. Shying at a shed snakeskin.
- Tool 002
- A specific action it's allowed to take in the real world. A saddlebag.
- MCP 002
- An agreed standard for plugging tools into a model. Standard-size buckles.
- Agent 002
- A model given a goal, tools, and permission to keep going. A working horse, not a show pony.
- Agentic loop 002
- Look, decide, act, check, repeat. The ride itself.
- Human in the loop 002
- A person approves before something real happens. A hand on the reins.
- Automation 002
- The same work happening without you starting it each time. The horse knows the route.
- File 003
- A thing with a name and contents. A single piece of gear.
- Folder (directory) 003
- A box holding files, and sometimes other folders. A shelf.
- Project 003
- One folder holding one job's worth of everything. The room, with the door shut.
- Path 003
- The written address of a file — which boxes it sits inside. Directions to the shelf.
- Editor (VS Code) 004
- A window showing you one folder and everything in it. The tack room.
- Terminal 004
- A panel where you type an instruction to the computer directly. Talking to the stable itself.
- Install 004
- Putting a program on your own machine, once. Building the room.
- Permission prompt 005
- The stop before it changes anything, showing what it plans to do. The gate, and your hand on the latch.
- Approval mode 005
- Whether it asks every time, works on its own, or only shows a plan. How loose you're holding the reins.
- Interrupting 005
- Stopping it mid-job with the escape key. A pull on the reins. Ordinary.
- Project instructions 006
- A plain-English file of standing rules that lives in the folder. The saddle, hanging in the room.
- Run a command 006
- Doing something on the computer rather than writing words about it. Actual work, not conversation.
- Working on copies 006
- Duplicating a file so the original can't be harmed. Schooling in the paddock, not on the road.
- Version control 007
- Keeping every previous version of everything, so any of them can come back. A trail you can ride back.
- Git 007
- The program that keeps the trail. It runs on your own machine. What drives the markers in.
- Commit 007
- One marker, with a short note saying what you had just done. A gate you can ride back through.
- Repository (repo) 007
- A folder that keeps its own history. The field, with the trail marked in it.
- GitHub 007
- A copy of the repository kept online — a real backup, and a way to hand it to somebody. The shared stable at the trailhead.
- Push and pull 007
- Sending your markers up to that copy, and fetching down anything that is there and not here. Riding to the trailhead and back.
- Spec (brief) 008
- One page describing a job well enough to hand it over. What it must do — not how to build it. The trail map. Where you are going, not which foot the horse leads with.
- Scope 008
- What is in this job, and what is deliberately not. Where the map stops. The country past the edge is not today's ride.
- Acceptance 008
- How you will know the thing is right when you see it. How you know you arrived.
- Plan mode 008
- A setting where it works out what it would do, and shows you, before touching anything. Reading the map aloud before anyone mounts up.
- Assumption 008
- Something you took to be true and never checked. A stretch of map you drew from memory rather than from riding it.
- Database 009
- One place the information lives, built to be read and written by several things at once without ever disagreeing with itself. The well.
- Table 009
- A list of one kind of thing, with the same facts recorded about each one. One list on the slate: every job, every time.
- Row 009
- One of the things. One job, one customer, one invoice. A single line on the slate.
- Column 009
- One fact, kept about every row. Customer. Status. Date received. The same question asked of every line.
- Query (SQL) 009
- A written question put to the database. SQL is the language they are written in. Lowering the bucket, and what you asked it to bring up.
- Connection string 009
- One line of text that says where the well is and unlocks it. Treat it as a key, because it is one. The key to the pump house.
- Postgres (Neon) 009
- The most widely used serious database; Neon is a company that runs one for you. A well somebody else dug, and maintains.
Everything on one page
If you photograph one thing today, photograph this.
1 · One well
Every fact written down once, in one place.
2 · Rows and columns
One row per thing. One column per fact. That is all of it.
3 · Read the question
You will not write the SQL. Check that it asked what you meant.
4 · Taking the wagon to market
Nobody buys from your barn. Putting it on the internet.
The question that decides everything: who is going to use this? Just you — keep your folder. You and your staff — dig a well. Your customers, with logins — that is a bigger job, and worth planning before you start rather than after.
#010 — Taking the Wagon to Market
You have a horse, a map, an undo and now a well. Everything you have built so far lives on your own machine, where precisely one person can see it — you. Next time we put something on the internet: a real address, that a customer could type in, that works when your laptop is shut. It is the session where the thing you have been making stops being a thing you have been making.
Before you come: have the free Vercel account from today, and think of one thing you would want a customer to be able to see.
I do this for a living, and love to help people.
Thirty-plus years in enterprise software and a computer science degree — which mostly means I have watched a great many horses bolt, and I can usually tell you which ones are worth saddling before you spend money on the saddle.
In person
Your team, your room, your actual work on the whiteboard instead of somebody else's examples.
Over video
The same session, at your desks, with fewer chairs to stack afterwards.
Built for real
When the idea survives the workshop and somebody has to go and build the thing — that part I do too.
Fun fact — I rode to school on horseback as a kid in South Africa. So the metaphor isn't borrowed. I've done the falling off in person.
Emile du Toit brainitconsulting.com
Workshop #009 · The Well
© 2026 Emile du Toit, BrainIT Consulting
Print it, download it, share it with your team. Just leave my name on it.