I Built an AI-Bid Assistant with Claude

Niall McNulty
2 min readJul 26, 2024

This is the next short project I did using Claude to assist with coding projects, after developing a WordPress plugin — an AI-powered Tender Bid Assistant prototype. The goal was to streamline the often complex and time-consuming process of preparing tender bids. Using GPT-4o via the API, I aimed to develop a tool to extract requirements from PDFs, generate proposal outlines, and even export finalized documents in Word format.

I’m starting to think that the future of product development could be prototype-first. I'd be interested to hear others' views on this.

My app interface

Planning

The idea for this project stemmed from my experiences with tender bid preparation and the realization that AI could significantly optimize this process. I chose Streamlit for its user-friendly interface and rapid prototyping capabilities (and also because I wanted to develop skills in deploying Streamlit apps). At the same time, OpenAI’s GPT-4o was selected for its advanced language processing abilities plus cheaper cost. The initial feature set focused on core functionalities like PDF parsing and requirement extraction, with secondary features such as developing the outline from the extracted requirements and downloading this as a Word doc.

Development

The development began with setting up the basic Streamlit app structure and implementing PDF text extraction. Integrating AI capabilities was the next crucial step, which involved connecting with OpenAI’s API and writing effective prompts for requirement extraction and proposal outline generation. These prompts are basic and need further work. As the project progressed, I enhanced functionality by adding web search capabilities for educational context and implementing a Word document export feature.

Problem-Solving

Throughout the development process, I encountered various challenges which I worked through with the assistance of Claude. Adapting to API updates required code refactoring. Ensuring consistency in AI-generated content was an ongoing task that involved fine-tuning prompts and implementing checks and balances. One particularly tricky bug involved a Word document style conflict, which required exploring document formatting and template management.

Collaboration with Claude

I used the Claude Artifacts feature to generate the initial code, which I edited in Visual Studio. There’s probably a more integrated or elegant way to do this using e.g. GitHub assistant or Claude Engineer, but I still need to experiment with both. I then ran the Python script using Terminal and copied any bugs encountered back into Claude to help resolve them. Overall I think I spent a couple of hours getting the prototype working and there is a fair bit more to do if I want to turn it into a useful tool. Coming from a product development background which relies on substantial planning, research and discussion before actually building anything, I’m finding this prototype-first approach very refreshing tbh.

--

--