Case studies/Products I built for myself
Built and operated solo

MarkosWeb

2007 - now

My own crawl-and-data infrastructure: a domain registry with agentic-readiness scoring and a radar tracking 20,000+ accelerator companies, with a weekly digest that publishes itself.

Overview

MarkosWeb is my own crawl-and-data property, built and operated solo. It began in 2007 as a domain-statistics site and is being rebuilt as the AI Agentic Readiness Directory: for any domain it measures how well the site can be read, trusted and transacted with by AI agents, then publishes the result as a human report, a machine-readable JSON record and an embeddable score badge.

The legacy site was a PHP and MySQL application that rendered domain pages from the database into a static HTML cache served by nginx behind Cloudflare. Its data set had stopped updating years earlier, so instead of migrating a live database I moved a curated snapshot of the most requested pages to Cloudflare Pages and kept the full archive as an offline backup.

The rebuilt directory runs on Cloudflare with Astro and TypeScript. Reports fill themselves: a domain nobody has checked yet is audited live on first request and joins the public directory. A second product line, Startup Ideas, tracks more than 20,000 companies from accelerator portfolios, classifies each into a fixed taxonomy, follows what happens to them and publishes a weekly digest.

What was built

Stack

Frontend

Astro
Page templates of the rebuilt directory, built as static output and deployed to Cloudflare.

Backend

TypeScript
Main language of the rebuilt directory codebase, alongside Astro templates and SQL.
Cloudflare Workers
Dynamic layer on Cloudflare's edge behind live domain lookups and API responses.
PHP + MySQL (legacy)
Original application that rendered domain pages from a large MySQL database into a static cache.

Data

SQL
Schema and queries behind the directory and startup data sets in the rebuilt project.
Python
Migration tooling that selected, rewrote and cleaned legacy pages for static hosting.

AI

MCP (streamable HTTP)
Lets AI assistants such as Claude query readiness data and the startup radar directly.

Infrastructure & DevOps

Cloudflare Pages
Hosting for the static snapshot of the legacy site and for the rebuilt directory.
nginx (legacy)
Served the pre-rendered HTML cache directly, without touching PHP, before the Cloudflare move.

Integrations & Payments

OpenAPI
Published specification for the per-domain JSON API used by developers and agents.

Engineering highlights

Chose a static snapshot over a database migration: log analysis showed most requests came from bots and the legacy data had been frozen for years, so only the most requested pages moved, sized to fit Cloudflare Pages' free-tier file limit.

Scoring follows a Lighthouse-style method: deterministic checks, a headline that is a fraction of passed checks rather than an invented 0 to 100, and an explicit not-assessed state instead of guesses.

Linking is tied to verification: unverified profiles mention a domain as plain text with no outbound link, verified profiles carry exactly one link to the owner's homepage, and links are never reciprocal.