Stickybit · Porto Alegre, Brazil · since 2004

Software with a receipt.

We build systems for people who can't afford to be wrong in the dark: retail, healthcare, newsrooms, research. Every delivery comes with proof of what it does — how much it misses, what it leaves out, what it costs. When the math changes, we publish the correction.

In September we corrected one of our own numbers from 36.8× to 23.6×. The page says what it was, what it is, and why.

Receipt · E-commerce

PromiseAI assistants find and understand your store
How we prove itwe read the store the way the bot reads it, item by item
4 of 4
large retailers with no machine-readable barcodeaudit · Sep 2026
If the math changeswe publish the correction
open the section →
Live now

Four 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.

In progress

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.

Calibr · Switzerland · visual search for watch partsprototype live

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.

~100,000parts in the catalog, 3 photos each
53% → 24%right answer in the top 5, with raw bench photos
69.3%right answer in 1st place, on 482 shop photos
≥ 50%of the frame filled by the part, required when the photo is taken
Open capture.calibr.chbest on a phone: it asks for the camera
4% of the frame "move closer" fires on its own beforethe photo goes in, the search misses nowthe bad photo doesn't exist
The gauge at the bottom is how much of the frame the part fills. The threshold comes from the catalog's photo specification; the accuracy drop with raw photos is measured in the project documentation.
City directories · Brazil, Mexico and the US · our own productlive and growing

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.

336,409restaurants, bars and cafés in 230 cities
20,000people a month, at last week's pace
9,400contact clicks a month
92%of visits come from Google
SaborCidadeBR SaborCiudadMX SavorCityUS HealCityUS SaludCiudadMX CasaCidadeBR SaúdeCidadeBR AutoCidadeBR · 108,000 businesses
People per week on SaborCidade Google Analytics, through Sep 26, 2026 188Aug 16 753Aug 23 1,098Aug 30 1,957Sep 6 3,725Sep 13 4,767Sep 20 week starting on
In the week of September 20–26: 4,767 people, 8,178 page views and 1,581 contacts. The daily numbers are on the advertising page (in Portuguese).
Baguete · tech news portal · migrationin progress

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.

120×fewer lines overall
115 → 1.7 MBof code on disk
8,374 → 179files
2.1×less code of our own
Non-blank lines, on the same scale legacy · PHP / Zend 1 + Revive Revive (ads) · 1.37 M Zend and libs · 774 K generated · 685 K our own code · 43.6 K new · Go 25,422 lines: the sliver on the left 3,064,825 → 25,422
Count of non-blank lines by category, across both project trees. In the legacy system, 74% of the lines were third-party (Revive, Zend, libraries in public/) and 22% were generated files.
What it wasLines in legacyWhat it is todayLines in the new version
PHP application (controllers, models, views)22,493Go application12,370
Own front end (CSS, JS, standalone pages)21,140HTML templates (site, admin, newsletter) and own CSS/JS6,837
Revive Adserver1,370,831—0
Zend Framework 1 and PHP libraries774,459Third-party (Editor.js, jssocials, jQuery Validate)314
Generated data (sitemaps, saved newsletter issues)685,340SQL (schema, migrations, seeds)1,701
Third-party in public/, prototypes, campaigns, documentation190,562Tests, documentation, deploy, configuration, inherited4,200
Total3,064,825Total25,422
How we work

Four habits, no slogans.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Who with

Twenty-two years of real problems.

The first big system was for a hospital, in Parobé, in 2004. 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.

Contact

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.

algorithms@stickybit.com.br WhatsApp Porto Alegre, Brazil · we reply within one business day · English or Portuguese