ContractPulse - Vendor Renewal and Health Monitor for Bootstrapped SaaS Teams
Small SaaS teams routinely lose money on zombie vendor contracts because no one owns the renewal calendar. ContractPulse ingests your vendor invoices and emails, surfaces upcoming renewals, flags price drift, and sends Slack alerts 30 days out. It's the CFO dashboard you couldn't afford to hire.
Difficulty
beginner
Category
Business Automation
Market Demand
High
Revenue Score
7/10
Platform
Web App
Vibe Code Friendly
⚡ YesHackathon Score
6/10
What is it?
Bootstrapped SaaS teams with 2-10 people have zero visibility into their vendor spend until the credit card statement arrives with a surprise renewal. ContractPulse lets founders upload PDFs or connect Gmail to auto-extract vendor names, amounts, renewal dates, and contract terms using Claude's document parsing. A dashboard shows all active vendors, upcoming renewals, and month-over-month cost drift. Slack or email alerts fire 30 and 7 days before each renewal. This is not an accounting tool — it's a vendor relationship layer that saves founders the $200/month surprise and the 2-hour scramble to cancel before the next billing cycle. Buildable in 2 weeks with Claude PDF parsing, Supabase, and a Next.js dashboard.
Why now?
Claude's April 2026 document parsing is now reliable enough to extract structured data from messy PDF invoices without fine-tuning, removing the last technical barrier that made this unshippable a year ago.
- ▸PDF and Gmail invoice ingestion: Claude extracts vendor, amount, renewal date, and terms automatically.
- ▸Renewal calendar: visual timeline of all upcoming vendor renewals with days-remaining badges.
- ▸Price drift alerts: flags vendors whose cost increased more than 10% year-over-year.
- ▸Slack and email alerts: fires 30 and 7 days before each renewal with one-click cancel reminder.
Target Audience
Bootstrapped SaaS founders and ops leads at 2-10 person companies, estimated 400k+ active on IndieHackers and r/SaaS.
Example Use Case
Dan, a solo SaaS founder, uploads 12 vendor invoices in 3 minutes, sees that his Intercom plan renews in 8 days and jumped 40% in price, cancels before being charged, and saves $420 instantly.
User Stories
- ▸As a bootstrapped SaaS founder, I want to upload all my vendor invoices and see upcoming renewals in one view, so that I never get surprise-charged again. As an ops lead, I want a Slack alert 30 days before each renewal, so that I have time to evaluate whether to cancel or negotiate.
- ▸As a founder tracking costs, I want to see year-over-year price drift per vendor, so that I can prioritize which contracts to renegotiate.
Acceptance Criteria
Invoice Parsing: done when a PDF upload returns vendor name, amount, and renewal date with over 90% accuracy on standard invoices. Renewal Dashboard: done when all vendors display with days-remaining badges sorted by nearest renewal. Slack Alert: done when a test alert fires to a connected workspace exactly 30 days before a renewal date. Stripe Paywall: done when free users with 6+ vendors are blocked and redirected to checkout successfully.
Is it worth building?
$29/month x 35 users = $1,015 MRR at month 2. $29/month x 175 users = $5,075 MRR at month 7. Math: 3.5% conversion on 5,000 free trial signups via IndieHackers and r/SaaS.
Unit Economics
CAC: $12 via IndieHackers direct outreach. LTV: $261 (9 months at $29/month). Payback: 2 weeks. Gross margin: 87%.
Business Model
SaaS subscription
Monetization Path
Free tier: up to 5 vendors. Paid $29/month: unlimited vendors, Slack alerts, CSV export, price drift analysis.
Revenue Timeline
First dollar: week 2 via beta upgrade. $1k MRR: month 3. $5k MRR: month 8.
Estimated Monthly Cost
Claude API: $30, Vercel: $20, Supabase: $25, Resend: $10, Stripe fees: $10. Total: ~$95/month at launch.
Profit Potential
Part-time viable at $3k–$6k MRR.
Scalability
Medium — can expand to team accounts, AP integration, and a vendor negotiation agent.
Success Metrics
Week 1: 150 signups. Week 2: 20 paid. Month 2: 75% retention.
Launch & Validation Plan
Post a manual vendor audit for a public bootstrapped founder on Twitter, show the savings, link to waitlist, and DM 20 r/SaaS members.
Customer Acquisition Strategy
First customer: DM 15 active IndieHackers members who post about SaaS expenses and offer 3-month free beta in exchange for weekly feedback. Ongoing: Twitter SaaS founder community, r/SaaS, IndieHackers posts, ProductHunt launch.
What's the competition?
Competition Level
Low
Similar Products
Vendr targets enterprise procurement. Paddle Billing is for SaaS revenue not vendor spend. Notion vendor trackers exist but have no automation or alerts — ContractPulse is the only automated version for sub-10-person teams.
Competitive Advantage
No setup required beyond PDF upload — works in 3 minutes vs. hours of spreadsheet setup that competitors like Vendr require.
Regulatory Risks
Low regulatory risk. Financial data stored must follow GDPR data deletion requirements for EU users.
What's the roadmap?
Feature Roadmap
V1 (launch): PDF parsing, renewal dashboard, Slack alerts, price drift flags. V2 (month 2-3): Gmail OAuth auto-import, CSV export, multi-vendor bulk upload. V3 (month 4+): team accounts, vendor negotiation email templates, Zapier integration.
Milestone Plan
Phase 1 (Week 1-2): PDF parsing + dashboard ships, 5 beta users upload real invoices. Phase 2 (Week 3-4): Slack alerts + Stripe billing live, first paid conversion. Phase 3 (Month 2): ProductHunt launch, 35 paid users target.
How do you build it?
Tech Stack
Next.js, Claude API, Supabase, Stripe, Resend, Slack Webhooks — build with Cursor for backend, v0 for dashboard UI
Suggested Frameworks
Supabase JS, Anthropic SDK, pdf-parse
Time to Ship
2 weeks
Required Skills
Claude document parsing, Next.js, Supabase, Slack webhook integration.
Resources
Anthropic PDF parsing docs, Slack incoming webhooks docs, Supabase quickstart.
MVP Scope
pages/dashboard.tsx, pages/vendors/[id].tsx, api/parse-invoice.ts (Claude), api/slack-alert.ts, components/VendorCard.tsx, components/RenewalTimeline.tsx, lib/claude.ts, lib/supabase.ts — all generated with Cursor + v0.
Core User Journey
Upload invoices -> see vendor dashboard in 60 seconds -> receive first renewal alert -> upgrade to paid to unlock Slack integration.
Architecture Pattern
User uploads PDF -> Claude API extracts structured vendor data -> stored in Supabase -> cron job checks renewal dates daily -> Slack webhook fires alert -> dashboard renders live data.
Data Model
User has many Vendors. Vendor has many Invoices. Invoice has one ParsedContract. Vendor has one RenewalAlert schedule.
Integration Points
Claude API for invoice parsing, Supabase for database, Slack Webhooks for alerts, Resend for email alerts, Stripe for payments.
V1 Scope Boundaries
V1 excludes: Gmail OAuth auto-import, AP system integrations, multi-user team accounts, mobile app, vendor negotiation features.
Success Definition
A bootstrapped founder uploads invoices, receives a Slack alert for an upcoming renewal they forgot about, cancels the vendor, and stays subscribed for month two.
Challenges
The hardest non-technical problem is convincing founders that this is worth $29/month when they already have a spreadsheet they never update — the product must deliver an immediate aha moment on first invoice upload or churn is instant.
Avoid These Pitfalls
Do not try to auto-cancel subscriptions on behalf of users — liability nightmare and too much auth complexity for v1. Do not underestimate how bad invoice PDFs look — build a manual override for when Claude mis-parses. First 10 paying customers will come from direct outreach not SEO — do not spend time on blog content before month 3.
Security Requirements
Supabase Auth with Google OAuth, RLS on all user and vendor tables, 60 req/min rate limit per IP, PDF content never logged beyond extraction, GDPR deletion endpoint required.
Infrastructure Plan
Vercel for frontend and API, Supabase for Postgres and auth, Supabase Storage for PDF files, GitHub Actions for CI, Sentry for errors — total infra under $100/month at launch.
Performance Targets
50 DAU and 400 req/day at launch, Claude invoice parsing under 6 seconds per PDF, dashboard load under 2s LCP, static assets via Vercel CDN.
Go-Live Checklist
- ☐Security audit complete
- ☐Payment flow tested end-to-end
- ☐Sentry live
- ☐Vercel Analytics configured
- ☐Custom domain with SSL
- ☐Privacy policy and terms published
- ☐5 beta users signed off
- ☐Rollback plan documented
- ☐ProductHunt and IndieHackers launch posts drafted.
How to build it, step by step
1. Run npx create-next-app contractpulse --typescript. 2. Install @supabase/supabase-js, @anthropic-ai/sdk, pdf-parse, stripe. 3. Create Supabase tables: users, vendors, invoices, alerts. 4. Build PDF upload endpoint that passes text to Claude for structured extraction. 5. Build vendor dashboard with RenewalTimeline component using v0. 6. Add Supabase cron via pg_cron to check renewals daily. 7. Build Slack webhook alert endpoint. 8. Add Stripe checkout gating the Slack alert feature. 9. Add Resend email fallback for non-Slack users. 10. Deploy to Vercel and test with 5 real invoice PDFs.
Generated
April 11, 2026
Model
claude-sonnet-4-6