Monthly profit
Revenue minus all costs in the month (accrual basis). No corporate income tax while profit stays in the company.
Cash in the bank
The gap between the two lines is timing: customers pay late, while VAT and payroll taxes leave a month after they arise.
Who the customers are: EIS 2025 bid data
Latvian bidders only · click a row to model that segmentMain industries in this segment (CPV division, firms)
Latvian lot-bids per month, 2025
Year 2: add Estonia and Lithuania
Same product, two more procurement systems; Latvia alone runs out of firms to contactOnly Latvia publishes every bid with the bidder’s registration number. Estonia’s open data (eForms award notices) lists only winning tenders, and Lithuania publishes winner counts by company size. So the Estonian and Lithuanian pools are estimated: Latvia’s ratio of target firms to small winning firms (0.32 for all procedures, 0.39 without small-value procurements, 0.69 for firms with 3+ won lots) is applied to each country’s winners, and for Estonia checked against how often its tenderers bid.
Cash in the bank, 24 months
Paying customers, 24 months
What the bid data says about the problem
EIS open data, Latvian biddersWhy bids are disputed: IUB complaint decisions 2025
What this does and does not prove: bids land at the last minute, so a check has to run in minutes, on deadline day. Complaints are the visible tip: a complaint costs a deposit and time, so most rejected bidders never file one. The sample shows that when a rejection is disputed, qualification and paperwork are the most common reason, and the rejection usually stands. Sources: IUB complaint statistics, decision summaries from info.iub.gov.lv.
How often bids are rejected: award notices and procurement reports
Both counts are lower bounds. Many buyers check qualification only for the cheapest bidder, so a losing bid with a missing certificate is often never recorded as non-compliant. Of the 400 sampled procedures, 217 had a report readable as text; 107 were PDF only or empty, 53 had no report yet and 23 failed to parse, so the EIS share rests on the 217. TED covers only procedures above EU thresholds. Sources: TED award notices (field “received submissions: verified inadmissible”), EIS procurement reports (eis.gov.lv).
What could weaken the case
The reform cuts both ways: simpler rules below the thresholds mean fewer formal rejections there, but each buyer writing its own rules makes every tender different, and the 2027 exclusion rules (tax debt can be cured within 5 working days) change what a check must look for. A generic EU validator already exists, so the product has to win on Latvian law, Latvian-language documents and the 2027–2028 rule changes. Sources: LV portāls, 9 Jun 2026, LV portāls, 14 May 2026, Tendios Bid.
Why 12-month profit is not the same as cash
Exact reconciliation, recomputed liveMonth by month
Scroll sideways on small screensAssumptions and sources
Sourced official rate or published price · Derived computed from open data · Assumption my estimate, to testHow the model works
- Customers. From the sales start month, new paying customers = firms contacted × trial rate × trial-to-paid rate. Each firm in the segment is contacted only once, so the number of real Latvian bidders limits growth. Each month a share of customers churns.
- Seasonality. Tender checks per customer follow the 2025 monthly bid curve from EIS, so AI cost rises in spring and falls in winter.
- Profit. Revenue − variable costs (AI per check + other per customer) − salaries with employer tax − accountant, hosting, marketing, one-off setup. CIT is 0 because nothing is paid out as dividends in year one.
- Cash. Invoices carry 21% VAT; a share is paid the month after. Founders get net pay in the month; employee and employer social tax and PIT go to VID by the 23rd of the next month. VAT is declared and paid the month after; input VAT is recovered only on Latvian suppliers (accountant, setup). Foreign services (Claude API, hosting, ads) fall under reverse charge, so they add no VAT cash cost.
- Not modelled. Price changes do not change conversion (no elasticity data yet). Founder time spent on support is inside salaries, so gross margin looks high. Year 2 (Estonia, Lithuania and the 2028 reform) is a separate 24-month scenario; the 12-month figures do not include it.
How I worked with AI
Claude (Opus 5.5) was my analyst and coder. I checked its work against primary sources.
- Data, not estimates. Claude joined EIS 2025 bid data with Register of Enterprises open data. The 981-firm pool (12+ lot-bids a year, under 50 staff), margins, turnover and 1.92 checks per customer per month come from that join, which I re-ran in R: 5,473 of 6,452 bidders matched an annual report.
- Tax rates. VAT, social tax, PIT, the non-taxable minimum and payment dates were checked on VID and PwC pages for 2026. Where the AI used an outdated figure, I replaced it.
- Two implementations. The model was written in Python, then rebuilt in this page's JavaScript. A script compares both on the three scenarios.
- IUB decisions. Claude pulled all 433 IUB complaints of 2025 and 891 objections from IUB's summaries. Keyword matching mislabelled about a third in a spot check, so a random sample of 150 was coded by hand. The coding is saved.
- Estonia and Lithuania. Claude parsed the twelve 2025 monthly XML files of Estonia's procurement register (12,716 award notices, 14,168 winning tenders, deduplicated by tender ID). Estonia publishes only winners, so the pool is estimated three ways and shown as a range. Lithuania's figures come from the procurement office's 2025 reports.
- EIS reports. Claude opened 400 randomly sampled 2025 procurement reports in my browser, and I coded the 217 readable as text (rejected or not, and why). PDFs were left out, so the share carries that caveat. The coding is saved with procedure IDs.
- Evidence against the idea. I asked Claude for the strongest counter-evidence: the 2026 procurement reform and existing AI bid tools. It found Tendios Bid, a validator already covering 30+ countries, and computed that 60% of target firms' bids fall below the 2028 thresholds. Both are shown above.
- Assumptions. Every input without a source is labelled an assumption. Conversion and churn have no Latvian benchmark; Real outreach to the lead list is how I would test them.