Chingie, the Studio Chingie mascot

Studio Chingie

Solicitation Analyzer

Internal tool

Turns an RFP, RFQ, or RFI PDF into a compliance checklist: deadlines, how to submit, eligibility, evaluation factors, and required content. Every item quotes the page it came from and is checked against the PDF. It runs on a local open-weight model, so documents never leave the machine.

Browse sample checklists
Document AIGovernment procurementLocal modelMeasured accuracyOpen source
Compliance checklist for an Air Force software RFP and its amendment, with key facts cited to Amendment 2 page numbersCurrent build
A checklist generated from an Air Force RFP and its amendment by a model running on local hardware.

Development details

Source code
Public

Built with

PythonQwen 3.8 27B (local)LM StudiopopplerGitHub Actions

Screenshots

Local web page with a solicitation PDF and its statement of work selected
Current build

Drop in the solicitation with its amendments and attachments. The page runs on 127.0.0.1 and the model runs on the same machine.

Finished checklist for a USGS RFI with the response deadline and submission method
Current build

A 2-page RFI with its 9-page statement of work became 88 checklist items in about four minutes, every quote found word for word.

Key facts and weighted evaluation factors for a New York State RFP
Current build

Key facts first, then the evaluation factors with their points, each cited to its page.

Deadline section showing the amended date, a strikethrough warning, and the original date struck out
Current build

Addendum 2 moved the deadline from August 7 to August 13. The struck-through old date survives in the PDF text as "August 7 13", so the tool asks a person to confirm.

Checklist item read from a table with warnings to confirm the table and the time
Current build

When the model reads across table cells, the item is kept only if every word sits close together on the page, and it is flagged for a person to check.

Sample report gallery and a table comparing the model with a keyword baseline
Benchmark chart

Scored against reference answers for five public solicitations, alongside a keyword baseline with no model.

What it does

It reads a solicitation with its amendments and attachments. It returns the response and questions deadlines, how and where to submit, the page limit, the set-aside, the NAICS code, the evaluation factors with their weights, and a checklist of what the response must contain. Each item gives the page it came from.

Every item is checked against the PDF

The model must quote 8 to 35 words from the page it cites. The tool then finds that quote in the PDF text, including across page breaks, two-column pages, and tables, and removes anything it cannot find. Dates are checked against the quoted words, and an amended deadline replaces the original.

Measured, not assumed

The test set is five public solicitation packages, 129 pages in all. The tool got 34 of 35 key facts right, found all 15 evaluation factors, and covered 57 of 58 must-do items. A keyword baseline with no model scored 83%, 67%, and 67% on the same measures. The reference answers, scoring, and caveats are in the repository.

Private by default

It runs an open-weight model on local hardware through LM Studio, so a solicitation and a draft response never leave the machine. A hosted model can be switched in when speed matters more than keeping documents in-house.

Built to be checked

It needs no third-party Python packages. Its unit tests run without a model, and model replies are cached so runs repeat exactly. The published sample reports replace people's names, emails, and phone numbers with placeholders.