334 Can AI Fix My Client’s Accounting Ledger?
26 Sept 2024 · 30 min
Jason Staats tests OpenAI's O1 Preview on a real QuickBooks file to see if it can spot and fix accounting errors. The model caught misused opening balance equity, undeposited funds problems, and negative liability balances, then proposed concrete fixes for each one.
Chapters
The big day is here. Okay. If you've been tuning in the last week or so, we've been kicking the tires on OpenAI's latest model O1, particularly in its ability to just in a totally open ended way review a set of financial statements for a small business. Basically the same way that like a senior accountant would. So last week we had it review the balance sheet and it flawlessly identified all of the things that could potentially be issues. I went through and I did it myself. It came through this, did it pretty much the exact same way, arguably a little bit better with a little bit more detail. Today we are taking it a step further. Can it actually follow through if I give it more detail, the full general ledger, can it actually follow through and fix the issues or determine if they even are issues or if we need to go ask the business owner a question to like get to the bottom of it, can it actually fix this stuff? Honestly it's actually kind of a big deal. Come on in, we're going to test it out and see how this go. So yesterday we established the new OpenAI model. Frankly very good at like a high level review of financial statements to identify potential issues. Yesterday we tried a whole bunch of different language models to see like what is the best for reviewing financials right now. And what we learned. Nobody is even close to this new latest OpenAI model yet. Specifically we're using 01 Preview is what it will look like in ChatGPT. It says 01 Preview by the way, in a month's time or so we're supposed to have the full 01 which is supposed to be even better. But today, whereas before we only gave it a balance sheet, we are now going to have it dig into each potential issue it identified and give it both the balance sheet and the general ledger. So it has more detail to determine. Is this really a problem? Now a bit of background specifically about the demo company file that we're using and how much data is here. So this is the Craig's Design and Landscaping Services demo company file from QuickBooks Online and it's not a huge volume of information. And so we're being, we're going easy on the AI here. The balance sheet is not humongous and specifically the general ledger report isn't humongous. Basically if I export it to Excel it's 253 rows, so maybe 100, 150 transactions. Because we're reviewing a comparative balance sheet of the current month and the previous month, I've given it the GL detail for the last two months. And so if you want to shoot holes in this test, it is, well, would this actually hold up with a bigger company file? Because in a firm, most of the company files you work with will be bigger than this. You'll have small businesses like this, but a large volume of them will be larger than this. So what are the limitations when it comes to size? Could you actually do this with a larger company file? Well, to answer that question boils down to what are the context limits of a language model? Basically, how much information can it hold and remember at any given time? And this is one area of language models that's improved massively over the last couple of years. The first ChatGPT could remember like a page and a half of information at a time. So very quickly as you're chatting with it, it's already forgotten the beginning of the conversation and, and it's just doing this thing where it has like a rolling memory window of the most recent things you've said. But language models these days can remember way, way more. We actually have models like Google has some of the largest context window models that can remember thousands of pages of information at a time. So we absolutely have models that are large enough to remember this stuff. But what about the model we're using today, specifically 01 Preview. How much can it remember at any given point in time? Well, right now, if you look at the ChatGPT pricing page under the team plan, which is the plan that I'm on right now, it says you have a 32,000 token context window. And so what does that actually mean? That equates to it being able to remember between 20 and 25,000 words at a time. And if you're curious, this whole copy paste of my instructions to it on, on what to do and the error and the full text of the balance sheet and the full text of the general ledger for the last two months, let's see how many words that is. Bearing in mind that Chat GPT is only going to remember, say, I don't know, 24,000 words at a time. Okay, it is all of 3,000 words. That's it. So we are maybe 15% to the limit. So you could have a company that was easily 5x the volume of this. Now would it be as performant? That's certainly a thing to test. If there's more information, would that make it not work as well? Potentially, if you're a total AI nerd, the proper way to test this is with the OpenAI tokenizer. But this is a Podcast, that's not the most of the folks listening, so we'll cruise past that. So yes, this is a small company, not a huge amount of data. About 150 transactions over two months. But most of this ought to hold up up to 5x this scale, which, I mean, if you go up to like how many transactions would that be? 750 transactions. Like that's covering a pretty good percentage of SMBs would fall under that. 750 transaction a month. Actually that's two months. Okay, so between three and 400 transactions a month, not a huge volume, but still covering a good amount of SMBs. That's over 10 transactions a day. You can have obviously crazy high volume situations where that wouldn't make sense. But let's start simple and see how this does. So how are we going to test its ability to resolve one issue at a time? It identified 10 issues and we're now asking it to go a step deeper with more detail because we're providing the general ledger detail. Here's how I'm prompting it in a new conversation. And this is how most of our AI apps work, like in the wild. And how they get developed is you kind of separate out the functions. And so you could think about it as like a supervisor function and then a worker function. The supervisor function was a high level review of the balance sheet and all we gave it was the balance sheet with which to do that high level review. Now for each of those items that it identified, it's going to hand off that task to a worker. In this case, just another ChatGPT conversation with additional detail and say, look specifically into this first issue with this additional detail. And so here's how I'm prompting it. Like word for word. You're an expert accountant. This is the worker prompt. You're an expert accountant with decades of experience that will troubleshoot a potential error in financial records. You don't provide insights about the company or its health. You're solely focused on the technical accuracy of the financial records. Upon reviewing the balance sheet, a potential error has been identified by your manager. Here is the balance sheet they reviewed. I copy and paste the full text of that in there. And then here is the general ledger detail for your review. And I copy and paste the last two months general ledger detail. And here is the potential error your manager identified. They didn't have the general ledger like you do. And I copied and pasted in the first issue. Opening balance equity changes issue. The opening balance equity account shows a significant change from 5,000 in July to negative 9,905 in August and then it offers some context. Opening balance equity is typically only used during the initial setup of a company. It shouldn't change thereafter. So it probably needs to be moved to retained earnings or owner's capital. That was the original error that was notified that was the original error that was identified in the first conversation that we're calling kind of that supervisor level of review and the last bit of the prompt is this Review this error for validity and decide either one. There is no error, in which case provide ledger detail and reasoning to Support your conclusion 2. There is a likely error in which case provide ledger detail to support your conclusion and a proposed resolution or or three that we need more information. Provide any info that would be helpful to ask the business owner a clear question that would resolve this this episode is brought to you in part by Live Flow. So been around, you probably already know what Live Flow does. It connects your accounting ledgers to your favorite spreadsheet app, Excel or Google Sheets, QuickBooks or Xero. But we're on kind of an AI theme lately with this new open AI model coming out. You want to know a wild hack that liveflow can enable? How about syncing selected data out of your accounting system that a language model can interact with? So in the AI tests I've been running lately with this new OpenAI model, you can't upload files to it. It's all text. And so I'll like drag and select the text from these big financial reports, paste it in there. Fine. But what liveflow lets you do is build whatever custom reporting you need to even like reference the cells in one sheet to the cells in another sheet to roll up all this data in totally customizable ways, even across different companies, because they support consolidations as well. But let's say I wanted to augment that with AI Buddy. How about creating all of the context in one view that your AI needs to do some sort of job, quality assurance, whatever it is. I set up those sheets in Live Flow. One big select copy pasta into my language assistant. It's got all the data it needs to do the review or anything else. And then because with Live Flow you can template all these reports, you simply change the company that is connected to that spreadsheet. Boom. You've got all the live data for the next company. Obviously loads of useful ways that you can like pull all of your accounting ledger together. And that's kind of the beauty of Live Flows. You can pull whatever you need out of the platform, organize it however you want. And if you're exploring using AI for like quality assurance and technical review, stuff like that boy Lifelow could be your best friend there. That's actually a pretty cool idea. Learn more about Lifelong down in the show. Notes this episode is sponsored in part by Team up, who will help you find talented folks in the Philippines to work for your accounting firm. They have recruiters on the ground in the Philippines. We'll find you awesome people. I'm looking at a bunch of them right here. Rona, that's her name. She's got a bachelor's in information systems. She went to work for a US firm as a virtual assistant. They're paying her 1070amonth. She had four years experience. She's handling people's inboxes, calendars and scheduling their social media. A firm hired her through Team Up. How about Aaron? He's got a BS in accounting as a cpa. Six years income tax US income tax prep experience. So he's doing everything business, personal hustle and ultra tax. US firm hired him. They're paying him 1965 per month. Farah, she's got an MBA and a CPA was last running an entire team of bookkeepers. Six years experience US firm hired her, their painter. Just over three grand a month to run a team. A team gang. Whether these folks are in the us, whether they are abroad, they are capable of running any part of your accounting firm. Particularly as a lot of firms are moving towards like kind of a relationship manager model where you have an onshore person that is managing the client relationship. That's really like the one blocker for some folks is they won't put offshore folks in direct contact with contact with clients though even that is kind of evolving. But our worldview around offshore work is oftentimes misshaped by the fact that menial tasks in other contexts like support will be delegated to, you know, India or something like that. The reality is these are super talented people that are capable of learning absolutely anything your onshore team is learning. And you've got big four firms, you got regional firms, you got all sorts of firms employing tens of thousands of people in the Philippines that are absolute experts at their craft. I've shared before, my last four hires were in the Philippines at my firm. Completely changed the way we approach getting the work done. And that is again how I would build a new firm tomorrow. To learn more about Team up, check out the link down in the show notes. So to resolve this first issue of the opening balance equity account, it thought about it for 30 seconds I actually gave it all that and it thought for 30 seconds before coming back with a response. Its conclusion is there's likely an error in how the opening balance equity account is being used. Explanation. Opening balance equity account should only be used during the initial setup of a company's books to offset initial balances. It should not be affected by regular transactions thereafter. However, in August, several transactions are improperly affecting this account, leading to a significant change from 5,000 in July to negative 9,905 in August. Ledger details supporting the conclusion. Okay, it lists out all three transactions that hit the opening balance equity account. First is the truck purchase. Next is the opening deposit to the savings account of 600 bucks. And then third. Oh, is the recording of two loans, a $25,000 loan and a $4,000 loan. It then gives a proposed resolution. Okay, proposed resolution. It starts with the truck purchase. It says if it was financed, move the credit side of the entry to notes payable. Instead of opening balance equity the deposit into savings. It says if it was a transfer from checking, change the credit to the checking account. If it was an owner contribution, change the credit to owner's capital. Wow, it's even giving. So it gave multiple potential journal entry fixes depending on the source of the issue. Recording loans, it says change the debit to cash or asset purchased with the loan. And then last, it says to close opening balance equity any remaining balance to a proper equity account. And then actually, like in a table view, lists out all of the adjustments. So it's having us move all the stuff that was posted to opening balance equity in the current period to the proper alternatives. And then actually having us clear out the previous balance, the 5,000 that was there, to an equity account, I would say that's, that's perfect. It didn't really frame like, if there was a question to have to ask the client, it didn't frame anything as a question. But in those cases where it could have been several things, it actually gave you multiple proposed journal entries. Like the. The opening deposit in a new savings account. It said if it's a transfer from checking, here's the proposed journal entry. If it's an owner contribution, here's the proposed journal entry. I would say that first one had absolutely aced. If I was a junior and I handed off a set of financial statements to a senior and they came back with the list of potential issues that it's identified and then went further into detail on how to resolve those potential issues with like, narrative explanation of why it's incorrect. This would have Been incredibly useful for me. Even if the junior is then not fully capable of getting to a solution, they at least now know the question to ask right what did he do with the proceeds from these loans? Did you buy a new asset? Did you take that cash out of the business? Is this an idle loan? Too soon? I would say that first response is perfect. Let's look at the second error that it identified or potential issue because they won't all necessarily be errors. And here's a good fringe one. It said absence of retained earning balance. I wouldn't have called this out. So there's a retained earnings line on the report, but QuickBooks didn't put any dollar amounts. It didn't even put zeros there because presumably the company wasn't in operation the prior year. This is one of those fringe ones where I don't know if you would actually say it's wrong. My human judgment. I would probably know that it was a new company and not have any concerns about that. But I'm curious how it reads between the lines here. I'll be totally honest. If I was relying on an AI to generate a list of potential issues with financial statements, the user interface for this would probably be here's a list of potential issues and with the click of a button resolve any ones that you know are not issues. And that one I would just click and resolve and make go away before it then investigated the other issues. Eventually what this looks like like a fully AI solution is it does that review and then it comes back and it says I noticed this opening balance equity problem, but I did some further digging and I found these potential solutions accept or modify. And I would say yeah, the, the opening deposit for the savings account was an owner's contribution. You're good to post that entry like that's the fully AI solution down the road. Okay, here's the response on it. Not providing any amounts on the retained earnings line. Interesting conclusion. There is likely an error explanation. The retained earnings account should reflect the cumulative net earnings or loss from prior periods in the provided balance sheet. The retained earnings account shows a zero balance in both periods July 31 and August 31. This suggests that net income from previous periods has not been closed to retain earnings. Upon reviewing the general ledger, there's no entries entertained earnings. Proposed resolution for prior periods. Create a journal entry to transfer the net income from July 31 to retained earnings. I say this is wrong. Like you wouldn't do that month over month. You would do it at year end, right? I would disagree with this one. This is the first one that it's got wrong. Interesting. Let's try the next issue that it identified. Third issue was a negative liability balance. Basically the previous month it had a negative balance of 21 bucks and the current month had had a positive balance. Super common. How would I look into this error in practice? Well, I'm probably going to look for like third party confirmation of what should the balance actually be. Do we have a statement we could print out or something like that? This doesn't have access to that. All it has is the general ledger detail. And so the even more powerful version of this is giving it like additional documentation or even giving it a list of like work paper names that it could request to pull the detail of that. All right. Conclusion. There's likely an error in the Board of Equalization payable account. Took 21 seconds to process this. It provides a table of the seven transactions that hit that account. Actually formatted in a really nice way. This is a tricky one where there isn't like a clear solution like there was for opening balance equity. So it's saying basically go back to the July activity. Identify any payments made to the Board of Equalization that may have been overpaid or incorrectly recorded. Honestly, for that one, that's probably as good of an answer as it can give for the detail it's provided. Let's look at a couple more here. Number four was high undeposited funds balance. What's usually the source of that? Deposits not getting posted to the checking account. Right. All right. Conclusion. There is a likely error in the undeposited funds account. Says the significant increase is primarily due to two large payments received but not deposited by the end of the month. One is a payment from cool cars on August 17 for 1675 and to a payment from Freeman Freeman sporting goods on August 17th for 387. Reasoning it's unusual for substantial payments received on August 17th to remain undeposited by August 31st. Smart Bot proposed Resolution 1. Verify physical deposits. Check bank statements and deposit slips for August and early September and early September. That's smart. Determine if those two payments were deposited. If they're found, record the missing deposits. And then it shows you how to do that. It's got some notes about looking into delays, implementing controls, but mainly what it called out was the culprit was two deposits from August 17th which probably shouldn't be outstanding clear to August 31st. Right. That's actually a great answer. Boy. Imagine so interestingly that one took longer than the others to run and part of this is Sometimes just like OpenAI the API responses, some are way faster than others. So this one took 56 seconds. And if you add up all the time it's taken for each of these, if you in a single sequence of prompts like kicked off this review, how long would it take right now? The initial financial statement review where it identified the 10 points was like 30 seconds and then each of these individually have been 30 to 60 seconds for it to look into. Imagine being able to rack up and have all potential issues and all potential resolutions to the issues in a single view. It would probably take seven or eight minutes for it to do that right now. But I don't know about you like everything I'm hearing and seeing here, super, super useful. If I'm a senior, why it's useful to me is maybe as a second set of eyes, but primarily as an assistant for my team so that it goes through the financials, go through this filtering before it ever even comes to me. That's the main thing that I'm looking for here. Again, like it's not necessarily super helpful for the senior person. Besides being like a duplicate of the senior person and giving them a double check, I think it probably raises the quality of everything that hits that senior's desk. This episode is brought to you in part by cloud accountant staffing. Hey, let's hire some talented people in the Philippines. Cause that's what I did in my firm, you know why? Well let's compare this to the traditional hiring method. Going with a traditional recruiter. Startup fees 15 grand. I don't know. Startup fee with cloud account staffing. Thousand bucks. That's it. Annual employee salary onshore for a senior accountant they say 75k. That's reasonable. That checks out. Annual salary for the equivalent Philippines hire. 30k. That was 75 versus 30. With traditional recruiters you got to make a long term commitment. Cloud accountant staffing commit for two months, that's it. Hiring the Philippines usually in about six weeks onshore, you're probably going to deal with two to three months or also maybe eternity and your offshore team benefits, payroll taxes. You don't have to manage that stuff yourself because it is no fun. As opposed to working with super talented people in the Philippines which is very fun. I did it myself. As I've shared, I built my firm tomorrow. Still what I would do hearing from a growing number of folks who tune into this stuff who are like had never really considered it before. Honestly thought you were a shill the first time I said it. Now I've made my first hire and I'm super happy with it. To which I say cool, because it's totally how I would roll a firm. Still learn more about cloud account staffing. Check out a link down in the show notes. This episode is sponsored in part by Financial Sense. You want to talk about software companies that have stepped up their game in the last few years. Financial Sense, they are right at the top of the list actually. Really like intelligently breaking through some assumptions we have about category tech. Like tech in the accounting space being more expensive than general tech. If you are a solo firm operator right now, Financial sense has a $9 a month plan. It's stupid, it's frankly wrong and they shouldn't be doing it. It's irresponsible. But solo firm Runner, look me in the eyes if you're listening. Look me in the ears. Solo firm owner, I see the spreadsheet that you're using to manage projects. Okay. I see those stanky old lead sheets. Stop it. You know, you know you shouldn't be doing this. No amount of analysis paralysis. Well, it's working for now. Makes that okay. All right. Financial Sense going to unlock a whole bunch of stuff for you. Like automated requests, having a system that you can actually pull other people into and scale a client facing portal so clients can self service and like grab copies of of stuff. You know, the niceties of a practice management system. And if you are not a solo firm runner, I got a deal for you. I'm drop, I'm drop a little coupon code down in the show notes, then get you 10% off the big boy plans from Financial Sense. Okay, One thing I've always loved about Financial Sense, anybody can head over to their site, literally click a button and start using it. And that is the signal of a product that believes if you can touch it, you'll like it. Maybe don't trademark that one, but they wouldn't be letting you use it for free if they didn't believe that once you got in there you were going to like it. Okay, solo firm peeps go out get Financial Sense on the cheap. Bigger firm peeps grab that coupon code down below. Learn more about Financial Sense. Let's test this with one more error that it identified or potential error. Introduction of a savings account without a prior period balance. So in the current month end it had 800 bucks in a savings account. Previous month it had nothing. I would want to see what additional information it can give me. Honest, honestly, to almost prevent me from having to look into it myself because When I skimmed this balance sheet, I came up with a list of potential issues. But if AI could automatically identify. Here's the additional context. You would want to put that issue out of your head. If it could actually do that for me, the reviewer, right away, that would actually be really useful. I wouldn't even then have to look into that issue. Right. Says the issue arises with the initial deposit of 600 bucks being credited to Opening Balance Equity. This is a temporary account only used when initially setting up a company's books. So it says it's incorrect because it shouldn't have gotten posted to Opening Balance Equity. It proposes modifying so. So it gives me what the original entry was. Debiting Savings and crediting Opening Balance Equity. It gives me a reversal of that if I wanted to use it. And then the correct entry to use and it's crediting owner's capital. Honestly, like, it's pretty smart. There's still some, like, human reading between the lines of what should be a question to the client and what do I just roll with? But ultimately this comes down to probably from a practical standpoint, who is this useful for? I would say this is tremendously useful for the staff level, the junior, junior level people putting together the financials. I think it genuinely raises the bar of what hits that senior's desk. And so that's useful for the junior. For the junior and staff level. Also useful for the senior. Right. But there's also an element of when you are a junior, there's so much wasted time and not knowing what questions to ask and being afraid to ask the dumb questions. And this, this is just single prompt examples here. Like, we're not having any sort of back and forth, which is usually the best way to use a language model is to have a conversation and push back and be like, are you sure about this? Or tell me more about that. And for a junior to have this smart of an assistant like at their fingertips, while it's not going to be perfect, is a whole lot better than nothing. Or not being able to get access to the senior. I mean, the amount of like afternoons I spent spinning my wheels trying to figure something out by myself where this could have saved me time. And then on the senior side, I'll be honest, originally I was thinking this was mainly just a tool for like junior and staff level folks. But on the senior side, we actually saw a few examples here where if it could have just shown me that context right away, I wouldn't have had to go and look into it. It's almost a faster way of looking into it, right? Because it can tell me, no, these are, these are the three transactions to blame for opening balance equity. And I can be like, I can be like, well, those never should have gone to opening balance equity. Fix them this way. So this is actually useful to the senior if it keeps the senior from having to go in and do their own investigation to figure out what the issue was, right? Or the, or the underlying sources of the issue. Now, what is ultimately the. The user interface. For the best version of this, it's not ChatGPT, but ChatGPT is all we have today. So for ChatGPT, honestly, this is already pretty useful to me. In fact, I would probably try to set up as turnkey of a way as possible for my staff to be able to put information into here and get it to identify potential issues for an initial review. Like that is genuinely something. I would probably be using this for now, which is really weird to say. And this is all, you know, there's a newness to this where we're like, really? Would you do that? Like, that's kind of weird. We talked about the security aspects of this last week, so I won't go into that in depth here. But this is genuinely a new model we've gotten in the last two weeks. It is the preview version of this model and the model, the non preview version we're supposed to have in a month should be better. But then a little further down the road, we're rumored to get GPT4.5 in the fall, GPT5 in Q1 of next year. So while this isn't perfect in every single way, although it was pretty darn good, and honestly, maybe this is an important thing operating maybe at a higher level than like junior level folks in your firm. What is the right time to get plugged into this? I would argue probably right now, because I think a lot of these things would have been helpful to people in my team, but like in its current state. But when we get the workflow figured out here and develop the habit of, of pulling in this assistant, then when the assistant gets way better in a few months and way better again a few months after that, we've already got the workflow nailed down and now it's just getting sweeter, right? So this whole notion that every time you get a new bottle, what was fringe for it before and kind of hard for it before, is table stakes for the next model. Honestly, I wouldn't even argue that this is necessarily fringe for this model right now. Like it's doing it so well, like, I don't know. I wouldn't even necessarily call that fringe. But the next model where this is a piece of cake for it and the model after that, this is going to be absolutely table stakes. The notion of throwing financials and general ledger detail into a model, it's pretty good right now, two model generations from now, which we may have as soon as six months from now. I mean, think about that. Think about the notion that I don't. That means. Does that mean a human doesn't have to do a technical review of a set of SMB books? I can tell you it at least means we don't do a review of it the way that we do now. That's pretty wild. Like, I don't. I can't really come to any other conclusion than that. I know. I'm interested on your take. I try not to get, like, too far out ahead on this stuff because, I mean, it sounds ridiculous to say out loud, but you've seen all of the things that it identified and how it did. This is a small, simple set of SMB books, for sure. Does this ultimately get built into the accounting platform? And it probably should. I don't know if it does, but it moves the target for what it means to be a senior accountant. What are you reviewing? Is what you're doing just being the interface between the language model and the client to ask questions? It sure seems like it shuffles those responsibilities around a little bit. Right? Super interesting stuff. I would love to get your take. How do you feel about this? I think we need to be talking about it because if there's models capable of this, we want to be using them. We don't want to be the person that doesn't know about this. And then you have other firms that are able to use this, and you're just the one kind of out to lunch. You're maybe lagging behind other firms and adopting this and being able to put it to work for your firm because it will take a little time to get comfortable with it and sort of rebuild those workflows around it. When you think about other types of work, more CFO advisory, you know, US Tax work, and the variables that go into that, that feels a little more down the road for me. This reviewing a set of financial statements. This feels close. This feels like language models are pretty close to being able to do a very compelling version of this. Arguably, we've got a pretty darn good version today, but, boy, six to nine months from now, forget about it. Maybe, I don't know we'll see. Let me know what you think down in the comments. Thanks for coming and hanging today. We'll obviously keep kicking the tires on this stuff where it can provide, like, workflow unlocks for you. That's the degree to which this is interesting to me. Does this make my firm more profitable? Higher leverage? Like, can we get more work done? Can I get home for dinner? That's where I want to engage with this stuff. We're going to keep doing that and see what we can find. I'll see you in the next one.
More from Jason


622 Accounting Firms: Watch This Before Selling Advisory [What The Industry Isn’t Saying About The Future]


621 The 9 Most Asked Questions About Accounting Firm AI [AI for accounting firms]
620 The Real Reason Clients and Staff Resist Change [Here’s what to do about it]
619 The NEW AI Agent Approach for Accounting Firms [An entirely new AI agent platform for firms]
618 Accounting Firms: Stop Taking New Clients. Watch This First. [How to know when you’re digging yourself a deeper hole]
615 The First $1B Accounting Firm Rollup [What this means for small accounting firms]
614 The Three Types of Accounting Firm AI [And where to deploy each in your accounting firm]
613 Stop Writing SOPs for Your Accounting Firm. Do This Instead [The NEW way to build your SOPs]