At WizzDev, we often encounter practical problems in our daily work that force us to rethink how we work – those small but persistent problems that require significant time and attention that could be allocated elsewhere. As our company grew and project demands increased, we found ourselves spending more and more time on one repetitive task: writing technical proposals. We began to consider whether an AI proposal generator could help us save time and reduce the amount of time spent each week on this task.

How much time does it take to manually write a technical proposal?

Before we developed our own AI proposal generator, proposal writing at WizzDev was a time-consuming process. Whenever a new business opportunity appeared, our engineers and project leads would jump into action: gathering requirements, exploring solutions, and, perhaps most demanding of all, writing a detailed technical proposal from scratch.

It sounds straightforward, but the reality was much more demanding. Each proposal often took eight hours or more to perfect. We had to deeply analyze client needs, estimate timelines, break projects into milestones, identify possible risks, and shape everything into a clear, trustworthy document for the client. Sometimes, that investment led to an exciting new partnership. But just as often, we’d spend all those hours only to have the client disappear, delay, or change direction.

We noticed that our team’s valuable engineering time was being lost to repetitive, manual proposal work rather than spent on real innovation. Still, we knew proposals weren’t just paperwork; they’re an important part of initiating and maintaining client relationships.

Is building your own AI proposal generator the key?

When the recent wave of generative AI and autonomous agent technologies started making headlines, we at WizzDev saw both the hype and the potential. Several of us had already tinkered with GPT-based tools, experimented with automations, and followed the open-source LLM (Large Language Model) space closely. But the real question was, “How do we bring this technology to bear on a real business problem?

The breakthrough came when we realized that most of our proposals shared a core set of components: structure, tone, estimation techniques, risk discussions, even if the technical details varied from project to project. If an AI could help us assemble a solid draft using our own archive as its knowledge base, our experts could then focus on customizing, refining, and reviewing the proposal, rather than starting from zero each time.

We initiated the internal WizzDev AI Proposal Generator project.

How important is data quality for an AI proposal generator?

No AI system is smarter than the data it’s trained on. For us, this meant that our first step wasn’t about fancy prompts or neural networks. Instead, we dove into our archive of technical proposals, collecting every version, draft, and winning document we’d ever produced. We quickly discovered that our archives were valuable, but not always well organized. Proposals from two years ago looked different than the ones from last quarter. Some included detailed timelines; others had only high-level tasks. Many referenced similar platforms, but the formatting and granularity varied.

We needed to standardize and structure all of this historical knowledge. Our engineering team set about parsing, chunking, and embedding thousands of proposal documents. Each proposal became a series of searchable, contextual snippets – summaries, milestones, estimates, risk assessments, code samples, and lessons learned. We indexed them in a way that allowed the AI to retrieve and repurpose actual WizzDev language, not just generic boilerplate.

This knowledge base, built up painstakingly over several weeks, is the core part of how it works. It helps each draft stay grounded in what actually worked before and uses the most relevant insights from our previous work.

How does an AI proposal generator work?

With our knowledge base set up, we moved on to building the system that could actually use that structured information.

Instead of a simple “prompt in, proposal out” tool, we designed a step-by-step process that matches how our team actually works. At WizzDev we start with requirements, break them into milestones, estimate effort, highlight risks, and organize it all for the client. This way, even though proposals are generated with AI, they still reflect our usual attention to detail.

Behind the scenes, the proposal generator builds each section’s requirements, milestones, estimates, and risks using real project data drawn from our own archive, so every proposal is based on WizzDev’s actual project history.

Here’s how the workflow is structured:

Wizzdev-ai proposal generator-img1

Once we’ve parsed the initial inputs, the system generates a requirements summary and then moves on to milestone planning. Each milestone is broken into specific, actionable tasks, and the LLM helps estimate the time needed for each. We combine these numbers to create a timeline that reflects our previous project experience.

Wizzdev-ai proposal generator-img2

A set of AI components coordinates all of this, with each one handling a specific part of the process. They share and validate results to ensure we include all necessary details and incorporate insights from our historical data into every proposal.

Managing this knowledge base required dedicated technical solutions. We developed a process for collecting, cleaning, and dividing proposal documents into searchable content that the AI system can use efficiently.

Wizzdev-ai proposal generator-img3
Wizzdev-ai proposal generator-img4

By focusing on data quality and building this system, we improved how WizzDev writes proposals, making the process faster, more consistent, and closely aligned with our actual work.

Another key aspect of our approach is data privacy. Unlike many SaaS proposal tools that send data to third parties, the WizzDev AI Proposal Generator was built with privacy as a core principle. We run all models and databases locally on secure company servers, so pricing and strategic details stay confidential.

Several clients operating in regulated industries have valued our focus on privacy and security, many of whom work in regulated industries or with proprietary IP.

What technology stack did we use?

At the core of our AI proposal generator is Python, the language we use for data science, LLM interaction, and automation. Python handles all the data parsing, prompt management, and workflow logic described above.

For building our agents, we use the AGNO framework, which lets us define modular agent behaviors. AGNO itself relies on LangChain, a widely used framework for managing prompts, chaining large language model calls, and connecting to external knowledge sources.

