Building Vibecoded Apps (Properly)


Use Data Or Be Used By Data!

The November 2 issue of Seotistics is here for you!

The last time we've dispelled some AI myths and today I show you how to build cool and useful apps.

This is a very underrated aspect if you play with Web data where the best thing you can do is dashboards.

Well, not anymore, thankfully lol

New article about LLM measurement just dropped, go read it later πŸ‘€

Please move this email to your Primary inbox or reply to it. This is to prevent Seotistics goes into spam by accident. Gmail users can read this tutorial to do it.

​Read this in your browser​

πŸ“£πŸ“£ Important Announcements πŸ“£πŸ“£

πŸͺŽ Black Friday sales will start around November 27, warm up your wallets!

Also updating finally my products and everything else, you will see πŸ‘€

I will speak at MeasureCamp Zurich (November 22), my last event for 2026 (too tired).

And for 2027, don't forget about ​Found Conference Tokyo - 18-19 Feb 2027 (Super Early Bird active now).

Seotistics News

From October 26 to November 2:

By the way, I managed to get access to the Hermes Agent mobile app in beta (sheer luck) and it's awesome:

This is definitely something to look out for in the next weeks/months!

Some Foundational Terms

Building basic apps requires some decent understanding of computers.

So some basic concepts before we start:

  • Server: computer with a special job: staying online andanswering when contacted
  • VPS: rented slice of a big machine, with its own operating system.
  • Port: a numbered door on a machine, consider it an entry point to a service on your server.
  • SSH: the staff-only back entrance. A way of connecting remotely to your server.
  • Cron: a recurring task you set up.
  • GUI (graphical user interface): your average software, you have a graphical interface.
  • CLI (command line interface): software you launch from your terminal, no graphical interface.

Memorize these for a moment, they will be useful for the rest of your life.

The rest is at the bottom, in the resources section where you can see how to install things on your VPS.

The Basic Stack

You need an LLM first (duh) and possibly somewhere to store your app.

This is where we involve hosting companies, the same you contact for your nice websites.

I recommend using a VPS (Virtual Private Server) because:

  • you don't burn your laptop
  • safety first, don't expose your personal data
  • much more flexible and you can use Linux

For most people, this is the way.

I was recommending Hetzner before but now Hostinger takes the lead as the best hosting in terms of pricing.

You could also run your apps locally (aka on your computer/laptop) if it's just internal tools!

This is where there is a big distinction between CLI and GUI.

The CLI wins whenever I am the only person who has to use the thing, because an agent can read the output of a command and fix the next one.

A window with buttons is for anything someone else has to open without me behind them.

So the internals stay scripts, I only wrap the screens that other people touch.

Now making apps available to others is a topic for another time...

The Actual Apps

Nowadays I have a different approach and I want to show you.

Rather than creating a lot of unbundled apps without coordination, I rather create processes or routines.

I love using a harness like Hermes Agent to coordinate everything.

Less tech alternatives include Grokbot, Muse and Dots.
​
Hermes Agent is open-source and has a great community though πŸ‘€

My current approach is to create simple web apps (incl. one for reporting) coordinated by my agent(s).

Chatting with your LLM is sooooo underrated and unlocks a new level of work.

As per last time, the agent triggers a set of scripts and gives me an output.

This is different from me creating a dedicated app just for a single task.

What About LLMs?

There are multiple ways, don't stick to Anthropic or OpenAI just because you know them.

My favorite model in particular is DeepSeek because it's cheap and quick (also powerful uh).

Model routing via platforms like Openrouter is always a possibility:

Use expensive models for planning only and delegate execution to cheaper models.

Reminder that platforms like Openrouter and OpenCode store older versions of models that are no longer available.

But... I've faced some issues with them due to many requests.

The Security Measures

You may have heard that most vibecoded apps or solutions get hacked quite easily.

No surprise, they fail to even meet the most basic security measures.

A full setup can be pesky so just remember the very basics of the task:

  • close ports you don't use
  • update your server consistently
  • backup your data consistently
  • never ever paste keys into LLMs (NEVER)

At higher levels, you may want to talk to actual cybersecurity experts but for simple use cases, this is OK.

My worst moment was an update where I forgot one thing: the SSH port was still open to the internet. πŸ’€

Nothing happened, because everything else was locked down...

but the failed attempts in the log were the reminder that an app is only as private as the last port you forgot.

The list I keep is short: SSH with keys only, no password login, no root.

