Inspiration
Shopping for a used car is a part-time job on the listings' schedule, not yours: refresh, open twenty tabs, price each against its year and mileage, dodge the salvage titles and wire-transfer scams, message fast before the good ones go.
What it does
Runs on a cron, scores every listing against a fair-price estimate, your hard
filters and a red-flag check, and returns a short shortlist with pursue /
consider verdicts plus an explicit list of the scams and bad-title cars to
avoid. Drafts seller outreach on request. Remembers what you've dismissed.
How we built it
- Strands Agents SDK — one
Agent, six@tools, a "protect the buyer's time" system prompt. - Amazon Bedrock — Claude Haiku 4.5.
- Amazon Bedrock AgentCore —
BedrockAgentCoreAppentrypoint, EventBridge cron. - Deterministic core — fair-price depreciation model, criteria matching and
scam heuristics in
carscout/core.py, 12 tests, no model calls.
Challenges we ran into
Scam detection that is strict without being paranoid. A CRITICAL flag (bad title
or a price far below market) hard-caps the score and forces skip — the LLM
can't be talked out of it by a persuasive description.
Accomplishments that we're proud of
The whole valuation and risk layer runs offline (make demo). The agent is a
thin triage layer that's easy to trust because it can't do the math wrong.
What we learned
"Only show me what matters" is a prompt problem and a data problem — you need
a worth_your_time signal from tested code for the model to lean on.
What's next for CarScout
Live marketplace scraping (Playwright, logged-in session), a real valuation API, VIN history lookups, AgentCore Memory, push delivery.
Built With
- bedrockagentcore
- python
- strandsagents
Log in or sign up for Devpost to join the conversation.