← ronnyglotzbach.com

Writing

From the chat window into the repo: what changed in 2026

Psychofit is a platform for psychological counselling online. It opens up evidence-based support to people who would otherwise wait months — delivered by psychology graduates under the supervision of licensed psychotherapists. The reasoning behind that is on their mission and vision page.

Psychofit is a founding team, not a one-person project. I am the technical co-founder and own everything technical — what follows is my part of it.

Between December 2023 and early January 2026, around 24,000 lines of code went into it, across 245 commits. In the 17 working days that followed, another 72,000 arrived.

Those numbers are in the git history; I counted them. What they do not reveal: AI was involved in both phases.

The difference was not the AI, but where it sat

In the first phase I worked with claude.ai — in a browser, in a chat window. Ask a question, read the answer, select the code, paste it into the editor, adjust it, paste it back when something broke. It worked, and it was faster than nothing. But every step went through my clipboard.

At the end of 2025 I switched to Claude Code, the coding agent from Anthropic. Behind it sits the same model as in the chat window. The difference is where it sits: in the terminal and as an extension in VS Code, with access to the repository. It reads the files itself, changes them itself, runs the tests and sees what comes out.

With the Opus model from late 2025 on, this became something that holds. I was not alone in that: Andrej Karpathy, formerly head of AI at Tesla, wrote in January 2026 that coding agents had crossed a threshold since December: away from brittle demos, towards tasks that stay coherent over long stretches. That matched my own experience.

That sounds like convenience. It is actually a difference in the kind of task you can pose at all.

In a chat window you ask: “How do I write a function that calculates free appointment slots?” You get a function. The rest — where it belongs, which types it needs, what it breaks in the four other files — is on you.

In a repository you ask: “Replace Calendly with our own booking system.” That is not a function. That is 366 files.

What those 17 days produced

We were using Calendly and had three problems with it. First, its automatic confirmation email cannot be switched off — clients received two emails, ours and Calendly’s. That has been an open thread in their community for years; there is no workaround. Second, the booking completed on someone else’s domain, where conversion tracking did not reach. Third, a planned feature would have meant duplicating event types per counsellor, purely to tell two groups of clients apart.

The decision to build it ourselves was the team’s. Building it was mine.

A second tool followed: Typeform, for feedback and other questionnaires. That runs in-house now too, shaped around what we actually want to ask.

So: our own booking system. It works out the free slots from the database itself — weekly availabilities, exceptions, buffers between appointments, capacity limits. Reservation, payment and booking hang together as one chain, so no slot is ever handed out twice.

On top of that came three interfaces that did not exist before:

A dashboard for the counsellors: maintain weekly hours, enter exceptions and holidays, set a time zone, browse clients with filters, move or cancel appointments. Holiday mode notifies affected clients automatically — sounds minor, is not when counselling relationships are running.

An admin area: create and manage counsellors, view and export bookings, the entire email system with around twenty templates and an editor, reminder rules, discount codes with proof checking. Plus an emergency stop for outgoing mail in case a template breaks.

A client portal: book a follow-up, cancel or reschedule within the 48-hour rule, opt out of marketing email.

228 commits, 366 files, 72,371 lines net. From 8 January to 14 February 2026, across 17 days with commits.

What used to take a team

What surprises me most is not the speed itself. It is what I measure it against.

I spent five years in teams of five to fifteen people, latterly as lead. A piece of work this size was naturally split up there: someone on the backend, someone on the frontend, someone on the pipeline, plus coordination, code reviews and handovers between people who each only see a slice. That is not a criticism — it is how you work when one person cannot carry the volume.

That split has gone for me, and with it the friction between the parts. What remains is the work that used to fall between the roles: knowing what should be built, and recognising when the result is wrong.

Two examples from the same repository, both countable:

The payment and booking path — Stripe integration, data model, calendar, payment methods, availability display on the homepage — went live in three days from first commit to finished page, 34 commits. January 2026.

An outcome-measurement feature with questionnaires, versioning of questionnaire states, time-series evaluation, an automatic cleanup job and a link to a review platform: five days, 31 commits, 56 files. July.

For work of this kind I used to think in weeks, and with several people involved in months — coordination, reviews and handovers included. That is the difference that surprises me most.

What is no longer on the invoice

The obvious item is licences. Calendly’s Standard tier costs $12 per seat per month when billed monthly. That is a price per counsellor, not per booking: with four counsellors it is $48 a month whether zero appointments get booked or a hundred. With twenty it would be $240. Typeform’s cheapest paid tier starts at $25 a month.

