Projects

Things I have been building on the side. Most of them are about learning: a place to practise writing, a tutor that asks instead of answers, and a board for thinking out loud.

  1. WriteJourney

    Writing tools Live

    Visit WriteJourney

    A quiet place to learn to write: one plain-text canvas that saves itself, a tutor you can ask for a review, and a window to look out of when you need a pause. The tutor never writes for you and never shows examples.

    • Built a tutor that reviews a draft against what the writer says they are aiming for, replying only with questions and observations, so there is nothing to accept or insert.
    • Ran every review on the writer's own Anthropic, OpenAI or Gemini key, encrypted at rest with a rotatable secret, with per-session usage, approximate cost and a budget that asks before going over.
    • Designed sessions for free writing, writing from a generated or uploaded picture, or a kata with a story framework such as MICE, alongside an Idea Bag, a punctuation teacher that marks but never fixes, and countdown or pomodoro timers.
    • Deployed on Vercel with pooled Postgres, numbered SQL migrations applied under a lock on the first request, and draft, session and Idea Bag limits counted in the database so every instance shares them.

    Stack

    • Next.js
    • PostgreSQL
    • GraphQL
    • Google OAuth
    • shadcn/ui
    • Tailwind CSS
    • three.js
    • Anime.js
    • Vercel
  2. thinkPad

    AI agents Open source

    View on GitHub

    A harness that turns Claude into a Socratic tutor. You bring a topic, it builds an environment for it and teaches by asking questions, so you write every line that matters and the agent never finishes the work for you.

    • Built the harness as plain files (system prompt, guardrails, memory schema, skills and subagents) so a new topic is one env.toml and the teaching never has to change.
    • Routed skills by phrase: "I want to learn" scaffolds an env, "what should I do today" reads every env's cadence, and "wrap up" bookmarks and journals the session.
    • Closed the loop with retros that queue concrete improvements back into the harness, and quizzes that ask only about what has been learned, never repeating a question.
    • Added a seven-rung ladder for learning how real websites work by reverse engineering them in your own Chrome, plus a dependency-free Python package that lints skill manifests and env specs.

    Stack

    • Claude Code
    • Agent skills
    • Python
    • TOML
  3. thinkboard

    AI tools In progress

    Not public yet

    A board for thinking, not drawing. Every idea you commit gets sparks, suggestions you drag onto the board or wave away, and a board chat that edits the map instead of replacing it.

    • Streamed sparks from the user's chosen provider (Anthropic, OpenAI or Gemini), shaped by the idea's ancestors and siblings, a board goal, eight lenses and the angles already dismissed.
    • Turned chat replies into structured board operations (add, update, reparent, remove, tidy) that apply as a single undo step, with the touched cards flashing.
    • Built a generate-then-decide flow: verdicts, collapsible branches, pairwise ranking of siblings, and a welcome-back diff that picks up where you left off.
    • Added Google sign-in, autosave with version checks, hold-to-dictate ideas, shared boards with votes and comments, and per-board token and cost tracking.

    Stack

    • Next.js
    • React
    • TypeScript
    • PostgreSQL
    • Drizzle ORM
    • Auth.js
    • shadcn/ui
    • Tailwind CSS
    • Anthropic SDK