{
  "projects": [
    {
      "slug": "one-tool",
      "name": "ONE TOOL",
      "title": "Governed platform for building AI agents",
      "kind": "case-study",
      "role": "Creator & Lead Developer",
      "period": {
        "start": "2025-11",
        "end": null
      },
      "status": "active",
      "summary": "A private, local-first platform for building agents under human-defined boundaries. Each phase controls exactly what the LLM receives, and every step is gated, logged and auditable.",
      "case_study": {
        "problem": "Most agent-building platforms are cloud-based or cloud-dependent, and almost none are local and system-focused. I wanted AI to never operate without human-defined boundaries.",
        "approach": "A strict assembly line. A governed operation library catalogues domain functions under explicit rules. Those catalogued operations become the structured context for agent construction. Multi-format memory (MD, JSON, TXT) carries context across every phase boundary.",
        "architecture": "Phase-gated pipeline with human approval at each boundary, an operation library, memory layers, and a navigation layer (TourGuide) that tells the AI what to read.",
        "result": "Produces framework-agnostic agent templates (MCP, LangChain, OpenAI, CrewAI). The platform is built and maintained using itself.",
        "demo_note": "Private production system. Available for a live demo; get in touch."
      },
      "highlights": [
        "Human-governed assembly line: AI is never unsupervised at any phase",
        "Phase-gated agent generation with framework-agnostic templates",
        "Multi-format memory architecture used across all phases",
        "Fully local deployment, no external dependencies"
      ],
      "technologies": [
        "Python",
        "FastMCP",
        "MCP",
        "AI Agents",
        "Context Engineering",
        "System Architecture"
      ],
      "links": {},
      "domain": "ai",
      "period_text": "Nov 2025 – present",
      "url_markdown": "https://ai.alicem.dev/projects/one-tool.md",
      "url_human": "https://alicem.dev/projects/one-tool"
    },
    {
      "slug": "local-semantic-memory",
      "name": "Local Semantic Memory Pipeline",
      "title": "Fully offline knowledge base for LLMs, controlled over MCP",
      "kind": "case-study",
      "role": "Designer & Developer",
      "period": {
        "start": "2026-05",
        "end": null
      },
      "status": "production",
      "summary": "A document indexing pipeline that gives LLMs fast, accurate access to curated project knowledge without sending any data to external APIs.",
      "case_study": {
        "problem": "Onboarding LLMs need quick access to project-specific knowledge, and none of it should leave the machine.",
        "approach": "A four-stage pipeline: file discovery with change detection, cleaning and translation, structured parsing, and indexing into ChromaDB with BGE-M3 embeddings. Each document gets a metadata header before embedding so vectors are identity-aware.",
        "architecture": "Two independent FastAPI services (pipeline and logger) controlled by a FastMCP server with 33 tools across six groups: service management, pipeline control, indexer, health, configuration and log/query.",
        "result": "In production since v0.4.0 (September 2026), indexing five collections and queried by several LLM clients at once. The whole system runs through natural-language tool calls, with no manual terminal work.",
        "demo_note": "Private production system. Available for a live demo; get in touch."
      },
      "highlights": [
        "Incremental processing with crash-safe checkpoints: stop and resume at any point",
        "Rollback-safe production cutover with dated snapshot backups",
        "Config-driven: one config file drives every component, updated live over MCP",
        "Fully offline, no cloud dependencies"
      ],
      "technologies": [
        "Python",
        "FastAPI",
        "FastMCP",
        "ChromaDB",
        "BGE-M3",
        "Ollama",
        "Vector Databases",
        "Semantic Search"
      ],
      "links": {},
      "domain": "ai",
      "period_text": "May 2026 – present",
      "url_markdown": "https://ai.alicem.dev/projects/local-semantic-memory.md",
      "url_human": "https://alicem.dev/projects/local-semantic-memory"
    },
    {
      "slug": "tourguide",
      "name": "TourGuide",
      "title": "JSON navigation guides that control what an AI reads",
      "kind": "case-study",
      "role": "Creator & Maintainer",
      "period": {
        "start": "2025-12",
        "end": null
      },
      "status": "active",
      "summary": "Human-authored, JSON-only guides that define exactly what an AI reads, in what order, and what to skip. It reduces hallucination caused by unstructured codebase exploration.",
      "highlights": [
        "Apache 2.0 open source with templates and real-world examples",
        "No code generation and no automation: pure context architecture",
        "Used in production as the codebase navigation layer inside ONE TOOL"
      ],
      "technologies": [
        "Context Engineering",
        "JSON",
        "AI Agent Navigation",
        "Open Source"
      ],
      "links": {
        "github": "https://github.com/kilgor/TourGuide"
      },
      "open_source": true,
      "case_study": {
        "problem": "When you switch between AI assistants, each new one needs your codebase explained again. Unguided exploration of a large codebase is also where hallucinations start: the AI reads the wrong files, in the wrong order, and fills the gaps with guesses.",
        "approach": "A guide is a JSON file that you write once, with AI help. It says what to read, in what order, what to skip, and where the checkpoints are. TourGuide never discovers, generates or decides anything; the human is the cartographer. Setup takes 15 to 30 minutes for a small project and one to two hours for a large one: copy a template, explore the codebase with an AI, customize the guide, then test it on a fresh AI session.",
        "architecture": "A root tourguide.json links to sub-guides for deep dives, forming a map of interconnected JSON files. The repository ships templates, real examples, documentation and a demo you can show to an AI assistant.",
        "result": "Published open source under Apache 2.0. Used in production as the codebase navigation layer inside ONE TOOL, so every new AI session starts from the same complete context."
      },
      "domain": "ai",
      "period_text": "Dec 2025 – present",
      "url_markdown": "https://ai.alicem.dev/projects/tourguide.md",
      "url_human": "https://alicem.dev/projects/tourguide"
    },
    {
      "slug": "chunk-wizard",
      "name": "chunk-wizard",
      "title": "Token-budget chunking library",
      "kind": "case-study",
      "role": "Creator & Solo Developer",
      "period": {
        "start": "2026-06",
        "end": "2026-06"
      },
      "status": "released",
      "summary": "A single-file Python utility that splits text into token-budget-aware chunks before it goes to an LLM. It detects the text's natural structure and picks the splitting strategy that keeps chunks as full as possible without exceeding the budget.",
      "highlights": [
        "Token budget calculated from the model's context window, not arbitrary sizes",
        "Tries four strategies (heading, paragraph, line, sentence) and keeps the one with the best utilization",
        "No dependencies (Python standard library only); MIT licensed"
      ],
      "technologies": [
        "Python",
        "NLP",
        "Local LLMs",
        "Vector Databases"
      ],
      "links": {
        "github": "https://github.com/kilgor/chunk-wizard"
      },
      "open_source": true,
      "case_study": {
        "problem": "LLMs have a fixed context window. Feed them too much and they truncate silently or fail; split every N characters and you cut sentences in half and destroy structure. In my own pipelines, local models with deliberately limited context windows could not process the large documents going into a vector database.",
        "approach": "Measure first: the character budget comes from the model's context window, a share reserved for the reply, and an estimate of characters per token. Then detect the text's natural structure and try four strategies: Markdown headings, paragraphs, lines and sentences. Each produces a set of chunks scored by utilization, and the best-filled strategy wins.",
        "architecture": "One Python file with no dependencies. An in-memory function returns the chunks for a text; file-based functions split a file into numbered chunk files and reassemble them later; a third function only calculates chunk boundaries. Every operation returns the same result structure with success, data, error and metadata.",
        "result": "Released as open source under the MIT license and built for local LLM vector database pipelines. Its limits are documented: a single unit larger than the budget passes through whole, the token estimate is approximate, and only text files are supported."
      },
      "domain": "ai",
      "period_text": "Jun 2026",
      "url_markdown": "https://ai.alicem.dev/projects/chunk-wizard.md",
      "url_human": "https://alicem.dev/projects/chunk-wizard"
    },
    {
      "slug": "shell-stream-mcp",
      "name": "shell-stream MCP",
      "title": "Safe shell execution for AI assistants",
      "kind": "open-source",
      "role": "Solo Developer",
      "period": {
        "start": "2025-06",
        "end": "2025-08"
      },
      "status": "released",
      "summary": "An MCP server that lets AI assistants run and monitor shell commands with automatic security filtering, session management and real-time streamed output on Windows, Linux and macOS.",
      "highlights": [
        "Filtering layer blocks destructive operations and allows safe administration",
        "Audit logging of approved and blocked commands, plus a mode to test commands against the filters without running them",
        "Session management with streamed output for long-running processes"
      ],
      "technologies": [
        "MCP",
        "Python",
        "FastMCP",
        "Security Filtering",
        "Process Management"
      ],
      "links": {
        "github": "https://github.com/Kilgor/shell-stream-mcp"
      },
      "domain": "ai",
      "period_text": "Jun 2025 – Aug 2025",
      "url_markdown": "https://ai.alicem.dev/projects/shell-stream-mcp.md"
    },
    {
      "slug": "txt-mcp",
      "name": "txt-mcp",
      "title": "Text file read, write and edit over MCP",
      "kind": "open-source",
      "role": "Solo Developer",
      "period": {
        "start": "2025-08",
        "end": "2025-09"
      },
      "status": "released",
      "summary": "A minimal MCP server that gives AI assistants three tools for UTF-8 text files: read, write, and search-and-replace edit. It works with any text-based file type, such as .txt, .json and .md.",
      "highlights": [
        "Read, write and edit any text-based file over MCP",
        "Built on FastMCP, with an MCP prompt that asks for confirmation before acting",
        "Minimal footprint: three tools, one small file",
        "A second variant adds a confirmation workflow for writes (confirmed flag) and SSE, HTTP and stdio transports"
      ],
      "technologies": [
        "MCP",
        "Python",
        "FastMCP",
        "File I/O",
        "Text Processing"
      ],
      "links": {
        "github": "https://github.com/Kilgor/txt-mcp-server",
        "github_http_variant": "https://github.com/Kilgor/txt-mcp-server-http"
      },
      "domain": "ai",
      "period_text": "Aug 2025 – Sep 2025",
      "url_markdown": "https://ai.alicem.dev/projects/txt-mcp.md"
    },
    {
      "slug": "resume-json",
      "name": "resume-json",
      "title": "AI-managed resume with a single source of truth",
      "kind": "case-study",
      "role": "Developer & Architect",
      "period": {
        "start": "2025-09",
        "end": null
      },
      "status": "active",
      "summary": "A private MCP server that lets an AI assistant read, back up and safely update my structured JSON resume, and keep a log of job applications. It is the tool I use most actively, and the content source for this site.",
      "case_study": {
        "problem": "A resume is a different document for every job, but the facts behind it should live in one place. I also wanted an AI assistant to help tailor it without ever being able to quietly overwrite or lose the original.",
        "approach": "One structured JSON schema (now at version 2.9) holds career history, skills, certifications, projects and hobbies. The server is a pure data provider: it makes no AI calls of its own. The AI client does all the analysis and tailoring, and the server only reads, writes and backs up. Anything that overwrites the resume needs explicit user confirmation, and a backup is made automatically first.",
        "architecture": "Three-layer clean architecture: a domain layer (models and operations), an application layer (the resume service) and an infrastructure layer (the FastMCP server and configuration). Seven tools. Read: read_resume, list_resume_backups, read_usage_log. Write: save_customized_resume and restore_resume_backup (both confirmation-gated), create_resume_backup, and add_usage_log_entry. Safeguards: file path validation against directory traversal, schema validation, and no API keys anywhere.",
        "result": "In active use since late 2025. About a dozen automatic snapshots between December 2025 and September 2026 trace how the resume evolved, and a job-application log records which version went to which role. It now also feeds this site, through a privacy filter that decides which fields may be published.",
        "demo_note": "Private tool. Available for a live demo; get in touch."
      },
      "highlights": [
        "Pure data provider: no external AI calls and no API keys; the AI client does the analysis",
        "Anything that overwrites the resume is confirmation-gated, with an automatic backup first",
        "Seven tools covering the resume, its backups and a job-application log",
        "Built with the ONE TOOL process: operation library extraction, phased and tested",
        "Source of truth for this site, behind a privacy filter"
      ],
      "technologies": [
        "MCP",
        "Python",
        "FastMCP",
        "JSON",
        "Clean Architecture",
        "LLM Integration"
      ],
      "links": {},
      "domain": "ai",
      "period_text": "Sep 2025 – present",
      "url_markdown": "https://ai.alicem.dev/projects/resume-json.md",
      "url_human": "https://alicem.dev/projects/resume-json"
    },
    {
      "slug": "logistics-bi-pipeline",
      "name": "Logistics Data Pipeline & BI System",
      "title": "Analytics infrastructure rebuilt for a logistics company",
      "kind": "project",
      "domain": "data",
      "role": "Data Engineer (Lead)",
      "period": {
        "start": "2025-01",
        "end": null
      },
      "status": "ongoing",
      "summary": "End-to-end data engineering project that rebuilt a logistics company's analytics infrastructure: ETL pipelines, data cleaning and modeling, and interactive Power BI dashboards for real-time KPI monitoring.",
      "highlights": [
        "Replaced ad-hoc spreadsheet workflows with structured ETL pipelines",
        "Full ownership: data audit, cleaning, modeling, dashboard design and client delivery"
      ],
      "technologies": [
        "Power BI",
        "Power Query",
        "ETL",
        "Data Modeling",
        "SQL",
        "Data Cleaning"
      ],
      "links": {},
      "period_text": "Jan 2025 – present",
      "url_markdown": "https://ai.alicem.dev/projects/logistics-bi-pipeline.md"
    },
    {
      "slug": "steam-2024-analytics",
      "name": "Steam Gaming Industry Analytics 2024",
      "title": "Revenue and performance analysis of Steam games released in 2024",
      "kind": "project",
      "domain": "data",
      "role": "Data Analyst",
      "period": {
        "start": "2024-09",
        "end": "2024-09"
      },
      "status": "completed",
      "summary": "Collected and plotted the top 1,500 Steam games released in 2024 by revenue (data gathered through September 2024).",
      "highlights": [],
      "technologies": [
        "Python",
        "Pandas",
        "Matplotlib",
        "EDA",
        "Data Collection"
      ],
      "links": {
        "github": "https://github.com/kilgor/steam-2024-1500-games-by-revenue"
      },
      "period_text": "Sep 2024",
      "url_markdown": "https://ai.alicem.dev/projects/steam-2024-analytics.md"
    }
  ]
}
