Recently, I haven’t been updating my open-source articles as frequently — not because I’ve stopped writing, but because the progress on open-source commercialization has been great, and the endless task of drafting proposals has consumed my time. As a native open-source commercial company, WhaleOps employs mostly engineers. Asking these open-source contributors to write proposals wastes their development time, and their proposals don’t always meet the quality standard. Unlike managing in a big company, being a startup CEO means stepping into any role the company needs. After every strategic meeting, I’m the first to roll up my sleeves and tackle the most urgent tasks. As a result, I haven’t had time to write articles, as my limited time is mostly taken up with creating proposals that follow the formal template style. Especially recently, with one bid after another, I’ve found myself questioning my sanity.
As a tech person, I always look to tools to solve my problems. Naturally, I thought of large models, but they can’t fully grasp the nuances of our products and often produce unreliable outputs. Plus, you’re the one delivering the work, not the model. So, I decided to develop a tool for proposal generation based on large models using Python and a compatible large model (compatible with ChatGPT). This tool automatically generates a proposal from your product documentation, breaking down product manuals into feature points. Based on a human-created mapping of these points to the requirements, it generates a Word version of the proposal and an Excel deviation table. The model can condense or expand content or simply copy relevant functionality as needed.
The functionality of this tool is simple, with the most challenging part being the Word formatting (formatting in Word is always a pain). I experimented with several methods to make sure it follows the correct Title 1, Title 2, Title 3, body text, table, and image formats in the Word template. Staying true to the open-source spirit, I’ve uploaded the tool to my personal GitHub under an Apache License, so feel free to use it if you need. Here’s what it does:
Get it here: https://github.com/William-GuoWei/ProposalLLM
With this tool, you can quickly modify and generate proposals at will.
Start by running Extract_Word.py
to generate your product feature points as a Word document, then run Generate.py
. If a feature point is missing, you can enter “X” in the Excel file, and the model will generate content that meets the requirements. However, I strongly recommend a manual review. After generation, you’ll see the proposal formatted with a table of contents, body text, images, tables, and bullet points, all automatically organized.
The entire proposal is structured according to the client’s requirements in sequential format, with subheadings, content, images, and point-to-point responses. This takes care of all the repetitive work.
The automatically generated deviation table includes everything, whether the content was generated by the model or not, along with the corresponding section numbers. You only need to finalize the deviation table with “&” symbols based on the final requirements — the model has written it all for you.
For me, this tool has reduced what used to be 8 hours of work to around 30 minutes, and even our business team can generate the business proposal sections using the template. In total, this has cut down our time for a week-long proposal to 1–2 days, reducing the manpower required by 80%.
First, download all the code to a single directory from GitHub at https://github.com/William-GuoWei/ProposalLLM: Proposal Large Model (Chinese version).
pip install openpyxl, docx, openai, requests, docx, python-docx
.Template.docx
. Be sure to use the body text, Title 1, Title 2, and Title 3 styles provided; other formats may cause issues.Extract_Word.py
to generate the feature point document from the product manual (supports up to 3 heading levels). If the list formatting appears off, don’t worry; the final format will align properly.Generate.py
:API_KEY
and SECRET_KEY
: Baidu Cloud large model keys.MAX_WIDTH_CM
: Maximum image width; images larger than this will be resized automatically.MoreSection=1
will read Column C to generate detailed tertiary headings (default is on).ReGenerateText=0
will re-generate text content automatically for different proposal needs (default is off).DDDAnswer=1
generates the point-to-point response content at the top of each feature point (default is on).key_flag=1
adds the importance level of each requirement to the proposal headings (default is on).last_heading_1=2
specifies the starting chapter for the technical solution in “proposal_content.docx.”8. Run Generate.py
.
With this tool, you only need to check the product features against the proposal requirements, and most of the proposal content is generated automatically. The business proposal section can also be generated similarly, so creating a 1,000-page proposal now only takes a few minutes.