About
About this project
Who built this site and why, how it was built with AI, what it runs on and what it costs, and what I learned along the way.
Figures as of 2 October 2026.
On this page
Who built it, and why
I am Federico Giudici, a procurement professional working for an international organization in Geneva.
I started this project for two reasons:
- to learn, hands-on, what AI tools make possible for someone who does not write code;
- to test whether public procurement information can be made more usable and accessible to procurement professionals.
This is a personal project. LinkedIn
How it was built
The site was built with Claude, Anthropic’s AI, based on my own research and my experience in procurement.
I acted as the product owner. I have no coding knowledge, but I have worked as a product owner in systems development. Claude wrote all of the code, the automated tests and the technical documentation. I did not write any code.
What I did by hand:
- set the objectives and the functionality the site should have;
- researched and chose the data sources;
- answered 49 rounds of decision questions — methods, wording, data, launch timing;
- created the accounts, paid for the services, and entered passwords and keys;
- set up the domain, published each change, and ran a few long jobs on my own computer;
- reviewed the pages and reported what was wrong.
Most of the build ran as scheduled Claude sessions. Each session read a written progress log, did one planned task, ran the tests, and recorded what it did and what came next.
Timeframe
- Started: 7 August 2026.
- Public launch: October 2026, after the monthly data refresh of 15 October — about ten weeks after the start.
- In that time: more than 230 changes to the code, about 56,000 lines of code, and nearly 2,000 automated tests.
Where the site uses AI
Prices and statistics do not use AI. Unit prices, medians and ranges are plain arithmetic on published records, and every figure links to its source record. AI is used around them:
| What | Model | Where it runs | What for |
|---|---|---|---|
| Item names in English | Claude Haiku 4.5 (Anthropic) | Anthropic’s API, called by the monthly data refresh | Translates item names published in Spanish or other languages. 82,339 of 82,341 names translated. |
| Classification suggestions | Qwen3-Embedding 4B (open model) | My own computer, through Ollama, once a month | Finds the closest classification code for items published without one. |
| Unclear classification matches | Claude Sonnet 5 (Anthropic) | Anthropic’s API, in the same monthly job | Chooses between close candidates. Every suggestion waits for a person to approve it; nothing changes on the site until then (243 suggestions so far). |
| Missing-price estimates, outlier checks, market research | Claude (Anthropic) | Anthropic’s API | Built, not in use yet. |
The site in figures
| As of 2 October 2026 | |
|---|---|
| Data sources (national procurement agencies) | 7, in 7 countries |
| Contracting processes | 1,469,766 |
| Price records | 4,083,529 |
| Currencies | 20 |
| Price records also shown in US dollars | 99% |
| Items with a price benchmark | 16,342 |
| Benchmark figures (one per item, currency and unit) | 27,168 |
| Item names translated into English | 82,339 |
Live counts per source are on the Sources page.
Tools
Used. Costs in US dollars. “Development” is what was paid up to 2 October 2026; “Ongoing” is the expected running cost.
| Tool | What it is used for | Development | Ongoing |
|---|---|---|---|
| Claude (Claude Code, Cowork, Claude Design) | Planning, code, tests, documentation, page mockups | Claude Pro subscription, also used for other work | Same subscription |
| Anthropic API | The AI functions above | 28.77 used | Up to about 16 a year |
| Neon | The PostgreSQL database | 14.92 | About 160 a year (billed by use; based on the October 2026 bill) |
| Porkbun | The domain name | 11.08 | 11.08 a year |
| GitHub | Stores the code; runs the tests and the monthly data refresh | Free | Free |
| Vercel (Hobby plan) | Hosts the website; anonymous visit counts | Free | Free |
| UptimeRobot | Emails me if the site stops working | Free | Free |
| Ollama | Runs the open AI model on my own computer | Free | Free |
| Telegram | Alerts me if the job on my computer fails | Free | Free |
Data (free): procurement records published under the Open Contracting Data Standard by seven national procurement agencies, and the UN Operational Rates of Exchange for currency conversion.
Considered, not used.
| Tool | What it would have done | Why not |
|---|---|---|
| Vercel Pro | Paid hosting plan | Not needed for a free, non-commercial site (about 20 a month) |
| Render, Railway, Fly.io | Other hosting services | Vercel’s free plan was enough (about 7–10 a month) |
| Hugging Face | Run the AI model in the cloud | The model needed was not available there; it runs on my computer for free |
| Plausible | Visitor statistics | Paid or self-hosted; Vercel’s free statistics do the same here |
Total cost
| Development (to 2 Oct 2026) | Running, per year (estimate) | |
|---|---|---|
| Anthropic API | 28.77 | 16 |
| Neon database | 14.92 | 160 |
| Domain name | 11.08 | 11.08 |
| Everything else | 0 | 0 |
| Total, US dollars | 54.77 | 187.08 |
Plus a Claude Pro subscription, which I also use for other work.
Lessons learned
- Re-check what was reported as done. An AI can report a task as finished when part of it is missing. Ask for the evidence, not the summary.
- Check security on purpose. A dedicated security review found gaps that normal development had not.
- Test with real data, in small batches first. A sampled measurement was wrong until the whole file was checked. One translation run failed on every item and still cost money; a test of 1,000 items found it before the full run.
- Real usage beats estimates. The translation was estimated at 10–15 dollars and cost about 21.
- Some knowledge of systems is necessary. AI often does not choose the most efficient way, and you need to recognise it. Running AI models on your own computer also needs at least basic PowerShell.
- Cost needs explicit work, and iteration. Server usage, database size, heavy calculations and what can run on a local AI model all had to be worked on deliberately, often more than once, before reaching a better solution.
- Plan major functions in advance. Translation was added late and first applied to the wrong text, so it had to be redone as one large pass.
- AI sessions need a written hand-off. Each session starts with no memory. A progress log and one task per session kept the work on track.
- Ask for simple reports. Short sentences, what happens first, and a clear list of what I had to do saved more time than any tool.