Anyone can prompt an AI into producing something that runs for a day. We only let in developers, vibe coders included, who work by real coding rules and real design rules. We must ensure our clients get the best results and prevent cheating the platform.
Most of them come from Autotel, the software agency behind Percommit and our own brand, where they shipped client projects for years before AI tools made them faster. They know what a finished product looks like, not just a demo.
And we keep hiring new talent, through the same tests, so every project gets the best result: cheap, on time, and verified by us.
Every applicant sends a screen recording: Claude Code or a similar tool open on a project, their prompts, and the project running. Plus a finished project when they have one online.
We watch how they prompt, how they structure the work and what comes out. When in doubt we jump on a quick call to check base coding skills and a real understanding of vibe-coding rules.
Until we approve them, their account cannot see or take any project. Approved developers carry a level, and a certified badge once they have delivered verified work.
We have seen every way a project goes wrong: at Autotel we rescued enough of them. These are the rules every developer is tested against, and our daily verification checks the code against them, not just the demo.
One 2,000-line file, copy-pasted blocks, `any` everywhere, no names a human can read.
Small functions with clear names, one job each, typed, readable without a guide.
One commit called "final_v3", secrets committed, no README, node_modules pushed.
A commit per feature with a message that says what changed, README, secrets ignored.
Misaligned boxes, five fonts, buttons that overlap, nothing works on a phone.
One grid, consistent spacing and type, clear actions, works at phone width.
The screen talks to the database directly, business rules scattered in the UI, nothing reusable.
Layers: screens call services, services own the rules, one place talks to the database.
Silence for three weeks, then one giant push the night before, nothing we could verify along the way.
Pushes every working day, features marked as they are done, verified as they land.
Passwords stored as typed, API keys in the front-end, forms that trust whatever they receive.
Hashed passwords, secrets on the server only, every input checked, roles enforced.
"Works on my machine." No tests, the happy path clicked once, every edge case left to the client to find.
Tests on the critical paths (sign-up, payment, the core flow), edge cases handled, run before every push.
A blank white screen when something fails, a spinner that never ends, an empty list with no explanation.
Loading, empty and error states designed: the user always knows what happened and what to do next.
Screens filled with hard-coded names and numbers that look alive but save nothing: a demo dressed as a product.
Real persistence from day one: what you see on the screen is what is in the database, created through the product itself.
Forty random packages for ten lines of work, half of them abandoned, one of them a security hole.
Few, well-known, maintained libraries, each one pulling its weight, kept up to date.
A 12 MB home page, a query per row, images uploaded at full size: fine with 3 users, dead with 300.
Pages under a second, indexed queries, resized images, measured before delivery.
No setup instructions, environment variables nobody wrote down, a deploy only the author knows how to do.
A README that gets a new developer running in ten minutes: setup, environment example, how to deploy.
Pasting whatever the AI produced: invented libraries, leftover TODOs, code the developer cannot explain.
AI as the fast hands, the developer as the reviewer: every change read, understood, tested, and owned.
"Done" at 60%: the form shows, saving fails, the email never leaves. Marked finished anyway, hoping nobody checks.
Done means the whole feature works end to end, on real data, and survives our check. Anything less stays in progress.