A firewall that drops what I don't use, Tailscale for everything else, which means the panel has no public address at all.

Then updates and backups on a schedule, because those two are the boring ones that save you.

I use Cloudflare R2 Object Storage, practically free + ntfy on my iPhone to get notifications when backups fail.

Data Modeling

Before you do anything, you need to have the right data.

Data modeling is making sure your data is cheap and quick to pull.

Without it, everything else will slowly collapse on itself.

Most of the use cases with web data involve retrieving data from Google sources and maybe scraping.

That means you can't get this step wrong πŸ’€

GA4Dataform is a great option for modeling GA4 data.

GSC data is usually in a nice and tidy format, there isn't much work to do on the url table.

This is foundational today for Analytics and even for building basic stuff that isn't slop (check resources).

Slopware

The opposite of good work is slop software, which is bad!

Most of the things populating our social feeds are fragile and built with the following:

  • one billion MCPs to connect to services
  • GA4 or GSC data obtained straight from the API (no storage or processing before)
  • Only frontier models (e.g. Opus 5.5 for every task)

This stuff isn't scalable with real projects since it's slow and expensive (or just breaks).

In the next issues I will cover some of these topics in depth, especially making apps available to others.

This is more than enough as an intro for you to practice today.

Stay tuned because I have crazy things to show next week :3

πŸ‘₯ Join Our Community

Our Discord community offers a small place where we can talk business and web data.

If you hate all the noise of social media, then this place is for you.

I will start posting more there as we have a forum channel now.

This is the best way to stay updated in real time on Seotistics:

πŸ€– Analytics For Real Work - Course

My peak course about Web Analytics & LLMs is right here:

πŸ”Ž Analytics For SEO Ebook - Course / Ebook

You will:

βœ… Use GSC and GA4 Data to their fullest potential

βœ… Learn Python/SQL for your needs

βœ… Get a complete blueprint for auditing websites

βœ… Learn how to 10x your productivity

βœ… Learn BigQuery to work on large websites

I teach you what's needed to go from 0 to a professional Data Analyst.

Even if you leave SEO, the foundations are the same for other jobs!

Also in ebook:

Think Like A Web Analyst

This course teaches you to:

βœ… frame Analytics problems

βœ… understand which metrics matter

βœ… managing Web Analytics projects successfully

πŸ“š Recommended Reads - Peak Content πŸ—»

Read these peaks:

As usual, my most recent LinkedIn content is here.

❗️ Feedback and Recommendations

If you have ideas/recommendations for the next issues of Seotistics, you can simply reply to this email.

Marco Giordano
​
Data/Web Analyst

Follow me on πŸ”½πŸ”½πŸ”½:

Bernerstrasse SΓΌd 167, Zurich, Switzerland
​Unsubscribe Β· Preferences​

Seotistics - Web Analytics + Business + Strategy

The Seotistics newsletter is written by Marco Giordano, a Data/Web Analyst with the goal of combining business and web data. Tired of the usual boring Analytics content without any business impact? Seotistics teaches you how to use Analytics, web data and even content in your workflow while helping you with Strategy.

Read more from Seotistics - Web Analytics + Business + Strategy

Use Data Or Be Used By Data! The October 26 issue of Seotistics is here for you! You read a lot of stuff online decreting the end of SaaS, GA4 and whatever due to AI. Most of it is wrong and shouldn't affect your work or career. I will show and explain you why. Just came back from Athens from SEO On Stage, will post more details on LinkedIn. Please move this email to your Primary inbox or reply to it. This is to prevent Seotistics goes into spam by accident. Gmail users can read this tutorial...

Use Data Or Be Used By Data! The October 19 issue of Seotistics is here for you! I am just back from Rome and AI didn't sleep, we are full of news and updates. As you know if you are working with automation, you need to know this stuff! As I try to recover from multiple conferences in a row, here is the latest summary of what's going on. Most of these topics will be expanded in the next issues as they are too new πŸ’€ Please move this email to your Primary inbox or reply to it. This is to...

Use Data Or Be Used By Data! The October 12 issue of Seotistics is here for you! Measurement did change in the last year and I am here to remind you some basic facts. AI is for sure one of the main culprits but not the only one. I am also writing a huge article on LLM measurement, stay tuned πŸ‘€ Hectic week, too much to do, including course updates. Please move this email to your Primary inbox or reply to it. This is to prevent Seotistics goes into spam by accident. Gmail users can read this...