Project
Nova Lite Summarizer
Paste any block of text and get it summarized in real time by Amazon Bedrock's Nova Lite model — a real call to a foundation model, not a canned response.
Demo
Summarize Some Text
This runs against a real AWS backend — no mock data, no pre-written responses.
Privacy notice: pasted text is sent to Bedrock for summarization only and is not stored anywhere afterward.
Fair use: this is a public demo with a shared daily request budget — if it says the limit's been reached, please check back tomorrow.
Your summary will appear here once you submit some text.
Takeaways
Architecture
How It Works
This is a real AWS project, not a mockup. Here's what actually happens between clicking Summarize above and a summary appearing on the page — click any step to jump to it, or let it play through on its own.
-
1
Browser calls a throttled API Gateway endpoint
The pasted text and chosen length go to
POST /summarize. This stage has a request-rate throttle attached, so a burst of automated requests is rejected before Lambda ever runs. -
2
Lambda checks the daily request budget
Before spending anything on Bedrock, Lambda tries to reserve one request against today's shared quota — a public, unauthenticated AI endpoint needs a real cost ceiling, not just a rate limit.
-
3
DynamoDB atomically checks and increments today's count
One conditional
UpdateItemcall both reads and increments the counter, so two requests arriving at the same instant can't both slip through past the limit. -
4
Lambda calls Amazon Bedrock's Nova Lite model
The text, wrapped in a short instruction based on the length you picked, is sent to Nova Lite through Bedrock's Converse API — the same standardized interface Bedrock exposes across many different foundation models.
-
5
The summary is returned straight back to the browser
No polling, no job queue — Nova Lite responds fast enough that this is a single synchronous request/response round trip, same as this site's non-AI endpoints.
Use Cases
Where This Pattern Fits
A cheap, fast text model behind a simple API shows up anywhere an app needs to condense text without standing up its own ML infrastructure.
Support ticket & email triage
Auto-generating a one-line summary of a long support thread or email chain so a human can decide what to read in full.
Meeting notes & transcripts
Turning a raw transcript into a short recap — the same "short vs detailed" toggle this demo offers maps directly onto "recap" vs "full notes."
Content moderation & review queues
Giving a reviewer a quick summary of a long user submission before they decide whether to read the whole thing.
Pricing
What This Actually Costs
Pay-per-use the whole way through — an unused demo costs nothing. These are estimates based on public AWS list pricing, not a guarantee.
What drives the cost
- Bedrock (Nova Lite) — billed per input/output token; Nova Lite is priced well below most other Bedrock models, which is exactly why it fits a public demo.
- DynamoDB — a single tiny item per day for the usage counter; effectively free.
- Lambda & API Gateway — billed per request; effectively free at this scale.
Design Decisions
Why I Built It This Way
A few choices here aren't the only way to build this — here's the reasoning behind them.
Two independent limits, not just one
API Gateway's stage throttle stops a fast burst but can't cap total cost over a day — a slow drip of requests just under the rate limit could still run all day. The DynamoDB daily counter closes that gap; each guards against a failure mode the other one doesn't.
Pasted text only, no URL fetching or file upload
Fetching an arbitrary URL server-side turns this Lambda into an open proxy, and file upload adds a whole presigned-POST upload flow that's out of scope here. Pasted text keeps this project's scope entirely about the Bedrock call itself.
The Converse API, not model-specific InvokeModel
Nova Lite's native request format works fine with a direct
InvokeModel call, but Bedrock's Converse API
gives every supported model the same request/response shape
— swapping in a different model later would mean changing
one modelId string, not rewriting the payload format.
An inference profile id, not the bare model id
us.amazon.nova-lite-v1:0 is a cross-region
inference profile rather than a single-region model id --
newer Bedrock model families increasingly require this for
on-demand throughput, and it's set as a plain environment
variable so it's a one-line change if that requirement
shifts.
Architecture Diagram
Full Architecture Diagram
The complete AWS architecture diagram for this project, built with draw.io. Click it to expand full screen.