Developed as a proof of concept to get TED tenders via. API, translate to English when necessary (because yes, I am an uncultered swine) and use OpenAI to analyse the tender text against a business description and make a decision on whether the tender seems suitable for us to bid on, with a short justification.
Use the official Expert Search tool on the TED portal to build a query, for example:
(classification-cpv IN (51110000 50532000 50000000 45310000 45314300 34144900 31158100 31158000 09000000)) AND (notice-type IN (pin-only pin-buyer pin-rtl pin-tran pin-cfc-standard pin-cfc-social qu-sy cn-standard cn-social subco cn-desg)) AND publication-date>=20241001<=20241101
Put this in the search box and click Search.
Q. Why ChatCompletion?
A. Having tested with the instruct model gpt-3.5-turbo-instruct
the model made way too many (incorrect) assumptions of the business (even with very low temperature to try and force deterministic responses), leading to incorrectly labelling bids as suitable to bid on. Testing with a modern model (gpt-4o-mini
) led to far better (and waaay cheaper 🤑) results but is only compatible with ChatCompletion. The app only ever sends a single user message so the effect is the same as if the Completion format were used.
Q. Why prompt context over Embeddings / RAG?
A. Prompt context was far easier to implement (and test with a variety of model types) for a proof of concept. I would expect this to be an obvious improvement for any prod solution.
Q. Why did you only analyse data point X?
A. Simiarly to above, for the PoC it didn't make sense to analyse every possible data point returned. In a prod solution I would also expect to analyse data such as the assessment criteria, the tender return date, and probably use improved company profile to analyse what services are required in which countries, and can we offer that.