What used to take a wine agency in Quebec two full days of manual SAQ invoice work every month now takes under half an hour — with zero errors, line by line.
Client
A wine agency in Quebec
Year
2025
Role
Builder
Techstack
Services
Drop your SAQ invoices here
PDF · multiple files accepted
“My boss is telling me this year that I have to find a solution to automate a lot of my accounting tasks. Stefano, I don't really know what to do.”
Accounting manager at a wine agency in Quebec
ThisThisisiswhatwhataafriendfriendofofmineminesaidsaidininthethemiddlemiddleofofaavideovideocallcallwewewerewerehaving.having.SheSheworksworksasasananaccountingaccountingmanagermanageratataawinewineagencyagencyininQuebec.Quebec.
IIaskedaskedher:her:“What“Whataccountingaccountingprocedureprocedurespecifically?”specifically?”
”You”Yousee,see,everyeverymonthmonthIIreceivereceivedozensdozensofofinvoicesinvoicesfromfromthetheSAQSAQ(the(thewinewineandandspiritsspiritsgovernmentgovernmentauthorityauthorityininQuebec).Quebec).IIhavehavetotomanuallymanuallyextractextractthetheinformationinformationfromfromeveryeveryinvoice.invoice.SomeSomeinvoicesinvoicesarearequickquicktotoprocess,process,butbutsomesomeothersothersareareaatruetruepain.”pain.”
”So”Sowhatwhatyou'reyou'retellingtellingmemeisisthatthatyouyoutaketakeinformationinformationfromfromaaPDFPDFandandthenthenyouyouexportexportititto…”to…”IIasked.asked.
”A”Aspreadsheetspreadsheetforforthethewholewholeteamteamtotohavehaveaccessaccesstotothetheinformation,”information,”shesheanswered.answered.
IIstartedstartedthinkingthinkingititthrough.through.TheThepredictablepredictablepartspartsofofeacheachinvoiceinvoicecouldcouldbebehandledhandledbybydeterministicdeterministiclogic,logic,codecodethatthatcomputescomputesthethesamesameansweranswereveryeverytimetimeandandsimplysimplycannotcannotdrift.drift.TheThemessy,messy,judgment-calljudgment-callpartspartscouldcouldbebehandedhandedtotoAI,AI,butbutfencedfencedinintightlytightlysosoititnevernevertouchestouchesaanumbernumberititcouldcouldgetgetwrong.wrong.RulesRulesalonealonewouldwouldbebetootoobrittlebrittletotosurvivesurviverealrealinvoices;invoices;AIAIalonealonewouldwouldbebetootoounreliableunreliableforforaafinancefinanceteamteamtototrust.trust.TheThetricktrickwaswascombiningcombiningthemthemsosothetheresultresultwaswassomethingsomethingyouyoucouldcouldactuallyactuallystakestakeyouryourbooksbookson.on.IIcouldcouldseeseethethewholewholeshapeshapeofofit.it.ThisThiswasn'twasn'tgoinggoingtotobebeeasyeasywork,work,butbutIIknewknewexactlyexactlywherewheretotocut.cut.
IIaskedaskedififshe'dshe'dbebewillingwillingtotosendsendmemeaafewfewmodelmodelinvoicesinvoicesandandthethereportsreportsneededneededtotododothethedatadataextraction,extraction,sosoIIcouldcouldseeseewhatwhatIIcouldcoulddo.do.SheSheagreed,agreed,andandIIpromisedpromisedtotocirclecirclebackbackininaacouplecoupleofofdays.days.
WithWithherherdatadataininhand,hand,IIgotgottotoworkworkthethenextnextday.day.IIblockedblockedoutouteveryeverydistractiondistractionandandlockedlockedininforforaacouplecoupleofofhours.hours.IIbuiltbuiltaaprototypeprototypeUIUIusingusingprettyprettystandardstandardHTMLHTMLandandCSS,CSS,wiredwiredinininvoiceinvoicetreatmenttreatmentandandextractionextractionthroughthroughPythonPythonscripts,scripts,andandsetsetupupaaFlaskFlaskserverservertotolaunchlaunchthetheUI.UI.
TheThetimetimecamecametototesttestthethefirstfirstinvoiceinvoicetypetypeIIhadhadprogrammedprogrammedfor.for.IIuploaduploadthetheinvoiceinvoicePDFPDFandandthetheSAQSAQreport.report.Nervously,Nervously,IIclickclick“process“processinvoice.”invoice.”TheTheloaderloaderanimationanimationspinsspinsforforaafewfewseconds.seconds.IIgetgetevenevenmoremorenervous.nervous.
ItItdoesn'tdoesn'ttaketakelonglongbeforebeforethetheprogramprogramspinsspinsoutoutthetheresults.results.InvoiceInvoicetotal:total:$1,919.80.$1,919.80.CouldCouldititmatchmatchthetherealrealinvoice?invoice?IIopenopenthethePDFPDF——$1,919.80.$1,919.80.NoNoway.way.
ButButaamatchingmatchingtotaltotalcancanbebeluck.luck.TheTherealrealtesttestisiswhetherwhetherititmatchesmatcheslinelinebybyline.line.IIopenopenthetheSAQSAQreportreportandandstartstartcomparingcomparingrowsrowsagainstagainstthethetabletablemymyprogramprogramproduced.produced.LineLineone,one,match.match.LineLinetwo,two,match.match.EveryEverysinglesinglelinelinereconciledreconciledagainstagainstthethesourcesourcereport,report,zerozerodiscrepancies.discrepancies.
I'dI'dbebelyinglyingififIItoldtoldyouyouIIdidn'tdidn'tbreakbreakintointoaacelebratorycelebratorydance.dance.ITITWORKEDWORKEDFLAWLESSLY.FLAWLESSLY.ThereTheremaymayhavehavebeenbeensomesomeair-pumpingair-pumpinginvolvedinvolvedtoo.too.
InInjustjusttwotwohourshoursIIhadhadaaworkingworkingprototype.prototype.IIknewknewIIcouldcouldturnturnthisthisintointosomethingsomethinggenuinelygenuinelyworkday-changing.workday-changing.IIimmediatelyimmediatelyopenedopenedLoom,Loom,screen-recordedscreen-recordedthetheprototype,prototype,andandsentsentitittotoher.her.
TheThefollowingfollowingdaydaymymyfriendfriendtextstextsme:me:“Wow,“Wow,lookslooksgood.good.IIthinkthinkweweneedneedtototalktalktotomymyboss.”boss.”
SoSowewesettledsettledononaa30-minute30-minutemeetingmeetingthatthatsamesameweek.week.ThisThistimetimeIIwasn'twasn'taafriendfrienddoingdoingaademo,demo,IIwaswasshowingshowingupuptotopitchpitchaacompany.company.IIwalkedwalkedherherbossbossthroughthroughthethefeaturesfeaturesI'dI'dbuiltbuiltandandwhatwhatIIenvisionedenvisionedthetheprogramprogramcouldcouldbecome.become.HeHeturnedturnedtotoher:her:“Does“Doesthisthislooklookinterestinginterestingtotoyou?”you?”SheSheanswered,answered,“Of“Ofcourse.”course.”AndAndthenthenhehesaid:said:“OK“OKwithwithmemethen.then.SendSendususaaproposal,proposal,Stefano.”Stefano.”
ThatThatwaswasthethemomentmomentaafavorfavorforforaafriendfriendbecamebecameaarealrealengagement.engagement.AAfewfewweeksweeksofofback-and-forthback-and-forthfollowed,followed,hashinghashingoutoutspecifications,specifications,draftingdraftingthetheproposalproposalandandofofcourse,course,thethecontract.contract.FinallyFinallythethesalesalewaswasmade.made.
ThenThenthetherealrealworkworkbegan.began.
TheThetwo-hourtwo-hourprototypeprototypeprovedprovedthetheidea.idea.TurningTurningititintointosomethingsomethingthetheagencyagencycouldcouldreliablyreliablyprocessprocesstheirtheirmonthlymonthlyinvoicesinvoicestooktookmuchmuchlonger.longer.TheTheprototypeprototypehandledhandledoneoneinvoice;invoice;thetheproductproducthadhadtotohandlehandleallallofofthem.them.IImademadeananinventoryinventoryofofeveryeveryinvoiceinvoicetypetypethetheSAQSAQsendssendsandandworkedworkedoutoutthetheextractionextractionlogiclogicbehindbehindeacheachone.one.IIbuiltbuiltthethesystemsystemsosothatthatanythinganythingthatthatcancanbebecomputedcomputeddeterministicallydeterministicallyisis——thosethosenumbersnumberscan'tcan'tbebehallucinatedhallucinated——andandAIAIonlyonlystepsstepsininforforthethegenuinegenuinejudgmentjudgmentcalls,calls,neverneverforforthethefigures.figures.ThatThatsinglesinglearchitecturalarchitecturaldecisiondecisionisisthethereasonreasonititreconcilesreconcileseveryeverylinelinewithwithzerozeroerrors.errors.AccuracyAccuracyisisneverneveraacompromisecompromisewhenwhenititcomescomestotonumbers.numbers.IIalsoalsomademadesuresurethetheappapphandleshandlesaacompany'scompany'sfinancialfinancialdatadatawithoutwithoutexposingexposingititoutsideoutsidethetheagency,agency,withwithlicensinglicensingthatthatkeepskeepsititcontrolled.controlled.
AndAndit'sit'sbuiltbuilttotobebeupdatedupdatedandandextendedextendedwithoutwithoutrewritingrewritingthethewholewholething!thing!IfIfaanewnewinvoiceinvoiceformatsformatsappear,appear,thetheappappgrowsgrowswithwiththem.them.
WhenWhenIIsaidsaidearlyearlyononthatthatthisthiscouldcouldbecomebecomeaaworkday-changingworkday-changingapp,app,itithas.has.MyMyfriendfriendusedusedtotodreaddreadthosethosetwotwodaysdaysaamonth.month.HerHereyeseyeswouldwouldburnburnfromfromextractingextractinginvoiceinvoicelineslinesoneonebybyone.one.ThatThatkindkindofoftasktaskisissoul-sucking.soul-sucking.NowNowsheshetellstellsmemeit'sit'sactuallyactuallyfunfun——ititfeelsfeelslikelikeshe'sshe'sgotgotsomeonesomeoneelseelsedoingdoingthethejobjobforforher,her,freeingfreeingherhertotofocusfocusononthethestrategicstrategicworkworkherherroleroleisisactuallyactuallyabout.about.
TwoTwostatsstatsstillstillmakemakememesmile:smile:
98%
Reduction in processing time
What used to take two full days of painstaking manual work now takes under half an hour — drag, drop, and watch the program work.
0
Errors, line by line
Every invoice reconciles against the SAQ report exactly, every time.
FastFastandandcorrect.correct.ForForaafinancefinanceteam,team,youyouneedneedboth.both.Fast-and-wrongFast-and-wrongisisaanightmare.nightmare.That'sThat'sthethewholewholepointpointofofhowhowit'sit'sbuilt.built.
IfIfyouryourteamteamisislosinglosingdaysdayseveryeverymonthmonthtotomanual,manual,soul-suckingsoul-suckingdatadatawork,work,that'sthat'sexactlyexactlythethekindkindofofproblemproblemIIlikeliketotosolve.solve.Let'sLet'stalk.talk.