All parsed proposals and embedded knowledge are stored in a PostgreSQL database with the PGVector extension. This setup provides efficient semantic search across thousands of proposal snippets, allowing our AI to find relevant content quickly.

On the LLM side, we use Ollama to run our models locally. This removes the need for external API providers or per-token fees, and ensures complete data privacy. We can download, run, and experiment with both open and custom LLMs on our own hardware.

The user interface is built with Streamlit, which supports interactive Python apps and data visualizations. Pandas handles tabular data summaries, timelines, and estimates. The Google Drive API lets us fetch, save, and organize project documents, though managing Drive credentials can be challenging.

Other libraries include Pydantic for data validation, Jinja2 for HTML templating, and markdown-to-HTML tools for generating documents and Word files.

This stack allows us to iterate, experiment, and scale efficiently, while keeping the solution private, flexible, and tailored to WizzDev’s needs.

What challenges did we face while developing an AI proposal generator?

Every AI project comes with its own set of challenges, and building our AI proposal generator was no exception. One of our first obstacles was that large language models produced unpredictable, varying results even with the same prompt. To solve this, we broke the process into smaller steps and added validation at each stage, which reduced variability and made drafts more reliable.

Standardizing our data proved equally important. Our archive of past proposals was full of valuable insights, but the documents differed greatly in style, detail, and structure. We developed custom parsing scripts and supplemented them with manual review to bring all this material into a consistent format, enabling the AI to make effective use of our historical work.

Model selection was another area requiring attention, as different language models—such as Gamma, Llama, and OpenAI—each exhibited distinct behaviors. By building a modular system, we were able to select and integrate the model best suited to each particular task.

Managing proposal files on Google Drive also presented challenges. Handling thousands of documents, permissions, and updates required a structured approach and ongoing maintenance to ensure that everything remained organized and accessible.

Finally, we needed to find the right balance between speed and thoroughness. Adding more validation and logic to enhance proposal quality increased the time needed for generation, with some drafts now taking 30–40 minutes instead of just a few. Still, this is a significant improvement over the eight hours that manual proposal writing once required.

What’s changed at WizzDev thanks to the AI proposal generator?

Since introducing our AI Proposal Generator, we’ve seen a noticeable change in our day-to-day operations. We can now complete detailed technical proposals in less than an hour, even for complex, multi-phase projects—tasks that previously required a full workday or more. This decreased time required for proposals lets our team work on other assignments at WizzDev.

In addition to faster preparation, our proposals have become more consistent and thorough. Each document regardless of who prepares it follows a clear structure, maintains a professional tone, and covers the technical details our clients expect. One client told us they were surprised we turned around a solid draft in a day in proposal turnaround and quality. Instead of waiting several days for an initial proposal, they now receive well-defined documents within hours. This makes it easier for them to make decisions and helps us respond more quickly to client requests.

Just as important, the tool has reduced repetitive documentation work for our engineers. As a result, engineers can dedicate more attention to ongoing technical work and new projects. In summary, the AI Proposal Generator has helped organize our process and reduced the time needed to prepare proposals.

What we learned?

Developing our AI Proposal Generator came with its share of challenges. If we were to offer one piece of practical advice to anyone starting a similar project, it would be to build extra time into your schedule. Work involving AI, especially tasks like prompt engineering, data preparation, and repeated testing often takes longer than traditional software development. There are always unknowns.

It can also be tempting to use the newest tools available, but our experience showed that it’s better to choose frameworks and libraries that are stable, well-supported, and backed by an active community, even if they don’t appear the most cutting-edge. This approach made a real difference when we encountered technical challenges.

The quality of your data is just as important. Well-organized and standardized historical information produces better AI results. We spent considerable time structuring our archive of past proposals, and that investment improved the overall quality of our outputs.

We also learned the importance of involving users early. Sharing initial drafts with colleagues and collecting their feedback helped us refine features and set the right priorities. This process led to a tool that genuinely meets our team’s needs.

Lastly, data privacy is essential in our work. By running large language models on our own infrastructure instead of using cloud services, we keep all client information secure, an aspect our clients appreciate. Careful planning, practical technical decisions, and regular user feedback have all contributed to the project’s success.

Conclusion

The AI Proposal Generator is not a static tool; it’s steadily becoming a broader platform. In the future, we plan to make it even more accessible by adding low-code interfaces.  That means business and sales teams can also use its features without needing to write code. We also aim to improve the knowledge base with more detailed tagging and automated content extraction, so proposal drafts can better reflect specific project needs.

As open-source language models advance, we plan to integrate these capabilities to maintain strong performance. We’re also considering automated feedback analysis, so the system can learn from both our project data and client responses. It will help us tailor proposals more closely to client requirements.

Looking forward, we see opportunities to adapt the generator for use in our clients’ organizations as well, giving them secure, automated proposal writing tools that can improve the efficiency of their processes.

Ultimately, the WizzDev AI Proposal Generator solves a recurring problem we experienced. Integrating AI tools into our workflow has helped us streamline the proposal process.

We’re still improving the Proposal Generator. Next up? Making it easier to use without code and helping it learn from feedback on past projects. We also think this approach might be useful beyond WizzDev. Especially for companies who write a lot of tech proposals but don’t want to compromise on privacy.

If you’re tackling something similar or just want to exchange notes, happy to chat.