Autognosis MCP Server
A remote MCP server that exposes my professional profile as callable tools.
An AI assistant asked about my background has to scrape a page and infer the rest. There is no structured, authenticated way for it to simply ask.
Six MCP tools and an about:// resource served over Streamable HTTP, running as a Cloudflare Durable Object so every client gets a stateful session without hand-wiring transport. Access runs through OAuth 2.1 with dynamic client registration and PKCE, so a client self-registers and authenticates with no manual setup on either side.
TypeScriptMCP SDKCloudflare WorkersDurable ObjectsWorkers KVOAuth 2.1Zod
Form-Flow
A schema-driven form builder with type-safe field configuration.
Business forms get rewritten from scratch every time the requirements shift, and the validation, rendering and submission logic end up tangled together.
Separated validation, rendering, submission and UI primitives into a modular foundation, and modelled onSubmit/onSettled with TypeScript generics so wiring a custom workflow is checked at compile time rather than discovered at runtime.
TypeScriptReactReact Hook FormZod
Candidate Ranking Engine
An explainable Go ranker that scores a 100,000-candidate pool without a model.
Ranking candidates with an embedding model is quick to build and hard to defend — nobody can say why a profile landed where it did, and keyword stuffing quietly wins over demonstrated work.
Eight weighted components — career fit, retrieval and ML evidence, seniority, company fit, engagement, location, education and penalties — scored over normalized text groups, with career-description evidence weighted above the raw skills list. Penalties cover the down-rank cases, including profiles claiming more years in a skill than they have in total. Every rank carries generated reasoning grounded only in facts present in the profile. Built as a submission for an AI-engineering hiring challenge.
- Ranks a 100,000-candidate pool in ~22 seconds, CPU-only, with no network calls
- Go standard library only — no third-party dependencies
GoDockerGitHub Actions
Tailwind v4 Component Package
A monorepo spike on shipping a Tailwind v4 component library to outside consumers.
Tailwind v4 moved theming into CSS, which breaks the usual way a component package ships styles: import Tailwind inside the package and the consumer gets it twice, leave it out and the components arrive unstyled.
The package keeps Tailwind out of its own stylesheet and exposes only source directives and theme tokens, so the consuming app runs Tailwind once across both its code and the package sources. The stylesheet is copied into the build output and imported alongside Tailwind, which makes the same package work inside the monorepo and in an external project.
TypeScriptTailwind CSS v4TurborepoViteNext.js
Datastar Signal Generator
A Go utility that removes the manual wiring from Datastar signals.
Server-driven UI flows in Datastar need signals named and managed by hand, which drifts inconsistent across templated interfaces.
Built a lightweight Go generator that produces consistent naming and management abstractions for signals, so templated reactive interfaces stay maintainable as they grow.
GoDatastar
Go + Templ Server Sandbox
A learning sandbox for building server-first web apps in Go, without a SPA.
I wanted to work through sessions, auth, migrations and reactive UI in a server-rendered stack rather than reaching for React by reflex.
Users, sessions, password reset and gallery CRUD built from Templ components and Datastar signals, with Goose migrations embedded through Go's embed package and run on startup, CSRF protection on form actions, and Docker Compose plus Air for the local loop. It is a record of how the pieces fit together rather than a production starter.
GoTemplDatastarPostgreSQLGooseDocker ComposeDaisyUI