{"course":{"slug":"ai-for-small-business","title":"AI for a Small Business","url":"https://addaly.com/learn/ai-for-small-business","level":"beginner","track":"work"},"lesson":{"slug":"the-data-you-already-have","title":"What you are already sitting on, and what of it is usable","url":"https://addaly.com/learn/ai-for-small-business/the-data-you-already-have","position":68,"of":88,"minutes":9,"answer":"Your transaction records are far more useful than any dataset you could buy, but only for questions about things you recorded, and the row that matters is usually a customer over time.","keyIdea":"Your transaction records are far more useful than any dataset you could buy, but only for questions about things you recorded, and the row that matters is usually a customer over time, not a sale on a day."},"body":{"format":"markdown","text":"## The inventory nobody takes\n\nBefore buying anything, list what your business already stores. For most small businesses it comes to more than they expect:\n\n- **Point of sale or till**: every sale, with items, time, amount, often payment method. Two years of this is typically 10,000 to 60,000 rows.\n- **Bookings or jobs**: who, when, what, cancelled or not, by whom.\n- **Invoices and accounts**: customers, amounts, dates raised and dates paid. The dates-paid column is one of the most informative in any small business and is almost never analysed.\n- **Website or shop platform**: sessions, products viewed, baskets abandoned.\n- **Email and messages**: enquiries, complaints, the words customers actually use.\n- **Suppliers**: what you paid, when, and how that moved.\n\nThis is better material than anything you could buy, for one reason: it is about your customers, your prices and your area, and a bought dataset is about somebody else's.\n\n## The question data can and cannot answer\n\nRecords can only answer questions about what was recorded, and the gap between those two things is where most small-business analysis goes wrong.\n\nYour till knows what people bought. It does not know what they came in for and could not find. Your booking system knows who booked. It does not know who rang, heard the price, and put the phone down. Your invoices know who paid late. They do not know why.\n\nSo a perfectly clean analysis can tell you that Tuesdays are quiet, and cannot tell you whether Tuesdays are quiet because demand is low or because you are closed at lunch. The absent rows are invisible and they never appear in any chart.\n\nThe practical discipline: before analysing anything, write down what would have to be true for a row to be missing. It takes two minutes and it prevents most confident nonsense.\n\n## The row you analyse is a decision\n\nThis is the step people skip, and it changes the answer more than any technique.\n\nA sales export has one row per transaction. Most of the interesting questions are about customers, not transactions: who comes back, who spends more over a year, who stopped. Answering those means building a second table with one row per customer: first purchase, last purchase, number of orders, total spent, average gap between orders.\n\nThat transformation is the analysis in most small businesses. Everything after it is decoration. And it is ordinary spreadsheet work: a pivot table, or twelve lines of Python, or a `GROUP BY` if your platform gives you a query window.\n\nThe equivalent for a service business is one row per job; for a clinic, one row per patient episode. Decide what a row means before you touch anything, because two analyses of the same export at different grains will disagree and both will look right.\n\n## How much is enough\n\nThere is no threshold, but there are honest bands.\n\nUnder a few hundred rows, you are in the territory of looking at it and thinking. Charts, sorting, reading. Anything called a model is describing noise, and the last lesson in this block goes into why.\n\nA few thousand rows gets you reliable descriptive answers: what sells, when, to whom, which customers are worth what.\n\nTens of thousands gets you into genuine prediction, with caveats. Most independent shops reach this over two or three years; most small service businesses never do, and should not feel short-changed by it.\n\n## Getting it out\n\nNearly every platform has an export button producing a CSV, usually buried under reports. Take it monthly and keep the files. Two reasons: platforms change what they expose, and vendors get acquired.\n\nWatch for three things in the export. Dates arriving as text in a regional format, which will silently misread. Currency symbols and thousands separators turning numbers into text. And a \"customer\" column that is a name rather than an identifier, which means two customers called the same thing are one, and one customer who moved house is two.\n\nFree path for all of it: LibreOffice Calc opens anything a spreadsheet can hold, Python with pandas handles files far too large for a spreadsheet, and SQLite will take a million rows on a laptop without complaint. None of this costs anything.\n\n## The first exercise worth doing\n\nExport twelve months of sales. Build the one-row-per-customer table. Sort by total spent, descending.\n\nMost owners find something they did not know within five minutes: usually that a small group accounts for far more than they assumed, or that a category they are proud of is nobody's second purchase. That is the value of this block, and it arrives before any model does."},"check":{"question":"A salon exports a year of bookings, one row per appointment, and finds the average customer spends USD 68 in a visit. The owner wants to know whether loyalty schemes would pay. What is the most important change to make before analysing?","options":[{"text":"Filter out cancelled and no-show appointments, since they inflate the row count and pull the average spend downwards in a way that misrepresents real trading.","correct":false,"tempting":"A sensible cleaning step, and it corrects the average rather than answering a question about customers over time."},{"text":"Rebuild the table with one row per customer, since a loyalty question is about repeat behaviour and the current grain cannot show it.","correct":true},{"text":"Join the bookings to the till data so that products bought alongside services are included, giving a complete picture of what each visit is actually worth.","correct":false,"tempting":"Enriches the visit, which is still the wrong unit for a question about whether people come back."},{"text":"Add a column marking which stylist performed each appointment, because loyalty in salons attaches to individuals and the scheme's design depends on who customers return for.","correct":false,"tempting":"A genuinely useful variable for the later analysis, but it does not fix the fact that the table has no notion of a returning customer."}]},"prev":{"slug":"automating-away-the-noticing","title":"The thing you lose that nobody counts","url":"https://addaly.com/learn/ai-for-small-business/automating-away-the-noticing"},"next":{"slug":"cleaning-before-counting","title":"Why cleaning is most of the job","url":"https://addaly.com/learn/ai-for-small-business/cleaning-before-counting"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'What you are already sitting on, and what of it is usable', in AI for a Small Business. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-for-small-business/the-data-you-already-have (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"What you are already sitting on, and what of it is usable","courseTitle":"AI for a Small Business","module":{"index":8,"slug":"your-own-numbers","title":"Learning from your own numbers"},"answer":null,"keyIdea":"Your transaction records are far more useful than any dataset you could buy, but only for questions about things you recorded, and the row that matters is usually a customer over time, not a sale on a day.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-inventory-nobody-takes","runs":[{"text":"The inventory nobody takes"}]},{"t":"p","runs":[{"text":"Before buying anything, list what your business already stores. For most small businesses it comes to more than they expect:"}]},{"t":"ul","items":[[{"text":"Point of sale or till","b":true},{"text":": every sale, with items, time, amount, often payment method. Two years of this is typically 10,000 to 60,000 rows."}],[{"text":"Bookings or jobs","b":true},{"text":": who, when, what, cancelled or not, by whom."}],[{"text":"Invoices and accounts","b":true},{"text":": customers, amounts, dates raised and dates paid. The dates-paid column is one of the most informative in any small business and is almost never analysed."}],[{"text":"Website or shop platform","b":true},{"text":": sessions, products viewed, baskets abandoned."}],[{"text":"Email and messages","b":true},{"text":": enquiries, complaints, the words customers actually use."}],[{"text":"Suppliers","b":true},{"text":": what you paid, when, and how that moved."}]]},{"t":"p","runs":[{"text":"This is better material than anything you could buy, for one reason: it is about your customers, your prices and your area, and a bought dataset is about somebody else’s."}]},{"t":"h2","id":"the-question-data-can-and-cannot-answer","runs":[{"text":"The question data can and cannot answer"}]},{"t":"p","runs":[{"text":"Records can only answer questions about what was recorded, and the gap between those two things is where most small-business analysis goes wrong."}]},{"t":"p","runs":[{"text":"Your till knows what people bought. It does not know what they came in for and could not find. Your booking system knows who booked. It does not know who rang, heard the price, and put the phone down. Your invoices know who paid late. They do not know why."}]},{"t":"p","runs":[{"text":"So a perfectly clean analysis can tell you that Tuesdays are quiet, and cannot tell you whether Tuesdays are quiet because demand is low or because you are closed at lunch. The absent rows are invisible and they never appear in any chart."}]},{"t":"p","runs":[{"text":"The practical discipline: before analysing anything, write down what would have to be true for a row to be missing. It takes two minutes and it prevents most confident nonsense."}]},{"t":"h2","id":"the-row-you-analyse-is-a-decision","runs":[{"text":"The row you analyse is a decision"}]},{"t":"p","runs":[{"text":"This is the step people skip, and it changes the answer more than any technique."}]},{"t":"p","runs":[{"text":"A sales export has one row per transaction. Most of the interesting questions are about customers, not transactions: who comes back, who spends more over a year, who stopped. Answering those means building a second table with one row per customer: first purchase, last purchase, number of orders, total spent, average gap between orders."}]},{"t":"p","runs":[{"text":"That transformation is the analysis in most small businesses. Everything after it is decoration. And it is ordinary spreadsheet work: a pivot table, or twelve lines of Python, or a "},{"text":"GROUP BY","code":true},{"text":" if your platform gives you a query window."}]},{"t":"p","runs":[{"text":"The equivalent for a service business is one row per job; for a clinic, one row per patient episode. Decide what a row means before you touch anything, because two analyses of the same export at different grains will disagree and both will look right."}]},{"t":"h2","id":"how-much-is-enough","runs":[{"text":"How much is enough"}]},{"t":"p","runs":[{"text":"There is no threshold, but there are honest bands."}]},{"t":"p","runs":[{"text":"Under a few hundred rows, you are in the territory of looking at it and thinking. Charts, sorting, reading. Anything called a model is describing noise, and the last lesson in this block goes into why."}]},{"t":"p","runs":[{"text":"A few thousand rows gets you reliable descriptive answers: what sells, when, to whom, which customers are worth what."}]},{"t":"p","runs":[{"text":"Tens of thousands gets you into genuine prediction, with caveats. Most independent shops reach this over two or three years; most small service businesses never do, and should not feel short-changed by it."}]},{"t":"h2","id":"getting-it-out","runs":[{"text":"Getting it out"}]},{"t":"p","runs":[{"text":"Nearly every platform has an export button producing a CSV, usually buried under reports. Take it monthly and keep the files. Two reasons: platforms change what they expose, and vendors get acquired."}]},{"t":"p","runs":[{"text":"Watch for three things in the export. Dates arriving as text in a regional format, which will silently misread. Currency symbols and thousands separators turning numbers into text. And a “customer” column that is a name rather than an identifier, which means two customers called the same thing are one, and one customer who moved house is two."}]},{"t":"p","runs":[{"text":"Free path for all of it: LibreOffice Calc opens anything a spreadsheet can hold, Python with pandas handles files far too large for a spreadsheet, and SQLite will take a million rows on a laptop without complaint. None of this costs anything."}]},{"t":"h2","id":"the-first-exercise-worth-doing","runs":[{"text":"The first exercise worth doing"}]},{"t":"p","runs":[{"text":"Export twelve months of sales. Build the one-row-per-customer table. Sort by total spent, descending."}]},{"t":"p","runs":[{"text":"Most owners find something they did not know within five minutes: usually that a small group accounts for far more than they assumed, or that a category they are proud of is nobody’s second purchase. That is the value of this block, and it arrives before any model does."}]}],"check":{"question":[{"text":"A salon exports a year of bookings, one row per appointment, and finds the average customer spends USD 68 in a visit. The owner wants to know whether loyalty schemes would pay. What is the most important change to make before analysing?"}],"options":[{"text":[{"text":"Filter out cancelled and no-show appointments, since they inflate the row count and pull the average spend downwards in a way that misrepresents real trading."}],"correct":false,"tempting":[{"text":"A sensible cleaning step, and it corrects the average rather than answering a question about customers over time."}]},{"text":[{"text":"Rebuild the table with one row per customer, since a loyalty question is about repeat behaviour and the current grain cannot show it."}],"correct":true,"tempting":null},{"text":[{"text":"Join the bookings to the till data so that products bought alongside services are included, giving a complete picture of what each visit is actually worth."}],"correct":false,"tempting":[{"text":"Enriches the visit, which is still the wrong unit for a question about whether people come back."}]},{"text":[{"text":"Add a column marking which stylist performed each appointment, because loyalty in salons attaches to individuals and the scheme’s design depends on who customers return for."}],"correct":false,"tempting":[{"text":"A genuinely useful variable for the later analysis, but it does not fix the fact that the table has no notion of a returning customer."}]}],"order":[3,0,1,2],"why":null},"prev":{"slug":"automating-away-the-noticing","title":"The thing you lose that nobody counts","minutes":8},"next":{"slug":"cleaning-before-counting","title":"Why cleaning is most of the job","minutes":9}}}