PLATE 04
An assistant that turned scattered notes into structured projects, with retrieval over the user's own documents

PLATE 04

ProjectAllie

ROLE
Sole developer
STACK
Next.js · React · PostgreSQL · Prisma · OpenAI · Node
LINK
ARCHIVED
InterfaceNext.js, PWA,AuthContext, SWRAssistantAssistants API,streaming, functioncallsRetrievalChunking pipeline,embeddings, filesearchDataPostgreSQL, PrismaPlatformNode, route groups,JWT in HTTP-onlycookies

BRIEF

An assistant that turned scattered notes, emails and documents into structured projects, broke large pieces of work into smaller ones, and searched the user's own files to answer questions about them. It was for people whose work was too involved for a notes app and not large enough for project software. It shipped, ran, and has since been retired.

DECISION LOG

  1. Destructive actions stay manual

    The assistant could create, organise and restructure freely. It could not delete a task or a note.

    That line was drawn because of what happened in testing: given latitude, the agent would occasionally make a judgment call that lost information. Not often, and not unreasonably — but an assistant that is usually right about what to discard is still an assistant that discards things you needed. The fix was structural rather than a better prompt. Removing the capability removes the failure mode.

  2. Focused agents, pre-emptively

    Narrow, focused agents with tightly scoped instructions and tools, applied from the start rather than in response to a failure.

    Two reasons. Reliability improves when an agent carries less, and a small model with well-optimised instructions and tools is materially faster than a large one — if you can get it to work. That last clause is the whole bet: the optimisation cost is paid up front, against a speed gain you only collect if the smaller model holds.

  3. Built retrieval, then deleted it

    Document search began as a chunking pipeline of my own against a Pinecone vector database. When OpenAI's API grew to offer embeddings and file search directly, the embeddings and the search moved across and the pipeline was removed.

    Deleting working infrastructure because the platform absorbed it is the correct call and an uncomfortable one. The code was fine; it had simply stopped being the best answer to the question.

  4. Built on a managed abstraction, and it was withdrawn

    Orchestration ran on the OpenAI Assistants API rather than on hand-rolled tool loops. The API was subsequently deprecated.

    The counterpart to the decision above, and the reason both belong in the same log. Leaning on a platform is what let retrieval be deleted; leaning on a platform is also what left the orchestration layer standing on something that was withdrawn. Both projects that followed — AgenticWP and BuyBye — orchestrate their own agents. That is not a coincidence and it is not dogma either; it is the price of the lesson being paid once.

DETAIL PLATES

Assistant
Tasks and tags created by function call. The assistant may create and restructure everything on this screen; the delete control stays with the user.
DETAIL A · AssistantTasks and tags created by function call. The assistant may create and restructure everything on this screen; the delete control stays with the user.
Interface
The project dashboard, assembled from server state cached with SWR — the read surface over what the assistant has structured.
DETAIL B · InterfaceThe project dashboard, assembled from server state cached with SWR — the read surface over what the assistant has structured.

CONSTRAINT

It was built alone, and maintained alongside full-time work.

That constraint did not shape the architecture — it ended the product. The system worked; the time to keep it working did not exist. It is on the site as an archived plate rather than quietly deleted because the interesting engineering is unaffected by the shutdown, and because deciding to stop maintaining something is a judgment worth showing. The link is removed, the stamp is honest, and the work stands.

Prince of WhalesPLATE 05