Replacing an Unmaintainable Vendor System with a Platform the Client Controls
- Client
- A state business advocacy organization
- Industry
- Government Relations / Advocacy
- Engagement
- Project engagement (mid five figures)
- Involved
- WordPress Custom PHP MySQL Legislative data API
The situation
A state business advocacy organization published a legislative report card: a public scoring system tracking how legislators voted relative to the organization’s positions. The existing system had been built by a previous vendor in a proprietary way. The client’s administrative staff could not maintain it, and even routine tasks like opening a new legislative session required going back to the vendor. The system also had known accuracy problems: support and oppose percentages calculated incorrectly on legislator profiles, and inconsistencies in how bills were counted within issue areas. There was no way to search bills on the public site.
This was a dependency problem as much as a software problem. The organization did not just need bugs fixed. It needed to stop being hostage to a vendor for its own data.
What I did
I started with a discovery phase to reverse-engineer the existing scoring methodology, document where the calculations went wrong, and define a transparent scoring mechanism the client’s staff could reason about. I then built a replacement system on WordPress, chosen deliberately so their low-tech administrative team could run it themselves. The build included a custom integration with a public legislative data API for automated daily synchronization of bills and votes, corrected scoring logic, administrative tools for creating and managing legislative sessions in-house, a public bill search, and a responsive public interface.
The outcome
The organization moved from a black-box system it could not touch to a platform its own staff operates. Scores calculate correctly, legislative data updates automatically each day, and new sessions no longer require a vendor invoice. The rescue here was not restoring a broken site. It was ending a structural dependency.
Dealing with something similar?
Start a conversation