Agent Bulldog is an AI agent that negotiates on your behalf so you don't have to. It watches your PayPal recurring payments, spots price hikes, compares industry prices, and drafts the cancel-threat / rate-match message — for your approval before anything is sent, cancelled, or changed.
If customer service says no, Agent Bulldog doesn't drop it. It keeps trying — every 6 hours, or at the next available business hours — with a fresh angle each time, until the rate moves or you tell it to stop. And for subscription services like Hulu or HBO, Agent Bulldog clicks through the cancel flow itself: it starts the cancellation to trigger the stay/discount offer, then stops before anything is actually cancelled — the bluff that gets you the discount for staying.
Demo, end to end: StreamFlix jumps $12 to $18/month. Agent Bulldog builds the loyalty file (3 years, 36 on-time payments, none missed), finds the $12 new-customer promo and an $11.99 comparable plan, and drafts a match request for $13. You approve; the provider matches to $13 — $60/year saved, nothing cancelled. Then car insurance: renewal jumps $148 to $172/month. Agent Bulldog compares like-for-like only (same $500 deductible, same limits, same cover), finds a $141 quote, and correctly throws out a cheaper-looking $118 quote with a $1,000 deductible, lower limits and no comprehensive cover. The current insurer matches $141 — $372/year saved, policy stays put. Total confirmed savings: $432/year.
Agent Bulldog also monitors renewals (30/14/3 days), price hikes, and free trials ending, and produces a monthly Savings Report. A saving counts ONLY once you are actually charged the lower price — everything else is labelled "potential" and never counted as saved.
How it was built / PayPal + AI use:
- PayPal: Agent Bulldog reads recurring payments through the PayPal sandbox (real OAuth + REST client in
lib/paypal.js,GET /v1/billing/subscriptions/{id}and transaction history). PayPal is where the recurring payments live, so it is the only place to see hikes reliably. Live mode needs sandbox credentials (PAYPAL_CLIENT_ID,PAYPAL_CLIENT_SECRET,PAYPAL_SUBSCRIPTION_IDS); without them it runs the simulator, which mirrors the exact record shape the live client returns. - AI: a local negotiation engine that turns a transaction list into hike detection, industry comparison, a loyalty file, and a draft negotiation message. No paid APIs, no keys needed for the demo; Node.js 18+, zero dependencies.
- Demo video: real captures of the restyled working app (dark luxury black-and-gold streamlined dashboard) following the demo — StreamFlix $12→$18 matched to $13 ($60/yr), insurance $148→$172 matched to a like-for-like $141 quote ($372/yr), $432/yr total — framed by a designed title card and a closing $432/yr slide, narrated over the top. The working prototype itself is in the repo with run instructions (
npm start). Narration is a synthetic voice (Piper TTS), disclosed in the video.
Run it (for judges):
npm start
# then open http://127.0.0.1:3000
Or PORT=4000 npm start. Click Approve on the StreamFlix draft, then on the insurance match, to see the $432/year tally. Click Reset demo to run it again.
Honest limits (stated in the README and the video):
- Subscription/transaction data in the demo is simulated (labelled in the UI and API) because no PayPal sandbox credentials exist yet; the simulator mirrors the live client's record shape.
- Insurance quotes are estimates — no live insurer API exists, so no real quote is fetched. Comparison is like-for-like by construction; non-like-for-like quotes are excluded with reasons.
- Live insurer negotiation is not real. Approving a draft applies the matched rate inside Agent Bulldog's own records; the draft itself is shown for the user to send.
- The bluff-cancel click-through in the demo runs against simulated provider retention screens — no live Hulu/HBO account is connected in the prototype, so no real cancellation is ever started. The retry loop (every 6 hours / next business hours) is real scheduling logic in the app; in the demo its attempts are shown as scheduled, with the next attempt time visible.