Prijava Probaj Space ISO 27001
Vibe coding with proof
Vibe coding, with proof

Vibe coding, with proof

AI makes us several times faster at writing code. What it does not speed up is understanding the product and being accountable for the result, so we wrote those down: the problem, the flow and the screen first, then the specification, then a gate that lets no defect through, then visibility in search and in AI engines. The numbers below come from real repositories, not from estimates.

1,000,000+lines of our own code
48active repositories
2,667automated tests
395database migrations
119API routes in three products
1accredited fiscal device (ID 1597)

Measured · 3 Sep 2026 Source files only: no dependencies, no build output, no minified files and no purchased themes. Tests are counted as it(), test() and public function test definitions.

What „vibe coding" means here

The term became shorthand for generating code fast with nothing behind it. Here it means the opposite: AI is the tool for speed, the standard is the tool for safety.

What it is not
  • Prompt and hope
  • Code nobody read before release
  • Tests that reimplement the logic instead of calling it
  • „Works on my machine" as evidence
  • A library for every problem, then 300 dependencies
  • Friday evening releases with no way back
What it is
  • Specification and plan before the first line of code
  • Human review of every change, line by line
  • Tests that call the real function, proven by mutating the source
  • A gate of tsc + eslint + tests before every merge
  • Small isolated commits, money and tax logic never mixed with cleanup
  • Measurement and daily backups after release
  • SEO, AEO and GEO in the same pass, not as an afterthought

The most important work happens before the first line of code

Code is a consequence. What decides whether a product is worth anything is whether we understood the product itself, the real problem behind the request, and how a person actually does that job.

Product

We do not write until we understand the job better than the brief

For a fiscal cash register we had to understand the tax obligation, not just the checkout screen. For publishing, consignment and who owes whom once a book sells. For a newsroom, what an editor's day looks like when news breaks at 11 pm.

Problem

We solve the problem, not the request literally

A request is often already a proposed solution. If there is a cheaper or simpler path behind it, we say so before we start, with the reason and the cost of both. The decision is yours, but before delivery rather than after it.

UX

Flow before screens

We map the user's path first, including the branches everyone forgets: empty state, error, interruption halfway, several roles over the same screen. We measure steps to first value, not the number of features.

UI

A system, not a set of pretty pictures

Colour, spacing, type and components are defined as a token system, so every next screen looks like the same hand drew it. The prototype is clickable before any code is written.

The quality gate is one command

Every project has the same gate, whatever the language: type checking, linting and the full test suite in a single call. Nothing ships until the gate is green, and every test is proven by deliberately breaking the source.

  • Zero type errors and zero lint warnings in the touched file
  • A file header explaining what the module does, who calls it and why it is solved this way
  • No dead code and no duplicated logic, confirmed by hand, because tools lie about this
  • Formatting and commit conventions automated, not argued about

Five of the most complex projects

Source code measured, routes, tables, migrations and tests counted. These run in production, they are not prototypes.

Tezga eKasa

Fiscal cash register and e-invoicing for Serbia
Live
161,721 lines77 API routes148 screens67 tables990 tests

Officially accredited fiscal device, ID 1597, issued by the Serbian Tax Administration.

Trek Magazin

Media platform, also sold white-label
Live
174,211 lines423 routes368 templates128 migrations911 tests

Editorial system, own ad server, own analytics and a mobile edition.

Fascikla

Document management for companies and accountants
Live
81,459 lines32 API routes60 screens35 tables407 tests

Email intake, OCR, statutory retention periods, storage inside the European Union.

librum.market

Bookshop selling directly from authors and publishers
Live
108,886 lines356 routes66 migrations359 tests

Consignment model, per-author storefronts, e-books read in the browser.

GoSimple Space

Our own platform and this website
Live
87,600 lines86 screens192 templates136 routes

Shared account for every tool, plus our own content management system.

SEO, AEO and GEO are part of the work

A site nobody finds, and no AI engine can quote, is an expensive poster. Visibility is built in the same pass as the product.

SEO

Search engines

Heading structure, one H1 per page, internal linking in clusters, Core Web Vitals, canonical, hreflang and x-default, a sitemap that respects disabled pages.

AEO

Answers

The question as a subheading, the answer in the first two lines, a visible FAQ that matches the structured data, definitions and tables an engine can lift without interpretation.

GEO

Generative engines

llms.txt with a map of the site in plain language, clear descriptions of company and products, numbers in the copy, author and date, sameAs profiles. GEO is generative engine optimisation, nothing to do with geography.

Live examples you can inspect yourself: librum.house, librum.market, librum.rs and trek.rs. Open /llms.txt and /sitemap.xml on any of them, and read the structured data in the page source.

Questions

Does the AI write the code instead of you?

AI writes a large part of the first draft, the way a translator writes a first draft of a translation. What gets built, how it is structured, what goes into the database and what ships is decided by a person, and that person is accountable for the result. Every line that reaches production has been read.

How do you stop the AI from inventing a solution?

Three things. Regulation is checked against the text of the regulation, never from memory. A test must call the real function, because a test that reimplements the logic is not a test. And every test is proven by mutation: we deliberately break the source and the test must fail. If it still passes, the test is worthless.

Why is this faster without being worse?

Because AI speeds up typing, and typing was never the expensive part. The expensive parts are misunderstood requirements and defects found late. A written specification before the code and a gate before every merge target exactly those two costs.

Do we own the code and can we take it elsewhere?

Yes. Code, database and rights are yours, with history and documentation. Handover includes an inventory of every account and rotation of every secret on the day of handover, so nobody keeps access they should not have.

Do you work on code someone else wrote?

We do, regularly. First we measure: dependencies and their vulnerabilities, test coverage, the most expensive queries, dead code. Then a plan ordered by risk, then fixes in small steps with a test around each one. A rewrite is proposed only when measurement shows it is the cheaper option.

Do you also do SEO, AEO and GEO?

Yes, in the same pass as development. Structure, schema, llms.txt, sitemap, speed and copy that answers the question go in while the page is being built, because retrofitting is always more expensive. You can inspect the result on our live sites.

How long does it take and what does it cost?

Price is on request, because an estimate before a specification is a wish, not an estimate. The first conversation and a rough estimate are free, usually within the same business day.

Tell us what you are building

Describe the problem and you get a proposed solution, a phased plan and a price, usually within the same business day. Price is on request, after a short specification.

Get in touch
Pogledaj cene Write to us