Those items are now zero, and they stay zero as the team grows. That is the point: with bought-in tools the invoice grows with the team; with your own system it does not.

What the licence bill does not capture matters more. The booking flow is ours now — from picking a slot through the Stripe checkout to the confirmation email, it is one continuous flow we shape, instead of bouncing between someone else’s screens. When we notice clients dropping off at a particular step, we change that step. No feature request with a vendor, no waiting on their roadmap, no workaround for something that has been open for years.

That is the real reason the effort paid off. The licence fees were the trigger. Control over the flow is the result.

What that is worth, and what the comparison does not say

To gauge the effort, it helps to look at what service providers quote for the individual parts. Not the bundle, but piece by piece:

PartTypical estimate
Booking system with payment8 to 12 weeks for an MVP, $25,000 to $45,000
Client portal3 to 4 months to a first usable version
Backend with database€20,000 to €80,000 for an API with business logic, around 200 hours for the core

That is three of six areas, and they alone add up to half a year. For the counsellor dashboard, the admin area and the email system with its editor I found no estimate I would be comfortable citing. So they come on top, without me putting a number on them.

The Freelancer-Kompass 2025 puts the median hourly rate for IT freelancers in German-speaking Europe at €95, and €104 across all sectors. Hold the scope against those estimates and you land at 400 to 600 hours: roughly €38,000 to €57,000 at that rate for a senior freelancer.

With an agency it becomes a different number. German digital agencies publish hourly rates of €120 to €180 and €120 to €150 respectively. Against the same 400 to 600 hours that is €48,000 to €108,000 — for the development alone.

And development is not the whole line item there. The same agency writes that development typically accounts for only 30 to 40 percent of project costs; the rest goes to strategy, design, testing and project management. Count that in and a project of this scope sits in six figures.

This is not a complaint about agencies. Those line items exist because several people have to coordinate, and in a team of five a project manager is not waste but the precondition for anything shipping at all. I did not have those costs because I did not have that coordination.

The rough total

Anyone contracting out the whole scope, meaning booking system, payments, counsellor dashboard, admin area, client portal, questionnaires and the email system, lands roughly here depending on who builds it:

Who buildsRough order of magnitude
Experienced freelancer€40,000 to €60,000
Small agencyfrom around €120,000

The lower figure holds up along two independent routes: once via the hourly estimate, once via the individual items above, where the booking system and backend alone already exceed €40,000. Upwards it gets vague quickly, which is why that row says “from”.

The difference is not that I type faster. It is that I know which question to ask the tool, and that I notice when the answer is wrong. Fifteen years of practice matter more here than the model does.

Douglas Adams wrote this down in 1979, long before coding agents existed: the supercomputer runs for seven and a half million years and returns 42. A perfectly correct answer, except nobody had pinned down the question. Not much has changed since, apart from the runtime.

Both calculations are market comparisons, not proof. They say what someone would have charged. They say nothing about whether my result is the same result.

What the number leaves out

Three objections people have put to me, and all three hold.

Is the code maintainable? The 17 days are sunk cost. The time-zone edge cases, the daylight-saving transitions, the race conditions when two people reach for the same slot — those come back every year. Everything Calendly used to handle, we now maintain ourselves — and in practice that means me. Building your own system is not the expensive decision. Running it is.

Can I explain every line? Not from memory. But I made the technical decisions and I read what appears. The difference between “used a tool” and “does not know what is running” is exactly that: whether you ask the questions or only take the answers.

Are 2,000 lines a day not too many? The question misses the point, and I only noticed that while working: I no longer look at lines. I click through the feature and check that it does what it should — for the booking system that means booking an appointment, cancelling it, rescheduling, switching time zone, two browsers reaching for the same slot at once. The polish comes afterwards, bit by bit, as everyday use reveals what is missing.

Counting lines was a measure for a time when every one of them was handwritten. Today it only tells you how much text appeared. Not whether it does the right thing.

What I take from it

The tool did not make a single decision for me. Whether the booking system computes its own slots, what happens when two people click the same appointment at the same moment — those were my questions, and asking them was the work.

What gets built, by contrast, is never my decision alone. That is settled in conversation: with my co-founder, who owns the professional side, and with the counsellors and users who work with it every day. Dropping Calendly came at the end of one of those rounds, not at the start. The fastest tool does not help if you build the wrong thing.

What changed is the size of the task that fits between question and result. In the chat window that was a function. In the repository it is a subsystem.

That is a real difference. It is just not the one most people mean when they say “built with AI”.