Gather what arrived.
Find what didn't.
Statements, emails and updates arrive at different times. Someone needs to know what is still missing.
CompletenessLess time bringing information together.
More confidence in the reports and answers that follow.
Each reporting cycle means bringing different sources into agreement. Our understanding is that the repeated work sits here.
Statements, emails and updates arrive at different times. Someone needs to know what is still missing.
CompletenessDifferent accounts, periods, currencies and formats need to fit together without losing their meaning.
ConsistencyValuations, transactions and corrections need to agree before they become a client report.
ConfidenceA client question can mean reopening several files and reconstructing the same facts.
TraceabilityThe question for today: where does your team spend the most time, and where does uncertainty cause the most trouble?
A background service would turn incoming documents into checked information, ready for the files and questions your team already works with.
Read from agreed shared folders and mailboxes, so routine documents would not need to be downloaded and uploaded again.
Keep missing documents and failed reads visible. A duplicate should not become a second investment.
AI would help read and interpret. Defined calculations would produce the numbers.
Your team would resolve exceptions and authorize release.
I would start with a small service around your existing files, within an agreed data-processing boundary. These are the components I would evaluate and the checks I would put around them.
Read agreed OneDrive or SharePoint locations and relevant mailboxes. Track document versions, duplicate arrivals and failed reads before processing.
First confirm the actual Microsoft 365 setup, ownership and permitted access.
Use spreadsheet data and usable PDF text directly. Compare Mistral OCR, Azure Document Intelligence, Reducto and PaddleOCR for scans and complex tables, with other readers available for comparison.
Choose by correct financial fields, complete tables and review effort. Open source is optional; the processing location needs agreement.
Compare a privately hosted language model with an approved extraction service for fields such as account, period, currency and value. Keep the source evidence attached and missing information explicit.
The exact model, license, hardware and approved processing location still need evaluation.
Separate extracted proposals from approved records. Use coded rules for calculations and reconciliation, and keep effective dates, source versions and review history.
Agree identities, financial definitions, source precedence and correction rules with the report owner.
Test TypeSafe AI’s Jev for narrow choices after reading, such as document type, a candidate match or the next permitted route. Use ordinary jobs or LangGraph to execute the workflow; code retains calculations and approval gates.
Jev is not an OCR engine or a free-form extractor. Its published input price is $0.042 per million tokens, with output free. Compare it with rules and the interpretation model before adoption.
Resolve the metric, date, currency and eligible population. The model would request an approved query; code would calculate the result and account for missing records.
Search permitted source documents for terms and explanations. Start with metadata and full-text search, then add semantic retrieval if evaluation shows a need. Preserve versions and citations.
Start with the baseline. Consider fine-tuning only if repeated interpretation errors justify it. Scope, success thresholds, support ownership and any rollout decision would be agreed with your team.
Software, infrastructure and usage for a team of about 20. An itemised planning estimate, excluding implementation and support labour.
What we know. The brief describes 30+ funds and about 30 subscriptions a month. The nine sample statements contain 13 pages.
What we still need. Monthly page volume, account count, historical backlog and existing licences. The workload below is an assumption, not a measured inventory.
The base assumes 35 funds × 4 updates, 30 subscription notes, 50 account statements and 30 other documents: 250 documents × 4 pages = 1,000 pages/month. Only the 30+ fund count and approximate 30 subscriptions come from the brief. The other values are assumptions.
Each page allows 6,000 input and 1,000 output tokens. Each question allows 8,000 input and 1,200 output tokens across its model calls. Add 20% for repeat processing. Budget OCR for every page and a second specialist pass for 10%; native reading may reduce the bill.
Light uses 300 pages and 300 questions; busy uses 5,000 pages and 3,000 questions. Storage assumes up to 100 GiB retained and transfer inside included allowances. These cases estimate spending, not proven capacity.
My starting choice is one $24/month server for the app, scheduled jobs and report generation. It keeps the small service in one place. Capacity still needs testing.
DigitalOcean pricing, opens a new tab ↗ · AWS Lightsail, opens a new tab ↗
Two 2 GiB nodes at the current $30.45 listing. A standby protects the operational record against a node failure; it does not make the whole application highly available.
Database rates, opens a new tab ↗ · Standby configuration, opens a new tab ↗ · Supabase, opens a new tab ↗
DigitalOcean Spaces includes 250 GiB storage and 1 TiB outbound transfer for $5/month. The estimate allows 100 GiB for originals, derivatives, versions and logical backups. Storage grows with retention.
Spaces overages are $0.02/GiB stored and $0.01/GiB transferred. Spaces, opens a new tab ↗ · R2, opens a new tab ↗
Daily backup of the $24 application server costs $7.20/month. Database recovery is counted in the database line; longer-lived database exports use the storage allowance. Restoration must be tested.
A $12/month test server keeps releases away from production. It runs a local test database using synthetic or redacted fixtures.
1,200 processed pages × $0.004, plus 120 fallback pages × $0.040. In the API configuration, Mistral OCR 4.1 reads the pages; the budget sends an assumed 10% to Reducto Deep Extract as well. Both charges include 20% repeat processing.
Reducto zero-retention and private deployment require separate quotes. Mistral rates, opens a new tab ↗ · Reducto rates, opens a new tab ↗
16.8 million input and 2.64 million output tokens. The API option is budgeted at $0.40/million input and $1.60/million output for qwen3.7-plus-2026-05-26, Singapore endpoint, International scope, requests up to 256K input tokens. International scope does not guarantee Singapore-only processing.
Model rates, opens a new tab ↗ · GPU rates, opens a new tab ↗
Standard Graph file and mail operations have no extra API fee within licensed usage limits. Their execution is covered by the application server. Confirm the tenant, mailboxes and app permissions.
The budget excludes new seats and metered advanced/bulk APIs. Graph fee rules, opens a new tab ↗ · Metered APIs, opens a new tab ↗ · Microsoft licences, opens a new tab ↗
$26/month, billed as $312/year at the displayed annual rate, within included quotas. Keep document contents out of diagnostic events. Basic server monitoring is included by the cloud provider.
Sentry pricing, opens a new tab ↗ · Server monitoring, opens a new tab ↗
A $24/year domain allowance, spread over 12 months. This is an estimate, not a registrar quote. Included DNS and automated TLS avoid a separate certificate subscription.
Use rules, scheduled workers and database search on the servers already counted. No separate workflow, queue or vector-database subscription is needed for the baseline.
LangGraph, opens a new tab ↗ · Jev pricing, opens a new tab ↗
Use open-source template and PDF-merge libraries on the application server. Existing Office licences cover staff editing. This includes the proposed report drafts and teaser assembly, not autonomous external sending.
Use included private-repository/build quotas, a cloud firewall and controlled runtime secrets. No paid developer subscription is assigned to every employee.
Build quotas, opens a new tab ↗ · Cloud firewall, opens a new tab ↗
Included items use infrastructure or licences already counted. A $0 extra line does not mean the work runs without resources. Prices are a dated snapshot, not a live feed.
Recurring software is only part of the bill. Keep these separate when comparing with the existing SaaS contract.
Unknown backlog. 10,000 pages is a planning assumption.
12 monthly budgets + import + evaluation. Excludes the conditional items below and all labour.
Reuse existing Microsoft 365 first. If all 20 need new Business Premium licences without Teams, the cited US annual price adds $375.80/month. Entra P1 alone adds $140/month for 20 if needed; Premium already includes it. Local prices and renewal terms may differ. Copilot is not required.
These are separate from the headline budget. Confirm the tenant inventory before adding either amount.
Microsoft pricing, opens a new tab ↗The selectable private example replaces both OCR and model APIs with one L40s GPU at $1.57/hour × 730 hours = $1,146.10/month, plus a $5 model-storage allowance. No checkpoint or throughput has been validated. The cited provider’s GPU regions are in North America, so Asian processing needs another quote.
A 20 GB RTX 4000 is $0.76/hour, or $554.80/month, but may not fit the final model. Scheduling an L40s for 80 hours is $125.60 compute, with answers unavailable outside those windows. Powered-off instances still bill.
For application resilience, a second app server, daily backup and load balancer add $43.20/month before reserve. The database standby is already counted. GPU & availability sources: GPU pricing, opens a new tab ↗ · Load balancers, opens a new tab ↗
Benchmark, FX and investment data. Use company-provided licensed inputs where permitted. New feeds and redistribution rights need a provider quote; they are not included or assumed free.
Provider support. Included ticket support is budgeted. DigitalOcean Standard production support adds $99/month. It does not maintain this application. Support plans, opens a new tab ↗
SaaS exit and policy requirements. Export fees, contract overlap, long-term or immutable backup, private networking, enterprise AI terms and commercial report SDKs remain unpriced until requirements and contracts are checked. The 25% reserve does not cover unknown mandatory services.
Taxes, exchange fees, hardware purchases and all implementation, maintenance and review labour are outside these figures. This is not a like-for-like SaaS savings claim.
Choose after one measured reporting cycle: actual pages, token use, correction effort, peak load and recovery checks. The recommendation and budget remain open for company approval.
The aim is to make the information dependable and reusable, while preserving the formats your team needs.
Prepare the agreed client reports and working files from checked records, with estimates and missing inputs made clear.
Look up fund and client information, with an optional question interface. Answers would use the same records and show their evidence and gaps.
Find the right versions and combine selected fund teasers into a pack. Your team would choose the contents and authorize distribution.
One agreed basis for the report,
the answer, and the explanation.
A figure should lead back to its source, with corrections and previous versions kept explainable.
Missing information and conflicting values should be flagged for resolution before they are treated as approved.
Private processing is the current direction. Where data may be used, who can see it and how long it is kept still need your approval.
The proposal supports operational records and reporting. Your team retains judgment, approvals and external release.
A recent report, the documents behind it, and the person who prepared it.
That would let us test this understanding against your actual work and choose a useful place to begin.
Show us the last difficult reporting cycle. What took the most staff time, what caused delays, and which tools already helped?
Compare the month-start and month-end reports. Which sources and calculations govern each, what happens when information is late, and who approves release?
Show us the workbooks and document formats the team relies on. Who edits them, and when should a change become an official record?
Agree a representative report, its source records and a person to judge the result. Define acceptable checking effort, errors and operating responsibilities before setting targets.