One typed catalog
Each of the 50 services is one typed record: who it is for, what is included and not, plans with fixed prices and timelines, process, FAQ and what to put in an inquiry.
morsalin.online is more than a portfolio. One typed catalog of 50 services feeds every page, the AI-readable files, a public MCP server and the on-site assistant. Behind it is a client portal for proposals, invoices, plans and payments, built so a one-person practice runs without admin overhead.
The hard part is not the pages. It is keeping 50 fixed prices identical everywhere they appear, making them readable by AI assistants, and running the whole engagement, from proposal to payment, without a back office.
A services page, a pricing table, a PDF, an AI summary and a chatbot each quoting the same work will eventually disagree. For a fixed-price practice, a stale price is a broken promise.
Many people ask ChatGPT, Claude or Perplexity who can help before they search. A site that only people can read is invisible to that step.
Proposals, approvals, invoices, payments, monthly plans and reminders all have to happen without a project manager or an accountant, inside a hard limit on hours.
Each of the 50 services is one typed record: who it is for, what is included and not, plans with fixed prices and timelines, process, FAQ and what to put in an inquiry.
Service and group pages, the pricing page, the scope builder, the sitemap, llms.txt, the MCP server and the on-site assistant are all generated from the same records, so they cannot disagree.
Open client slots, the next start date and the founding-price counter live in the database and are edited in the admin. Every page and AI tool reads the same values.
Public pages show fixed prices per outcome. Hour budgets stay in a private playbook that never ships with the site.
Seven read-only tools (find a service, list, details, availability and terms, stack check, end-of-life dates, case studies) over stateless Streamable HTTP: a fresh server per request, nothing to leak between callers, and a rate limit per visitor.
For agents running in the visitor’s own Chrome, the page registers the same read-only tools and describes the inquiry form. The agent can fill the form; only the visitor can send it.
Plain-text summaries of services, prices, guides and tools are generated on request from the catalog, so an AI crawler reads today’s prices, not last month’s.
The on-site assistant is given the catalog as its context and told to quote only from it. Inquiries get a private AI-drafted summary for triage; nothing AI-written goes to a client unreviewed.
Paste a composer.json, package.json, Dockerfile or lockfile. Versions past or near end of life are flagged in the browser; the file is never uploaded.
For lockfiles, an opt-in check sends only package names and exact versions to OSV.dev and shows advisories by severity with the fixing version.
Security-support dates for 59 runtimes, databases, servers and frameworks, synced from endoflife.date by a script and shown with sources.
Every step from an old Laravel version to the current one, with the PHP versions each step needs.
A passive check of an AI-built app for exposed keys, public source maps and a readable .env or .git. It only reads what any browser can see.
Clients approve proposals and change requests online, get invoices with PDFs, and pay by bank transfer, which is reconciled with the invoice for them. Monthly plans bill themselves.
Milestones, updates, files, plan hours and conversations in one place, and a safe way to hand over passwords that never goes through email. It launches with the first client.
Eight suites (sign-in, billing, lifecycle, collaboration, growth, payments, inquiries, email) run in CI against a fresh PostgreSQL, each with a fresh server, next to a smoke test of every sitemap page and an MCP handshake.
The portal and public forms went through a structured security review. Every finding was fixed or deliberately accepted, and each fix has a regression check.
Every public, portal and admin page is checked with axe in light and dark mode. Zero violations, with the contrast tokens fixed at the source rather than per page.
A green build is mirrored for Cloud Build, which builds the image. Going live is a separate, manual step, so nothing reaches production by accident.
Consistency by construction is cheaper than consistency by review.
An agent can find, compare and check, but anything that commits the visitor, like sending an inquiry, stays with a person.
A fresh server per request means no session to hijack and nothing to clean up.
The stack check runs locally; the vulnerability lookup is opt-in and sends names and versions only.
No card processor fees or checkout to maintain, and anything unclear waits for a person rather than a guess.
One codebase and one deploy: the right size for a practice capped at a few clients at a time.
Every access rule is proven where it is enforced, including the “not yours returns 404” cases.
Builds are automatic; putting a build in front of clients is a decision.
Server-rendered pages, structured data, llms.txt, an MCP server and WebMCP.
One catalog feeds every page and every AI answer.
Stack, end-of-life and vulnerability checks that end in a clear next step.
From proposal to payment and monthly plans, without a back office.
It is my own product, so I made every call: the positioning and pricing model, the catalog and page design, the MCP and WebMCP interfaces, the portal’s data model and access rules, the payment matching, the test suites, the security review and the release pipeline. I did the coding with AI pair-programming, and reviewed and tested every change.
The work in this case study maps to these fixed-price services.
This is a new service. I build a Model Context Protocol (MCP) server so AI assistants such as Claude or ChatGPT can use your product through your existing API. It starts read-only, and writes need the user’s confirmation. It is for SaaS teams with a working API. Prices start from $960 ($720 founding), taking about 2–5 weeks.
A new service: a fixed-price accessibility audit of your web app’s key pages and flows against WCAG 2.2 AA, with automated checks, a keyboard and screen-reader pass, and a ranked fix list, followed by fixes quoted from the audit. Audit from $520 ($400 founding), about 1–2 weeks.
Built and ready for launch, pending the hospital's final information. Staff can run the whole site — consultants, schedules, fees and notices — from the admin, without a developer.
Read the case study →SaaS backend · Cloud marketplaceShipped to production. Licenses verify offline, so a vendor outage never stops a paying customer, and support moved from engineering to audited operator actions.
Read the case study →Next