The Ask box answers questions about my background using Markdown files I've written. It doesn't search the web.
A small TypeScript service, built with Hono and Node, runs on a VPS behind a Cloudflare Tunnel. It sends the question and my background files to the model, then streams the answer back.
All the files currently fit in the model's context window, so each question gets the full set. I considered searching for relevant excerpts first (RAG), and might still try it as an experiment, but sending everything is simpler for now.
The files are split into core/ and
detail/, so I can add retrieval for the detail
files if the collection gets too large or expensive to send.
The prompt tells the model to answer from those files, say when something isn't covered, and ignore requests to override those rules. It can still make mistakes, and the answers depend on how well I've written the source material.
To limit abuse and keep costs manageable:
The server checks each Turnstile token's hostname and action as well as its validity.
I can change the model or provider in a config file without restarting the service. Requests already in progress finish with the model they started on.
Clients can only request configured aliases, which keeps them from selecting arbitrary models at my expense.
An
MCP
server at ask.anthonyrizk.me/mcp exposes
ask_about_anthony, a tool that uses the same files
and prompt as the web box.
You can add it to Claude or another MCP client to ask about my background from there. Setup instructions.
Each request is independent, just like in the web box. Your agent keeps the conversation context and can ask follow-up questions.
The MCP endpoint is public and doesn't use Turnstile. It has stricter rate limits, a question-length limit, a generation deadline, and a daily spending cap below the website's. That lets it stop accepting agent requests while leaving budget for visitors using the Ask box.
I use thirteen test questions to check response time, answer length, and expected facts across models. Five check that the model declines unsupported or unrelated questions, including requests to invent an employer or ignore its instructions.
Those checks catch specific errors. I also read answers side by side to judge their accuracy, tone, and usefulness.