Start from the problem, not the technology.
Almost everyone who comes to us arrives with one of these four situations. Pick yours: each one leads to what we have already measured about it and to the first step.
Before touching it, we measure what it carries. On the Baguete news portal, 74% of the 3 million lines were third-party; the new version has 25 thousand. The migration starts with that X-ray.
ChatGPT, Gemini and Muse already choose where to buy by reading the HTML. We read your store the way the assistant does, item by item. Free reading within 24 business hours.
Brazil's ECA Digital has required reliable age verification since March 2026; the move to post-quantum cryptography has a timetable. We show how to comply without collecting too much data and what to change first.
An assessment, a benchmark, a sensor reading or an AI score. We audit the yardstick and return three verdicts, with the margin declared beforehand and a receipt a third party can check.
Six areas and a notebook, each in its own color.
Every section has a demo you can play with, the measurement with its number and source, and what could still be wrong. No jargon: every technical word gets an everyday example before the definition.
ChatGPT, Gemini and Meta's Muse already choose where to buy by reading the store's HTML. We show what the assistant gets from yours, item by item.
Seven tools that compress, search, answer and timestamp sensor data with a guarantee anyone can check. Proven on a subsea cable, the power grid and whales.
What the quantum computer breaks, when the estimates say it will, and what it costs to switch.
A live encrypted election and 16 tests on where computing without seeing the data works, costs, or stalls.
Prove you are over 18 without showing your date of birth. A cave to try it and four measured proofs.
Producing reports, assessments and code became almost free; checking did not. We audit the yardstick and return three answers: meets, fails or undecidable.
Agreeing costs less than objecting · Green is silence, not a certificate · The draw made the call
What's on the bench right now.
Three projects at different stages: one for a client in Switzerland, one product of our own, and a migration. The numbers are the ones measured through the end of September 2026.
The watchmaker photographs the part. The catalog says which one it is.
A catalog of about 100,000 components, with three photos each. The first lesson came before the algorithm: in bench photos, the part filled 3% to 12% of the frame, and accuracy dropped by half — the search ended up describing the foam tray.
So the rule moved to the moment the photo is taken. At capture.calibr.ch, the camera only fires when the part fills the frame the right way. Whoever takes the picture doesn't need to understand the rule, just follow the arrow. The bad photo never gets to exist.
Guides people open when they're about to decide.
A family of local guides — where to eat, where to get treated, who fixes the house — built from public data and written for someone who arrives from Google at seven in the evening looking for "pizza in Recife". Nobody browses: they open the list for their city and call.
The first one, SaborCidade, went from 2 people a day in July to over 800 in September, with no paid media. 19% of page views end in a contact: WhatsApp, phone, website or map. That's what the advertiser buys, and their dashboard shows the real number.
From 3 million lines to 25,000.
The portal ran on PHP with Zend Framework 1 and an embedded Revive ad server. Counting everything that shipped along with it on disk, it was 3,064,825 lines in 8,374 files. The new version, in Go, with the site, newsroom and newsletter, is 25,422 lines in 179 files.
The gain didn't come from writing the same code shorter: our own code halved, from ~43,600 to ~20,900 lines. The rest came from no longer carrying 2.3 million lines of third-party code and 685,000 lines of generated files stored alongside the program. Fewer parts to update, fewer doors to watch.
| What it was | Lines in legacy | What it is today | Lines in the new version |
|---|---|---|---|
| PHP application (controllers, models, views) | 22,493 | Go application | 12,370 |
| Own front end (CSS, JS, standalone pages) | 21,140 | HTML templates (site, admin, newsletter) and own CSS/JS | 6,837 |
| Revive Adserver | 1,370,831 | — | 0 |
| Zend Framework 1 and PHP libraries | 774,459 | Third-party (Editor.js, jssocials, jQuery Validate) | 314 |
| Generated data (sitemaps, saved newsletter issues) | 685,340 | SQL (schema, migrations, seeds) | 1,701 |
| Third-party in public/, prototypes, campaigns, documentation | 190,562 | Tests, documentation, deploy, configuration, inherited | 4,200 |
| Total | 3,064,825 | Total | 25,422 |
Four habits, no slogans.
Measure before promising
Every number that goes on a page comes with its source, its date and a way to redo the math. Third-party estimates appear as estimates, with the name of whoever made them.
Publish the correction
When one of our numbers was wrong, the page says what it was, what it is and why. That's what happened with vibration compression and with the scaling of certified search.
Fewer parts
Go, a relational database and pages that arrive ready from the server. Every dependency is one more door to watch; the Baguete migration removed 2.3 million lines of them.
Let the client check
The checker ships with the system. Whoever receives the data, the report or the vote can verify it without having to trust us.
Twenty-six years of real problems.
The first big system was for a hospital, in Parobé, in 2000. Then came a university hospital, web hosting, email marketing, retail, a real-estate lender, agroforestry research and a newsroom. The technology changed several times. The kind of question didn't: scale without breaking, cost less, know when the number is wrong.
Who builds it: Andrey AndradePhysics and mathematics at UFRGS, software engineer since 2000. Everything on this site was written by me. andreyandrade.com →
Tell us the problem. We'll say if we can measure it.
We don't sell packages. First we understand what you need to prove, and to whom. If it isn't a job for us, we say so in the first reply.