The assistant

It reads my code before it answers, shows you which lines it read, and cannot send or book anything without your click. This sheet is the whole design, including what it will not do.

Path of a question

  • 1 / sessionThe browser asks for an anonymous session token. Only its hash is stored, so a leaked row cannot be replayed.
  • 2 / contextThe browser keeps the conversation and sends its recent turns with each question. The API trims them to its own limits and stores none of it.
  • 3 / toolsThe model may search and read indexed source, move you around this site, draft a message, write a document, or read calendar availability. Tool results are labelled untrusted data.
  • 4 / answerTokens stream back as they arrive, with the tool calls that ran, their timings, and the source ranges read.
  • 5 / your moveAnything outward-facing waits for you: a message is sent, and a call is booked, only when you press the button.

Tools it can call

ToolWhat it does
search_knowledgeHybrid full-text and vector search over the indexed repositories.
read_sourceA bounded window of one indexed file, at most 200 lines.
list_filesThe indexed file list of one repository.
show_sectionMove you to one of 19 named places on this site.
prepare_contactDraft a message for you to review. It cannot send.
create_artifactWrite a Markdown brief, comparison or diagram you can download.
get_availabilityRead real free slots from Google Calendar.
propose_bookingOffer one slot for you to confirm. It cannot book.

How the code index works

An indexing job clones a pinned commit of each allowed repository, skips vendored, generated, binary, oversized and credential-shaped files, then splits the rest into overlapping sixty-line windows with their detected symbols. Each window is embedded and stored alongside a PostgreSQL full-text index.

A search runs both halves and fuses them by reciprocal rank, so an exact identifier and a described behaviour both find the right file. Every citation names the repository, path, line range and commit, and links to that exact revision on GitHub.

The indexer reads every public repository on the account, skipping forks, archives and anything vendored, generated or binary. It never downloads a file it will not index, and it re-embeds only the windows whose text changed since the last run. Nothing private is touched, and no repository outside that account is ever fetched.

Your data

  • storedThe conversation stays in your browser. The server keeps the hash of an anonymous session token, and for 24 hours a copy of each answer, filed under a hash of the whole conversation so an identical conversation is answered without a new model call. For each answer it also records how it went, never what it said: timings, token counts, cost, which tools ran and whether it came from the cache. No account, no name, no tracking cookie.
  • deletedClear chat erases the conversation from your browser. On the server, a session goes seven days after last use, a cached answer after 24 hours, a contact draft within the hour, and the per-answer timing records after 90 days. Generated documents expire after seven days and their files are deleted with them.
  • sharedMessage text goes to OpenRouter and the model provider it routes to. A message you send goes to Resend. A call you book becomes an event in Jim's Google Calendar. Nothing else leaves.
  • bot checkOpening the assistant or sending the contact form runs Cloudflare Turnstile once, which reads browser signals to tell people from scripts. Its script loads when you reach for the assistant or open the contact form, never on a page view.
  • never loggedMessage bodies, contact text and credentials stay out of the server logs.

What it will not do

It answers from public material onlyPublic portfolio content plus the source of the indexed repositories. Work done at Fuego.io is described from public write-ups; that code is not indexed and it will say so.
It can be wrongAnswers are generated. Citations point at the exact lines read, so check those rather than the prose.
It cannot act aloneNo tool sends a message or books a call. Both need your own click on a preview you can edit first.
It cannot run codeIt reads source, it does not execute anything, and it has no access to private systems or data.
It forgetsThe conversation lives in your browser, not on the server. Clear chat erases it, and there is no server copy to delete.

Built with

Astro and a React island on the front, Hono on Node with an OpenAPI schema on the back, PostgreSQL with pgvector for sessions and retrieval, OpenRouter for the model and embeddings, Cloudflare R2 for generated documents, Resend for mail, and the Google Calendar API for scheduling. The API documents itself; every route, event and error shape is in the generated specification.

The reference is public: api.soyebjim.me/docs, with the raw schema at /openapi.json. Sending a request from that page returns 403. Every /v1 route checks the calling origin against this site, and the documentation is served from a different one, so the refusal is the check working rather than a fault.

DRAWN BYS. P. Jim
SHEET8 of 8
REV2026-09
Sourcepublic repos
Assistant

Send a message

Replies usually within a day. Or write directly to soyeb.jim@gmail.com.