Lobbying firms spend 4-6 hours researching and writing pitch memos for each potential client.
Business development at lobbying firms requires deep knowledge of LDA filing systems, competitor analysis, and strategic positioning—all while racing against tight RFP deadlines. Current workarounds: junior staff manually pulling LDA data, partners drafting from memory, and recycled boilerplate that doesn't differentiate the firm for each prospect.
The target users are BD professionals at mid-market lobbying firms (11-50 lobbyists) who need to produce competitive pitch memos quickly.
What I prioritized, what I cut, and why
This was the most complex build in the portfolio. Every decision traded off depth against shipping speed:
50 evidence-based principles, invisible to users
Consolidated academic research (Baumgartner, Hall & Deardorff, Kingdon) into actionable principles. Claude applies them naturally but never cites them. The evidence is built into the product, not its outputs.
Current representation lookup
Built but disabled. With only 20 curated firms, returning "no representation found" when the prospect actually has lobbyists is worse than not having the feature.
Authentic firm voice profiles
Manually curated voice profiles for each firm by analyzing their website copy: tone markers, signature phrases, positioning language. Prevents memos from sounding like generic AI output.
Pricing engine
Scoped a hybrid system using LDA comparables plus cost-plus modeling. Deferred because the core value prop doesn't depend on it, and 8-10 hours was better spent on memo quality.
4-stage lobbyist verification
Verified 704 lobbyists via LD-203 contributions, Q3 LD-2 reports, historical filings, and web scraping. 70.8% verification rate. Prevents recommending lobbyists who've left the firm.
Two-stage Haiku-to-Sonnet pipeline
Designed for 75-80% cost savings, but shipped with Opus plus prompt caching for demo quality. Architecture documented for production scaling later.
Select your firm, describe the prospect, get a pitch memo in your voice.
Users select from 20 curated lobbying firms, then input prospect details: company name, industry, and lobbying objectives. The system pulls verified lobbyist rosters, analyzes competitor positioning, and generates a pitch memo that sounds like the firm wrote it.
Behind the scenes, 50 research-backed principles guide the AI without being visible in the output. The memo includes team highlights with verified lobbyists, strategic recommendations grounded in political science, and positioning language matched to the firm's actual marketing voice.
Technical and product insights
Nested API structures require careful inspection
Lobbyist names in LD-2 filings are nested in lobbying_activities[].lobbyists[].lobbyist{}, not at the top level. Hours of debugging when verification returned zero results. Lesson: always inspect actual API responses before writing extraction logic.
Prompt caching is an easy win
Adding cache_control to the system prompt cuts Opus costs by 30-40% on subsequent calls within the 5-minute TTL. The 50 principles are static, so they cache automatically. Zero prompt changes required.
Data quality trumps feature completeness
Disabling the representation lookup rather than shipping misleading results was the right call. Users will forgive missing features; they won't forgive wrong data.
Market math matters early
With only 885 total lobbying firms, traditional SaaS economics are challenging. This realization helped reposition PitchSource as portfolio collateral rather than a revenue-generating business.
What's next
If I continued development, these are the natural extensions: