Any Zimbweans here who are into vibe coding and SEO?

T

Tatenda Wacho

guest
Murisei zvenyu, just want to know if there are any Zimbos (Zimbabweans) here who are into vibe coding SEO (search engine optimization).

What do you use? Claude, Codex (ChatGPT), Gemini, or Kimi Code?

Also, what are you building with these tools?
 
Yes, we are building an app called "Signal Controller".
 

Attachments

  • SIGNAL CONTROLLER.webp
    SIGNAL CONTROLLER.webp
    161.7 KB · Views: 1
Yes, we are building an app called "Signal Controller".

I don't even know were to start. I don't have a computer science background or know what goes into software development. Is it too hard? I find it fascinating, though, after watching some programming videos on YouTube and Facebook.

BTW, what does Signal Controller do?
 
I don't even know were to start. I don't have a computer science background or know what goes into software development. Is it too hard? I find it fascinating, though, after watching some programming videos on YouTube and Facebook.

BTW, what does Signal Controller do?

Right, from the top. Signal Controller is a desktop program for people whose job is looking after websites. Agencies, publishers, in-house SEO people, anyone who owns a site big enough that they can't hold all of it in their head anymore.

The problem it exists for is not a shortage of data. Everyone drowns in data already. Search Console, analytics, crawlers, backlink tools, spreadsheets from three different vendors.

What nobody has is a straight answer to the only question that matters. Given all of that, what should I actually change on Tuesday morning, and did last month's change work?

Here's the version I wrote on a sticky note and stuck above the desk. Search Console is a reporting tool. You look, you learn, you leave. It's the end of the road. Signal Controller is meant to be the start of one.

Concretely, it swallows your evidence, works out what's actually wrong, turns that into specific pieces of work assigned to specific people, and then goes back later to check whether the fix took effect. That last part is the bit nobody else does. Every tool on the market will tell you a page is underperforming and then never mention it again.

It didn't start this big. It started as one narrow thing: internal linking. Which of your own pages should link to which other pages, using what anchor text, and why.

That's a hard problem, graph mathematics over your own site rather than opinion, and it's still the core of the product. But once you've built machinery that understands a site as a graph, the neighbouring problems start looking solvable, and the scope grew into a full enterprise SEO suite.

The spine of the design is one sentence I keep coming back to. An imported observation becomes a canonical site subject, which becomes a finding, which becomes a decision, which becomes work, which becomes a verified outcome. Six links, called the identity chain.

Every feature in the product exists to hold one of those links together. If a feature breaks the chain, it's wrong even if it works perfectly. That's a written rule, not a mood.

The user-facing side is deliberately four screens rather than forty. The Evidence Grid is the dense analytical workbench where you curate data, a spreadsheet that understands URLs. Living Site is the spatial view, pages and topics and links laid out so you can see the shape of the thing.

Work Graph holds the queue, the dependencies, the timeline, and the capacity maths. Inspector answers "tell me everything about the one thing I've selected." Four surfaces, because tile dashboards are where insight goes to die.

The first slice that has to work before anything else matters is written down precisely. Import one workbook, map its columns, canonicalise its URLs, investigate the typed rows, promote selected findings into work, assign them, verify completion, write the outcome back into the grid. Not spreadsheet parity. That one loop, working properly.

There's a rule inside the Evidence Grid I'm oddly proud of. A missing row must never be treated automatically as a negative result. If a query is absent from a search report that doesn't prove rejection, it might just mean nobody asked that month.

So the grid keeps observation, inference, and conclusion as three visibly different things. Most tools mash all three into one number and call it insight.

Now the honest part, since you asked whether it works. The capability inventory currently reads 372 numbered commitments, zero complete, twelve partial.

The twelve partials are all pre-existing prototype work. Search, a command palette, tables, long-running jobs, exports, accessibility, terminology. None of it is progress against the real scope.

Two of the three engines in there, the Evidence Grid and the Work Graph, are each individually the size of a commercial product on their own. So it's a multi-year programme, not a weekend.

I keep that "0 complete" line visible on purpose. The moment you let yourself round it up, you've started lying to yourself about where you are, and that's the failure mode that kills projects like this.
 
Ok that's clearer than I expected. But I have to ask the obvious one. There are already a hundred SEO tools out there: Ahrefs, Semrush, Screaming Frog, all of them. What makes yours different other than being yours?

And you said it checks whether the fix worked. How? How does a program know that changing a link actually did something? That sounds like the kind of thing you can't really prove.
 
Ok that's clearer than I expected. But I have to ask the obvious one. There are already a hundred SEO tools out there: Ahrefs, Semrush, Screaming Frog, all of them. What makes yours different other than being yours?

And you said it checks whether the fix worked. How? How does a program know that changing a link actually did something? That sounds like the kind of thing you can't really prove.

Fair challenge, and it's the right one to press on. The difference isn't the feature list. Feature lists converge; anyone can bolt on a crawler. The difference is what the tool is allowed to say to you.

Every product in that category eventually hands you a score. A health grade, an authority number, an SEO score of 68 out of 100. That number is a guess about a black box.

Nobody outside Mountain View knows how the ranking systems actually work, so a composite score is a claim that can never be proven wrong. Which also means it can never be trusted. That exact class of metric is the thing this product exists to replace.

The charter is therefore narrow on purpose. Don't try to replicate Google's ranking. Build algorithms that answer questions Google doesn't answer for a site owner, that run on data Google doesn't expose to anyone else, and that can be proven on your own site.

The data nobody else has is your own. Your Search Console history, your analytics, your full crawl, and your record of what you changed and what happened afterward. That last one is the asset, and it only exists if something bothers to keep it.

Four rules decide whether an algorithm ships at all. Every score must break down into named, inspectable inputs with no hidden constants, so it's traceable. It must produce one sentence of cause and effect in plain language, generated from that breakdown rather than handwritten per case, so it's explainable.

It must end in a specific change to a specific page or template, so it's actionable. And a later crawl or data import must be able to prove the prediction right or wrong, and must actually do it, so it's checkable. Failing any one of the four is a blocking defect, not a backlog item.

Flowing out of that, there's a list of outputs the product is structurally forbidden from producing. No composite site score. No metric without a breakdown panel, no prediction without a confidence band, no recommendation without a verification plan.

Which answers your second question. The verification isn't clever; it's bookkeeping plus patience.

When a recommendation gets made, the expected effect and the way to measure it are recorded at that moment, before any work happens. Later, the affected pages get re-crawled, re-queried, or re-measured, and the evidence is attached back to the original decision. Right or wrong, it goes on the record.

If a condition that was previously fixed comes back, the work item reopens itself and creates linked follow-up work. Nothing quietly closes and stays closed.

The reason competitors don't do this isn't laziness; it's that they never observe the outcome. They sell the diagnosis and leave before the surgery. Once you keep outcomes, you can ask the question that's actually worth money, which is which types of work and which playbooks reliably produced results, and which merely generated activity.

There are six named algorithms in the first register, and they all have this shape. Equity Flow is personalised PageRank over your internal link graph, except the teleport vector is weighted by business value instead of being uniform, so authority is measured against where the money actually sits.

The maths is E = (1−d)·v + d·Mᵀ·E, where v blends conversion value, entry sessions and manual priority, and the edge weights in M come from link position, prominence, rel attributes and whether the link even renders. If you haven't connected analytics, v falls back to uniform, and the whole result gets stamped UNCALIBRATED rather than quietly pretending otherwise.

Stranded Authority Index finds pages that earned attention but can't be reached or can't pass it on. Template Leverage Score works out which single component edit has the largest structural consequence, which matters enormously on a templated site where one change hits ten thousand pages.

Cannibalisation Resolver decides which of your own competing pages should win. Substitution Risk measures which demand is being answered by AI without anyone clicking through, which is the live existential question for publishers right now. Decay Velocity catches pages sliding before the loss shows up in any aggregate number.

All six emit into the same work item contract and the same verification loop. That's the actual product. Not six reports, one pipeline with six entry points.
 
Right. So where does it live? When you say desktop program, do you mean I download an installer like a normal app, or is it a site I log into? And does my data go to your server?

You also said self-hosted earlier, which I've heard but don't really get.
 
Right. So where does it live? When you say desktop program, do you mean I download an installer like a normal app, or is it a site I log into? And does my data go to your server?

You also said self-hosted earlier, which I've heard but don't really get.


You download it and install it. Normal desktop app, Windows and Linux, running on your own machine. No website, no account on my server, no dashboard I can peek into.

Self-hosted means the whole thing lives on hardware you control. The app, the database, the search index, the AI model, all of it. Your site's data never leaves your building.

That matters commercially because agency clients get twitchy about handing crawl and revenue data to a third party. It matters legally because some of them genuinely aren't allowed to.

There's a stronger version of the commitment baked into the design, called the walled garden. The shipped product opens no inbound network surface and has to pass an air-gapping audit, meaning it works with the network cable pulled out.

That one rule has killed several otherwise sensible technical choices, and I'll come back to it because the story is a good one.

It ships as four editions from a single codebase, built as separate profiles with independent version numbers. Public is the self-hosted blank slate, one-click install, and a clean uninstall, for anyone. Personal is the one running on my own hardware, which I reach over remote desktop.

Agency is multi-user, a shared backend the agency itself manages for its customers. Dev and testing are command-line and headless, which exists so AI agents can drive the test suites without a screen in front of them.

Under the surface, the app supervises its own infrastructure. There's a database, a search engine, a local AI runtime, metrics collection, and error tracking in there. A real server stack, and the user sees none of it.

That's not laziness in the documentation; it's a written boundary. The user must never need to understand Docker Compose, IP addresses, OpenSearch shards, PostgreSQL administration, model servers, embedding batches or deployment promotion. It launches like a desktop product, and the plumbing is supervised internally.

The pieces themselves, since you'll see the names again. Docker Compose runs the services, with Ansible and OpenTofu handling the host and any external infrastructure. Inside the Compose project sits the Spring core, a diagnostic broker, PostgreSQL as the canonical store with Apache AGE for graph queries, OpenSearch for text and vector search, and llama.cpp running CPU only local models.

Alongside those are Prometheus for metrics, Grafana Tempo for traces, an OpenTelemetry collector for transport and GlitchTip for errors. Exactly one published application port. Product databases and named data volumes are preserved through every operation, which is a safety absolute rather than a preference.

The AI parts run locally too. Qwen3 Embedding 0.6B turns text into vectors, a BGE reranker re-sorts results, and a small generative model handles phrasing and labelling. All in GGUF format through llama.cpp, CPU first, no GPU required.

The important restriction is that the generative model is authoring time only and never touches the measurement loop. It proposes wording, a human approves it, and after that the prompt set is frozen data rather than something being generated fresh. Temperature zero, pinned model version, fixed seed, so any run can be replayed exactly.

Paid embedding APIs are banned outright. Sending customer query data to a third party breaks the local first promise and the air gap promise in the same move.

The hardware target is deliberately modest. Sixteen gigabytes of RAM, eight cores, no GPU assumed. There's a documented memory contract with a hard peak, a floor that stays resident, an envelope per workload, and exactly one heavy mode allowed to run at a time.

That constraint does a lot of design work for free. It's why the architecture is one careful process family instead of a dozen hungry services.

One more rule governs all of it. Nothing hardcoded, ever. No hostnames, no IP addresses, no ports as magic numbers, no file paths, no thresholds, no machine names anywhere.

Everything comes from an environment variable, a config file, a database-backed setting, or a validated hardware profile. Someone else will eventually clone this onto a MacBook or a Lenovo, and it has to simply work. A hardcoded value counts as a failure to follow instructions and gets fixed on the spot, even in a file nobody asked me to touch.
 
Vibe coding gets you to launch, then reality arrives. Scaling that mess demands actual human engineers.

Version one practically wrote itself. Nobody warns you about month three, when a single feature quietly spawns more broken behavior than I can even tally anymore. My stack, for the record, involves Fable alongside Sol.

I gave them everything: skills, routing instructions inside Claude.md, an entire regressions.md dedicated to past failures.

They read all of it, congratulate themselves, then break identical things again, and cap it off by pasting twenty screenshots that supposedly prove everything works now. It never does.

Paying a seasoned human developer stung a little, until he killed the entire thing in sixty minutes flat while I watched.

Which raises the question: what are OpenAI and Anthropic actually selling at trillion-dollar valuations? Whatever it is, the coming correction will be brutal.
 
Anyone claiming they shipped something truly production-grade within thirty days is selling you fiction.

Good software emerges slowly, demanding patience and repetition.

My project was supposed to wrap up inside four weeks, tops.

Five months later, here I sit, staring at something that still isn't anywhere close to shippable, and the finish line keeps sliding further away.

Bear in mind, I write software professionally, with years behind me.

Hardening performance, polishing interfaces, chasing crashes, locking down security, none of that disappears because your MVP landed quickly.
 

Trending content

Sponsored

Top