What the vendor onboarder costs
The onboarder is one of the cheaper systems in this whole series. The daily chase tick reads a small table, does some date arithmetic, and sends a handful of emails. It calls no models. The one part that costs real money is reading the documents a vendor uploads — Textract reads each page and Bedrock pulls the fields — and that fires only a few times per vendor, total. At typical SMB volume, the bill is a couple of dollars a month, fixed cost essentially zero.
Key takeaways
- Around $2.20/month at typical SMB volume (around 8 new vendors a month).
- Fixed AWS cost is essentially zero. No always-on compute, no NAT Gateway, no API Gateway.
- The daily chase tick costs pennies — no model calls.
- Textract and Bedrock fire only when a vendor uploads a document — a few times per vendor.
- At 20 new vendors a month the bill is around $5. At 40 it’s around $9.
Cost at three volumes
Where the dollars actually go
Textract (the bulk). Every uploaded document is read once. Textract is priced per page, and a typical vendor sends a few short documents — bank details, a tax form, a certificate, an agreement — so call it ten to twenty pages per vendor. At 8 new vendors a month that’s a dollar or so; at 40 vendors it scales to a few dollars. This is the single largest line, and it only happens when a vendor actually uploads something.
Bedrock (the second slice). Each uploaded document gets one Haiku 4.5 call to read its type and fields: a few thousand input tokens (the Textract output) and a few hundred output tokens (the proposed fields as JSON), so a fraction of a cent per document. Across a few documents per vendor, it’s cents per vendor. Like Textract, it’s tied to uploads, not to the calendar.
Lambda runtime. The chase tick runs once a day and iterates the vendors still collecting — a few milliseconds each. Add the intake Lambda, the checker Lambda (which fires per upload), the Function URL Lambdas for the upload page and the approve button, and the hourly drive-sync — the Lambda total still lands well under a dollar at all three volumes.
DynamoDB on-demand. Three small tables: vo-vendors (one row per vendor, the checklist), vo-chase (one row per reminder), vo-audit (one row per action). Reads and writes are a handful per vendor. Pennies a month at any of these volumes.
S3 + Storage. The vendor documents themselves plus the raw inbound MIME from forwarded emails. A few megabytes per vendor at most. Effectively free.
SES. Inbound for the forwarding lane: $0.10 per thousand received messages. Outbound for invites and reminders: $0.10 per thousand sent. A few emails per vendor means a couple of cents a month even at 40 vendors.
EventBridge Scheduler. The daily chase rule, the hourly sync, and the occasional deferred-send one-off. A few invocations a day. Pennies.
What doesn’t cost money
- API Gateway. Replaced by Lambda Function URLs for the upload page and the approve button.
- NAT Gateway. Nothing is in a VPC. No NAT, no $32/month minimum.
- Always-on compute. No EC2, no Fargate. The chase tick sleeps 23.99 hours a day.
- A Knowledge Base. The checklist is structured rows, not free text — deterministic lookup beats vector search here. No embeddings, no Knowledge Base, no S3 Vectors needed.
- Models on the tick. The daily chase is plain Python. Textract and Bedrock fire only when a vendor uploads a document.
How the cost scales
The bill tracks the number of new vendors, not the number of vendors you already have. Once a vendor is approved, the system stops reading and chasing — it costs nothing to keep an approved vendor on file. So the cost is driven entirely by intake: at 80 new vendors a month the bill is around $18; at 160 it’s around $36, still almost all of it Textract and Bedrock reading uploads. A business onboarding that many suppliers a month is unusual for an SMB, and even then the cost is a rounding error against a single mis-paid invoice or a lapsed-insurance claim.
Set an AWS Budgets alarm at $20/month so anything unusual — a vendor uploading a 200-page PDF, a retry loop — pages you before the bill matters. The normal-volume bill stays well under that ceiling.
Last post in the series: the engineering reference. Same system, drawn for engineers — service names, Lambda inventory, IAM scopes, DynamoDB schemas, SES rule set, and EventBridge Scheduler config.
All posts