{
  "$comment": "Career data fixture for kylebegeman.com. This is the bundled fallback / seed. It mirrors the site's internal model (see docs/career-data.md). When the Lumen career API (or a proxy) is available, set KB_CONFIG.careerDataUrl and, for a raw Lumen CareerSnapshot, KB_CONFIG.lumenSnapshot=true so career.js adapts it. Source: resume archive + Kyle's updates; to be superseded by the Lumen career vertical.",
  "meta": {
    "source": "fixture",
    "generatedAt": "2026-09-10"
  },
  "profile": {
    "name": "Kyle Begeman",
    "title": "Principal Architect",
    "headline": "Principal Architect & Senior iOS Engineer",
    "location": "Hamilton, OH",
    "summary": "Over 16 years of experience building software across the full stack, with deep roots in iOS and macOS engineering. Expert in Swift, SwiftUI, The Composable Architecture (TCA), UIKit, RxSwift, and modern Swift concurrency with full Swift 6 strict concurrency adoption, and just as productive on the server and the web: TypeScript on Node (Hono, Fastify, and Effect), Swift with Vapor, and Go behind APIs, services, and developer tooling, on PostgreSQL, PostGIS, SQLite, and Redis, with React and Next.js on the front end and Docker and Caddy carrying it all to production. Proven track record of building production applications from the ground up, leading complete architectural rewrites, designing and shipping APIs and developer tools, and delivering across environments from founding startup member to Series A startups to publicly traded companies with engineering organizations of 700+ engineers.",
    "shortBio": "Ohio-based engineer working remotely, with 16+ years building production software and deep roots in iOS and Swift. I rebuilt AspectAvy’s iOS and web apps and built its backend and production infrastructure, and have shipped at Dropbox. My work spans native apps, full-stack web applications, backend APIs, AI integrations, and developer tools, with a focus on clear architecture and rigorous testing.",
    "contact": {
      "location": "Hamilton, OH",
      "linkedin": "https://linkedin.com/in/kylebegeman",
      "github": "https://github.com/kylebegeman",
      "x": "https://x.com/kylebegeman"
    },
    "availability": {
      "status": "open",
      "headline": "Open to senior and principal roles, and to contract or consulting work",
      "summary": "Open to senior and principal roles across mobile, backend systems, and AI, and to consulting or contract work of any scope.",
      "note": "Remote from Ohio, on US time zones."
    },
    "highlights": [
      "Invited attendee of Apple WWDC 2015 and Apple TV Tech Talks 2015",
      "Dropbox iOS app featured by Apple at WWDC for accessibility work",
      "Featured Udemy instructor with a five-star rating across all courses",
      "Author of two iOS books published by Packt Publishing"
    ]
  },
  "skills": [
    {
      "category": "Apple",
      "items": [
        { "name": "Swift", "level": "expert" },
        { "name": "SwiftUI", "level": "expert" },
        { "name": "The Composable Architecture (TCA)", "level": "expert" },
        { "name": "UIKit", "level": "expert" },
        { "name": "Swift Concurrency", "level": "expert" },
        { "name": "RxSwift", "level": "expert" },
        { "name": "Combine", "level": "proficient" },
        { "name": "Objective-C", "level": "proficient" },
        { "name": "Core Data", "level": "proficient" },
        { "name": "SwiftData", "level": "familiar" },
        { "name": "Instruments", "level": "proficient" },
        { "name": "App Store release automation", "level": "expert" }
      ]
    },
    {
      "category": "Backend & Services",
      "items": [
        { "name": "TypeScript on Node", "level": "expert" },
        { "name": "Hono", "level": "proficient" },
        { "name": "Fastify", "level": "proficient" },
        { "name": "Vapor (Swift)", "level": "expert" },
        { "name": "Go", "level": "proficient" },
        { "name": "API design (REST and typed contracts)", "level": "expert" },
        { "name": "PostgreSQL", "level": "proficient" },
        { "name": "PostGIS", "level": "proficient" },
        { "name": "SQLite", "level": "proficient" },
        { "name": "Redis", "level": "proficient" },
        { "name": "WebSockets", "level": "proficient" },
        { "name": "Background workers", "level": "proficient" }
      ]
    },
    {
      "category": "Web & Frontend",
      "items": [
        { "name": "TypeScript", "level": "expert" },
        { "name": "React", "level": "proficient" },
        { "name": "Next.js", "level": "proficient" },
        { "name": "Vite", "level": "proficient" },
        { "name": "HTML / CSS", "level": "proficient" }
      ]
    },
    {
      "category": "AI & Developer Tools",
      "items": [
        { "name": "Effect (TypeScript)", "level": "proficient" },
        { "name": "MCP servers", "level": "proficient" },
        { "name": "LLM integrations", "level": "proficient" },
        { "name": "On-device models (Foundation Models)", "level": "proficient" },
        { "name": "CLI tooling", "level": "expert" }
      ]
    },
    {
      "category": "Platform & Delivery",
      "items": [
        { "name": "Docker", "level": "proficient" },
        { "name": "Caddy", "level": "proficient" },
        { "name": "systemd", "level": "proficient" },
        { "name": "GitHub Actions", "level": "proficient" },
        { "name": "Git", "level": "expert" },
        { "name": "Xcode", "level": "expert" }
      ]
    },
    {
      "category": "Languages",
      "items": [
        { "name": "Swift", "level": "expert" },
        { "name": "TypeScript", "level": "expert" },
        { "name": "Go", "level": "proficient" },
        { "name": "Python", "level": "proficient" },
        { "name": "Objective-C", "level": "proficient" },
        { "name": "Ruby (Rails)", "level": "familiar" }
      ]
    },
    {
      "category": "Design",
      "items": [
        { "name": "Figma", "level": "familiar" },
        { "name": "Photoshop", "level": "proficient" },
        { "name": "Illustrator", "level": "proficient" }
      ]
    }
  ],
  "experience": [
    {
      "company": "Embrace Pet Insurance",
      "highlight": true,
      "domain": "embracepetinsurance.com",
      "title": "Principal Architect",
      "type": "full-time",
      "start": "2024-11",
      "end": "present",
      "location": "Remote",
      "summary": "Rebuilt the entire iOS application from the ground up as sole developer in SwiftUI and The Composable Architecture.",
      "bullets": [
        { "text": "Rebuilt the entire iOS application from the ground up as sole developer using SwiftUI and The Composable Architecture, owning architecture, modularization, the full CI/CD pipeline, crash reporting, and App Store release.", "tech": ["Swift", "SwiftUI", "TCA", "CI/CD", "XCTest"], "impact": ["architecture", "delivery", "founding"] },
        { "text": "Established a fully modularized codebase with isolated feature modules and comprehensive, targeted test coverage across the application.", "tech": ["Swift", "SPM", "XCTest"], "impact": ["architecture", "delivery"] },
        { "text": "Delivered policy management, claims submission, document uploads, and real-time account information for pet owners nationwide.", "tech": ["Swift", "SwiftUI", "REST API"], "impact": ["delivery", "ux"] }
      ]
    },
    {
      "company": "Independent Practice",
      "highlight": true,
      "title": "Principal Engineer & Consultant",
      "type": "consulting",
      "start": "2022-09",
      "end": "present",
      "location": "Remote",
      "summary": "Hands-on engineering and technical advisory for select clients: native iOS apps, backend platforms, and developer tooling, alongside my own products and open-source work.",
      "bullets": [
        { "text": "Partner with founders and product teams across industries to design and ship native iOS apps in Swift and SwiftUI, from architecture and the latest Apple APIs through App Store release.", "tech": ["Swift", "SwiftUI", "iOS"], "impact": ["delivery", "architecture"] },
        { "text": "Built and maintain a Swift/Vapor workflow-automation platform with PostgreSQL persistence, multi-tenant RBAC, built-in AI connectors, and a code-generation CLI, backed by 309 tests across 57 suites.", "tech": ["Vapor", "PostgreSQL", "Redis", "TypeScript"], "impact": ["platform", "architecture"] },
        { "text": "Design and build my own products and open-source tools, including Lumen, a local-first AI platform built with TypeScript and Effect, and the developer tools featured on this site.", "tech": ["TypeScript", "Effect", "Node"], "impact": ["platform", "founding"] },
        { "text": "Publish educational content and mentor Apple-platform developers at every experience level.", "tech": ["Swift", "iOS"], "impact": ["mentorship", "education"] }
      ]
    },
    {
      "company": "Koala",
      "title": "Senior iOS Engineer",
      "type": "full-time",
      "start": "2021-09",
      "end": "2022-09",
      "location": "Seattle, WA",
      "summary": "Built configurable order-flow apps for food-service operators with real-time tracking and a remote CMS.",
      "bullets": [
        { "text": "Developed custom order-flow applications for food-service providers using ReSwift, enabling real-time UI and behavior adjustments within a single app distributed across operator contexts.", "tech": ["Swift", "ReSwift", "iOS"], "impact": ["architecture", "delivery"] },
        { "text": "Led architectural enhancements and major features including real-time order tracking and dynamic map updates for delivery workflows.", "tech": ["Swift", "ReSwift", "MapKit"], "impact": ["architecture", "performance", "delivery"] },
        { "text": "Integrated an advanced CMS and backend so operators could configure app behavior remotely without app updates.", "tech": ["Swift", "REST API"], "impact": ["platform", "delivery"] }
      ]
    },
    {
      "company": "Kespry",
      "title": "Senior iOS Engineer",
      "type": "full-time",
      "start": "2020-11",
      "end": "2021-08",
      "location": "Seattle, WA",
      "summary": "Sole iOS engineer building drone flight-planning and survey software for iPad with hardware SDK and ML integration.",
      "bullets": [
        { "text": "Built specialized drone flight-planning software for iPad serving agriculture, mining, and insurance, using ReSwift with hardware SDK integration and bespoke mapping.", "tech": ["Swift", "ReSwift", "MapKit", "iPad"], "impact": ["architecture", "delivery", "data"] },
        { "text": "Integrated machine learning APIs for advanced data visualization and predictive insights from drone-acquired survey data.", "tech": ["Swift", "CoreML"], "impact": ["data", "delivery"] }
      ]
    },
    {
      "company": "Tek Systems (via Lululemon)",
      "highlight": true,
      "brand": "Lululemon",
      "domain": "lululemon.com",
      "title": "Senior iOS Engineer",
      "type": "contract",
      "start": "2020-05",
      "end": "2020-11",
      "location": "Seattle, WA",
      "summary": "Embedded with Lululemon implementing features and optimizing a high-traffic consumer iOS app used by millions.",
      "bullets": [
        { "text": "Embedded with Lululemon as a contract iOS engineer, implementing new features, optimizing the existing architecture, and maintaining a high-traffic consumer iOS application.", "tech": ["Swift", "iOS", "XCTest"], "impact": ["delivery", "architecture"] }
      ]
    },
    {
      "company": "Leafly",
      "highlight": true,
      "domain": "leafly.com",
      "title": "Senior iOS Engineer",
      "type": "full-time",
      "start": "2017-10",
      "end": "2020-03",
      "location": "Seattle, WA",
      "summary": "Led a full Objective-C to Swift rewrite using ReSwift, MVVM, DI, and TDD; partnered with IDEO on the UI.",
      "bullets": [
        { "text": "Managed a team rewriting the Leafly iOS app from Objective-C to Swift, adopting ReSwift (MVVM), extensive dependency injection, and a test-driven development methodology.", "tech": ["Swift", "Objective-C", "ReSwift", "MVVM", "TDD"], "impact": ["leadership", "architecture", "delivery"] },
        { "text": "Collaborated with the IDEO design studio to revamp the UI and interaction model, translating design-system specifications into production code.", "tech": ["Swift", "UIKit"], "impact": ["ux", "delivery", "leadership"] }
      ]
    },
    {
      "company": "The Action Network",
      "highlight": true,
      "domain": "actionnetwork.com",
      "title": "Lead iOS Engineer",
      "type": "full-time",
      "start": "2016-02",
      "end": "2017-10",
      "location": "San Francisco, CA",
      "summary": "Sole engineer building the entire sports-data app from scratch in pure Swift with a real-time data pipeline.",
      "bullets": [
        { "text": "Sole iOS engineer; built the entire sports-data application from scratch in pure Swift, owning core architecture, networking, data mapping, deep linking, and all UI.", "tech": ["Swift", "iOS", "REST API"], "impact": ["founding", "architecture", "delivery"] },
        { "text": "Designed the core data-processing layer for real-time sports statistics aggregation, ensuring low-latency updates across the UI.", "tech": ["Swift", "REST API"], "impact": ["architecture", "performance", "data"] }
      ]
    },
    {
      "company": "Dropbox",
      "highlight": true,
      "domain": "dropbox.com",
      "title": "iOS Engineer",
      "type": "full-time",
      "start": "2015-01",
      "end": "2016-02",
      "location": "San Francisco, CA",
      "summary": "Joined via the CloudOn acquisition; shipped production features; accessibility work featured by Apple at WWDC.",
      "bullets": [
        { "text": "Joined the Dropbox iOS team via the CloudOn acquisition; shipped production features including file copy, link sharing, custom in-app notifications, and a keyboard extension, with unit and automation tests.", "tech": ["Objective-C", "Swift", "iOS", "XCTest"], "impact": ["delivery", "architecture"] },
        { "text": "Designed a custom forced-migration system for Dropbox for Business users, working directly with the Business team for a seamless enterprise transition.", "tech": ["Objective-C", "iOS"], "impact": ["delivery", "architecture"] },
        { "text": "Accessibility work on the Dropbox iOS app was featured by Apple at WWDC.", "tech": ["Objective-C", "iOS", "Accessibility"], "impact": ["ux", "delivery"] }
      ]
    },
    {
      "company": "CloudOn",
      "title": "iOS Growth Engineer",
      "type": "full-time",
      "start": "2014-05",
      "end": "2015-01",
      "location": "Mountain View, CA",
      "summary": "Core iOS team on an iPad document editor; built the StoreKit paywall; acquired by Dropbox.",
      "bullets": [
        { "text": "Delivered major features to a C++-engine-backed iPad document-editing app: document table views, file management, text formatting, and a complete UI overhaul.", "tech": ["Objective-C", "iOS", "iPad", "C++"], "impact": ["delivery", "ux", "architecture"] },
        { "text": "Built the entire in-app paywall and monetization system from scratch, optimizing for growth and retention. CloudOn was acquired by Dropbox.", "tech": ["Objective-C", "iOS", "StoreKit"], "impact": ["delivery", "growth", "ux"] }
      ]
    },
    {
      "company": "Indee Box",
      "title": "Owner & Developer",
      "type": "founder",
      "start": "2012-12",
      "end": "2018-12",
      "location": "San Francisco, CA",
      "summary": "Ran a freelance iOS firm and built an education presence: two Packt books, Udemy courses, and a YouTube channel.",
      "bullets": [
        { "text": "Founded and operated a consulting and freelance iOS development firm, shipping notable apps as sole engineer including a collaboration with Breaking Bad actor Aaron Paul.", "tech": ["Objective-C", "Swift", "iOS"], "impact": ["founding", "delivery"] },
        { "text": "Authored two iOS books (Packt), built a YouTube channel with 1,000,000+ views, and was a featured Udemy instructor with a perfect five-star rating and 1,000+ students.", "tech": ["Swift", "Objective-C", "iOS"], "impact": ["education", "mentorship", "growth"] }
      ]
    },
    {
      "company": "Type Two Designs",
      "title": "Co-founder & iOS Engineer",
      "type": "founder",
      "start": "2010-09",
      "end": "2012-12",
      "location": "Tampa, FL",
      "summary": "Co-founded a digital agency delivering iOS apps for small businesses from prototype to App Store.",
      "bullets": [
        { "text": "Co-founded a digital development firm and managed a small team of three to deliver client products from prototype through App Store distribution.", "tech": ["Objective-C", "iOS"], "impact": ["founding", "leadership", "delivery"] }
      ]
    },
    {
      "company": "Apple",
      "title": "Genius Technician",
      "type": "full-time",
      "start": "2010-06",
      "end": "2012-09",
      "location": "Tampa, FL",
      "summary": "Expert technical support and device repair; delivered customer computing workshops.",
      "bullets": [
        { "text": "Provided expert technical support and device repair using deep knowledge of Apple hardware and software, and delivered beginner-to-advanced computing workshops for customers.", "tech": ["macOS", "iOS"], "impact": ["delivery", "education", "mentorship"] }
      ]
    }
  ],
  "education": [
    {
      "institution": "University of South Florida",
      "degree": "BS",
      "field": "Computer Science",
      "year": 2013,
      "notes": "Focus on databases, object-oriented programming, and additional theory."
    },
    {
      "institution": "Hillsborough Community College",
      "degree": "AS",
      "field": "Computer Programming",
      "year": 2011,
      "notes": "Focus on C++ fundamentals and general programming theory."
    }
  ],
  "projects": [
    {
      "slug": "embrace",
      "url": "/embrace.html",
      "cover": { "from": "#60219b", "to": "#823cc2", "icon": "/assets/projects/embrace/icon-display.e21e1a707fc8.webp", "width": 256, "height": 256 },
      "title": "Embrace",
      "category": "Apple",
      "tags": ["iOS", "SwiftUI", "TCA"],
      "thumb": "",
      "summary": "Built the original Embrace Pet Insurance iOS app, then rewrote and redesigned the full experience for iOS 26 with SwiftUI, TCA, and Liquid Glass.",
      "description": "Built Embrace’s original iOS app from scratch as the sole developer, then completed the full iOS 26 rewrite and redesign. Both generations use SwiftUI and The Composable Architecture; the rewrite adds Liquid Glass, native navigation and controls, and modular features.",
      "tech": ["Swift", "SwiftUI", "TCA", "Liquid Glass"],
      "status": "Original app shipped · iOS 26 rewrite",
      "card": { "mark": "E.", "detail": "iOS · Pet insurance", "quick": true },
      "links": [{ "label": "App Store", "href": "https://apps.apple.com/us/app/embrace-pet-insurance/id1446529885" }]
    },
    {
      "slug": "yo-b",
      "url": "/yo-b.html",
      "cover": { "from": "#a63e15", "to": "#dc692c", "icon": "/assets/projects/yo-b/icon-display.858e1c46fc99.webp", "width": 256, "height": 256 },
      "title": "Yo B****",
      "category": "Apple",
      "tags": ["iOS", "Consumer", "Viral"],
      "thumb": "",
      "summary": "Breaking Bad's Aaron Paul turned his catchphrase into an app, and I developed the iOS app. It launched to worldwide press.",
      "description": "A novelty messaging app built around Aaron Paul's Breaking Bad catchphrase: tap a friend and send them a greeting in his actual voice. I developed the iOS app at my studio Indee Box. It launched in December 2014 and was covered by The Verge, Time, CNN, the Washington Post, Mashable, and dozens more outlets in a dozen countries.",
      "tech": ["Objective-C", "UIKit", "In-App Purchase", "Push"],
      "status": "Shipped",
      "card": { "mark": "Y.", "detail": "iOS · Aaron Paul’s voice app", "keywords": "yo bitch aaron paul", "quick": true },
      "links": []
    },
    {
      "slug": "aspectavy",
      "url": "/aspectavy.html",
      "cover": { "from": "#302b36", "to": "#49414f", "icon": "/assets/projects/aspectavy/logo.ce893522130d.png", "width": 603, "height": 206 },
      "title": "AspectAvy",
      "category": "Full Stack",
      "tags": ["iOS", "SwiftUI", "TCA", "Web", "Backend"],
      "thumb": "",
      "summary": "A ground-up SwiftUI app rebuild, a new backend and production infrastructure, and a completely rebuilt web app. All three in production.",
      "description": "As Principal Architect, I rebuilt AspectAvy's native iOS app in SwiftUI and TCA, built its TypeScript backend and deployment infrastructure, and rebuilt the Next.js web app from scratch. Contract engagement began in 2024; the full product rebuild began in 2026. All three platforms are in production.",
      "tech": ["SwiftUI", "TCA", "Next.js", "React", "TypeScript", "Fastify", "PostgreSQL", "PostGIS", "Docker"],
      "status": "In production",
      "card": { "mark": "A.", "detail": "iOS, web & backend", "quick": true },
      "links": [{ "label": "Visit AspectAvy", "href": "https://www.aspectavy.com/" }]
    },
    {
      "slug": "ledger",
      "url": "/projects/ledger/",
      "cover": {
        "from": "#65269f",
        "to": "#8344bb"
      },
      "title": "Ledger",
      "category": "Open Source",
      "tags": [
        "Open Source",
        "TypeScript",
        "Developer Tools",
        "AI"
      ],
      "thumb": "",
      "summary": "Change memory that lives in your repository: Markdown receipts, bounded context for agents, and a reader for the history behind the code.",
      "description": "A TypeScript CLI, MCP server, local engine, and static reader that connect changes to their rationale, constraints, and verification.",
      "tech": [
        "TypeScript",
        "Node",
        "MCP",
        "MIT"
      ],
      "status": "Open source",
      "card": {
        "mark": "L.",
        "type": "Developer tooling",
        "stack": "TypeScript · CLI · MCP",
        "summary": "Change memory beside the code: receipts, context for coding agents, and a browsable record of why."
      },
      "links": [
        {
          "label": "View on GitHub",
          "href": "https://github.com/kylebegeman/ledger"
        },
        {
          "label": "Live reader",
          "href": "https://kylebegeman.github.io/ledger/"
        }
      ]
    },
    {
      "slug": "dossier",
      "url": "/projects/dossier/",
      "cover": {
        "from": "#37313e",
        "to": "#514957"
      },
      "title": "Dossier",
      "category": "Open Source",
      "tags": [
        "Open Source",
        "Go",
        "Developer Tools",
        "AI"
      ],
      "thumb": "",
      "summary": "One JSON model in, one self-contained HTML page out: an agent writes the model, a person reads the page and decides by number, and the agent reads the decisions back.",
      "description": "Open-source Go binary with a CLI, an MCP server, and an agent skill that turns agent-written JSON into one self-contained, searchable HTML page, with decisions a reader makes by number and the agent applies.",
      "tech": [
        "Go",
        "MCP",
        "SQLite",
        "MIT"
      ],
      "status": "Open source",
      "card": {
        "mark": "D.",
        "type": "Developer tooling",
        "stack": "Go · CLI · MCP",
        "tone": "neutral",
        "summary": "One JSON model in, one self-contained HTML page out, with decisions a reader makes by number and an agent reads back."
      },
      "links": [
        {
          "label": "View on GitHub",
          "href": "https://github.com/kylebegeman/dossier"
        },
        {
          "label": "Live examples",
          "href": "https://kylebegeman.github.io/dossier/explore.html"
        }
      ]
    },
    {
      "slug": "swift-lm",
      "url": "/projects/swift-lm/",
      "cover": { "from": "#36303e", "to": "#50465a" },
      "title": "SwiftLM",
      "category": "Open Source",
      "tags": ["Open Source", "Swift", "AI"],
      "thumb": "",
      "summary": "One Swift API for every language model an app can reach: Apple's on-device model, Private Cloud Compute, custom Core AI or MLX models, OpenAI, and Anthropic, with prompt contracts, token budgets, explicit fallbacks, and redacted receipts.",
      "description": "Open-source Swift package, the layer a language model feature needs around the model: local first, with cloud providers only when an app lists them, and no network access or telemetry in the core.",
      "tech": ["Swift", "Foundation Models", "SwiftPM"],
      "status": "Open source",
      "card": { "mark": "S.", "type": "AI framework", "stack": "Swift · Foundation Models · OS 27", "tone": "neutral", "summary": "One Swift API for every language model an app can reach, with prompt contracts, token budgets, explicit fallbacks, and redacted receipts." },
      "links": [{ "label": "View on GitHub", "href": "https://github.com/kylebegeman/swift-lm" }]
    },
    {
      "slug": "helios",
      "url": "/projects/helios/",
      "cover": { "from": "#62249a", "to": "#8540bb" },
      "title": "Helios",
      "category": "Open Source",
      "tags": ["Open Source", "Go", "DevOps"],
      "thumb": "",
      "summary": "One small program that runs your machines: builds, certificates, secrets, backups, health checks, and alerts from a single static Go binary and one manifest per app.",
      "description": "Open-source Go rewrite of Ophelia that runs my production machine: an app's helios.yaml becomes DNS records, certificates, secrets, isolated containers, backups proven by restore drills, and alerts.",
      "tech": ["Go", "Docker", "Caddy", "restic"],
      "status": "Open source",
      "card": { "mark": "H.", "type": "Infrastructure", "stack": "Go · Docker · Caddy", "summary": "One small program that runs your machines: deploys, certificates, secrets, backups, health checks, and alerts from a single Go binary." },
      "links": [{ "label": "View on GitHub", "href": "https://github.com/kylebegeman/helios" }]
    }
  ],
  "openSource": [
    {
      "slug": "ledger",
      "name": "Ledger",
      "tagline": "Change memory that lives in your repository.",
      "repo": "https://github.com/kylebegeman/ledger",
      "branch": "master",
      "primaryLang": "TypeScript",
      "languages": { "TypeScript": 1763213, "JavaScript": 64489, "CSS": 58602 },
      "license": "MIT",
      "version": "0.9.5",
      "status": "Pre-1.0",
      "stats": { "commits": 231, "createdAt": "2026-06-29", "updatedAt": "2026-09-28" },
      "overview": "A diff shows what changed. Ledger keeps why it changed, what must stay true, and how it was checked. Markdown receipts live beside the code, so the next person or coding agent starts with the evidence. I built the CLI, agent integrations, and reader around that same record, with no account or hosted service required.",
      "highlights": [
        {
          "t": "Context before the edit",
          "d": "Retrieve history for a file, symbol, or topic within a token budget. Packets bring the relevant decisions, invariants, and verification into the next session."
        },
        {
          "t": "Receipts while the work is fresh",
          "d": "Hooks for Claude Code, Codex, and Cursor track edits and draft a receipt. The author finishes the reasoning; the ready check catches unfinished content."
        },
        {
          "t": "Evidence in the pull request",
          "d": "CI checks record structure, file coverage, and docs impact. Receipts travel through review with the change they explain."
        },
        {
          "t": "Your history, your files",
          "d": "Plain Markdown under .ledger/ is the source of truth. Keep durable guides in docs/ and rebuild the reader, indexes, and reports whenever you need them."
        }
      ],
      "modulesLabel": "One record, several ways in",
      "modules": [
        {
          "name": "CLI and agent hooks",
          "purpose": "Adopt an existing repository, capture changes, retrieve context, and check the record in CI."
        },
        {
          "name": "MCP and TypeScript",
          "purpose": "The same operations through MCP, a typed client, and a local engine API with live events."
        },
        {
          "name": "The reader",
          "purpose": "Overview, Records, and Timeline, with keyboard navigation, linked evidence, and light and dark themes."
        },
        {
          "name": "A public changelog",
          "purpose": "Publish released versions and their Public Notes with permalinks and an Atom feed."
        }
      ],
      "code": {
        "label": "Quick start",
        "lang": "bash",
        "lines": [
          "npm install --save-dev @kylebegeman/ledger",
          "npx ledger adopt",
          "npx ledger hooks install --host claude-code --command \"npx ledger\" --import-agents",
          "npx ledger skills install",
          "npx ledger agents --write",
          "",
          "npx ledger serve --watch"
        ]
      },
      "docs": [
        {
          "label": "Live reader",
          "d": "Explore Ledger reading its own project history.",
          "href": "https://kylebegeman.github.io/ledger/"
        },
        {
          "label": "Getting started",
          "d": "Node 22+, adoption, hooks, and your first receipt.",
          "href": "https://github.com/kylebegeman/ledger#quick-start"
        },
        {
          "label": "Commands and API",
          "d": "CLI operations, MCP, and the typed engine client.",
          "href": "https://github.com/kylebegeman/ledger/blob/master/docs/API.md"
        },
        {
          "label": "Publishing",
          "d": "Host the reader, public changelog, and Atom feed.",
          "href": "https://github.com/kylebegeman/ledger/blob/master/docs/PUBLISHING.md"
        }
      ],
      "logo": "/assets/projects/ledger/logo.19645284d014.svg",
      "showcase": {
        "label": "Read. Change. Remember.",
        "liveUrl": "https://kylebegeman.github.io/ledger/",
        "liveLabel": "Explore the live reader",
        "tourUrl": "https://github.com/kylebegeman/ledger/blob/master/assets/readme/reader-tour.mp4",
        "tourLabel": "Watch the reader tour",
        "hero": {
          "light": "/assets/projects/ledger/overview-light.eb540b16bbf1.webp",
          "dark": "/assets/projects/ledger/overview-dark.2874066883c6.webp",
          "width": 1600,
          "height": 1000,
          "alt": "Ledger overview with record counts, recent changes, activity, releases, and open work.",
          "caption": "Ledger reading its own repository. Every chart and count leads back to the records.",
          "href": "https://kylebegeman.github.io/ledger/"
        },
        "steps": [
          {
            "title": "Read the context",
            "text": "Ask for the files and decisions that matter before changing the code."
          },
          {
            "title": "Leave a receipt",
            "text": "Capture the why, the constraints, and the checks alongside the diff."
          },
          {
            "title": "Carry it forward",
            "text": "The next person or agent can pick up where the last change left off."
          }
        ],
        "features": [
          {
            "label": "The reader",
            "title": "From the whole project to a single decision.",
            "text": "Catch up in Overview, narrow the Records list, or follow the Timeline month by month. Open a receipt beside the results and trace its files, symbols, linked decisions, and backlinks. Search, pill filters, and the command palette keep that history within reach.",
            "light": "/assets/projects/ledger/records.778d95c63f34.webp",
            "width": 1600,
            "height": 1000,
            "alt": "Ledger Records with a receipt open beside filtered project history, including its rationale, files, and verification.",
            "caption": "The list stays in view while you inspect the reasoning behind a change.",
            "href": "https://kylebegeman.github.io/ledger/?view=records",
            "linkLabel": "Browse the records"
          },
          {
            "label": "Publishing",
            "title": "Share what shipped. Keep the working record.",
            "text": "The full reader is for the repository’s history. A separate public profile publishes released versions and their Public Notes, with release links and an Atom feed. Generate the directory and host it on any static server.",
            "light": "/assets/projects/ledger/changelog.30b0fa866267.webp",
            "width": 1600,
            "height": 1000,
            "alt": "Ledger public changelog with a version index and release notes.",
            "caption": "The public changelog leaves internal paths, symbols, and invariants out.",
            "href": "https://kylebegeman.github.io/ledger/changelog/",
            "linkLabel": "Read the public changelog"
          }
        ]
      }
    },
    {
      "slug": "dossier",
      "name": "Dossier",
      "tagline": "One JSON model in, one self-contained HTML page out. Read, decide, and send it back.",
      "repo": "https://github.com/kylebegeman/dossier",
      "branch": "master",
      "primaryLang": "Go",
      "languages": { "Go": 603168, "JavaScript": 54954, "CSS": 37391, "TypeScript": 23931, "templ": 23823 },
      "license": "MIT",
      "version": "0.7.3",
      "status": "Pre-1.0",
      "stats": { "commits": 179, "createdAt": "2026-06-26", "updatedAt": "2026-09-28" },
      "logo": "/assets/projects/dossier/logo.8415cade2370.svg",
      "overview": "Agents can produce a lot of text. Dossier gives that work a shape people can read and act on: a clear masthead, numbered sections, detail behind a fold, and decisions by number. I built it as one Go binary that turns a JSON model into a self-contained HTML page, then brings the reader’s decisions back into the model.",
      "highlights": [
        {
          "t": "Six kinds of work",
          "d": "Brainstorm, plan, review, release, incident, and brief have their own vocabulary and decisions. Define a custom kind in one JSON file."
        },
        {
          "t": "One file you can send",
          "d": "Built pages make no external requests. Share an attachment, a CI artifact, or a static page; search, dark mode, print, and the embedded model come with it."
        },
        {
          "t": "Decisions an agent can use",
          "d": "Numbered choices, verdicts, and notes become one reply line, with the same reply explained in plain words. Apply it back to the model with the CLI."
        },
        {
          "t": "More than prose",
          "d": "Use tables, highlighted code, charts, timelines, figures, and DOT or Mermaid diagrams rendered as SVG at build time. Export Markdown for a pull request or wiki."
        }
      ],
      "modulesLabel": "Made for both sides of the handoff",
      "modules": [
        {
          "name": "CLI, MCP, and skill",
          "purpose": "One command catalog keeps the binary, MCP server, and generated agent skill in agreement."
        },
        {
          "name": "Local studio",
          "purpose": "Edit in place, reorder items, validate JSON, preview accents, and save decisions beside the model in SQLite."
        },
        {
          "name": "Standalone documents",
          "purpose": "Searchable, responsive pages with keyboard verdicts, printable decisions, and no runtime service."
        },
        {
          "name": "React integration",
          "purpose": "Render on the server and show a sandboxed frame that resizes and reports the reader’s decisions."
        }
      ],
      "code": {
        "label": "Install and build",
        "lang": "bash",
        "lines": [
          "brew install kylebegeman/tap/dossier",
          "",
          "dossier init review --title \"Tide-aware cancellations\"",
          "dossier build tide-aware-cancellations.dossier.json",
          "dossier decisions apply tide-aware-cancellations.dossier.json --reply \"rework, fix 1; later 2.\""
        ]
      },
      "docs": [
        {
          "label": "Live examples",
          "d": "Try all six document kinds at desktop, tablet, and phone sizes.",
          "href": "https://kylebegeman.github.io/dossier/explore.html"
        },
        {
          "label": "Getting started",
          "d": "Install, build a page, and hand the workflow to an agent.",
          "href": "https://github.com/kylebegeman/dossier#install"
        },
        {
          "label": "Model schema",
          "d": "The JSON contract every document validates against.",
          "href": "https://github.com/kylebegeman/dossier/blob/master/core/internal/schema/dossier.model.schema.json"
        },
        {
          "label": "React package",
          "d": "Server rendering and decisions in an embedded frame.",
          "href": "https://github.com/kylebegeman/dossier/tree/master/packages/react"
        }
      ],
      "showcase": {
        "label": "A short loop, with a human decision.",
        "liveUrl": "https://kylebegeman.github.io/dossier/explore.html",
        "liveLabel": "Explore the live examples",
        "hero": {
          "light": "/assets/projects/dossier/hero-light.327f6b9fab7d.webp",
          "dark": "/assets/projects/dossier/hero-dark.2b04cd3c4458.webp",
          "width": 1600,
          "height": 1094,
          "alt": "Dossier brainstorm with a clear masthead, numbered sections, contents rail, and a decisions panel.",
          "caption": "A real generated page, from the Tidewright example collection.",
          "href": "https://kylebegeman.github.io/dossier/booking-service.html"
        },
        "steps": [
          {
            "title": "Write the model",
            "text": "An agent fills a typed JSON model using the kind’s sections and facets."
          },
          {
            "title": "Read and decide",
            "text": "A person reads the page, decides by number, and copies one reply."
          },
          {
            "title": "Apply the reply",
            "text": "The agent writes those decisions back into the model and continues."
          }
        ],
        "features": [
          {
            "label": "Decisions",
            "title": "Make the next step unambiguous.",
            "text": "Pick an idea, ask for a finding to be fixed, or waive a release gate. The decision rail follows along, marks what is settled, and points to the next open item. Every choice contributes to one reply the agent can apply.",
            "light": "/assets/projects/dossier/kind-review-light.01360fc8b4cd.webp",
            "dark": "/assets/projects/dossier/kind-review-dark.90a89f0aadb9.webp",
            "width": 1600,
            "height": 706,
            "alt": "Dossier review findings with Fix, Later, and Skip controls and a rail tracking the decisions.",
            "caption": "A review uses fix, later, or skip. A release uses waive or rerun. Each kind speaks its own language.",
            "href": "https://kylebegeman.github.io/dossier/tide-aware-cancellations.html",
            "linkLabel": "Try the review example"
          },
          {
            "label": "The local studio",
            "title": "Work on the page, right where you read it.",
            "text": "Edit text in place, shape and reorder items, or open the validating JSON editor. Drafts stay separate until saved. Choices and notes stay in step across tabs, and a pasted reply can be written back into the model. The editing tools stay out of the built document.",
            "light": "/assets/projects/dossier/studio-light.f3fddad39da9.webp",
            "dark": "/assets/projects/dossier/studio-dark.2db4fac6723c.webp",
            "width": 1600,
            "height": 1094,
            "alt": "Dossier studio editing a review facet in place, with draft controls and a decision panel.",
            "caption": "Run dossier serve to edit locally. Share the built HTML when it is ready.",
            "href": "https://github.com/kylebegeman/dossier#the-studio",
            "linkLabel": "Read about the studio"
          }
        ]
      }
    },
    {
      "slug": "swift-lm",
      "name": "SwiftLM",
      "tagline": "One Swift API for every language model your app can reach, with prompt contracts, token budgets, explicit fallbacks, and redacted receipts.",
      "repo": "https://github.com/kylebegeman/swift-lm",
      "branch": "master",
      "primaryLang": "Swift",
      "languages": { "Swift": 616391 },
      "license": "Apache-2.0",
      "version": "2.0.0",
      "status": "Stable",
      "stats": { "commits": 33, "createdAt": "2026-05-26", "updatedAt": "2026-09-24" },
      "logo": null,
      "overview": "SwiftLM is the layer a language model feature needs around the model: a prompt you can version, a context that fits, a next step when the model can't answer, and a record of what happened. One Swift API reaches Apple's on-device model, Private Cloud Compute, custom Core AI or MLX models, OpenAI, and Anthropic. The on-device model is the default, cloud providers run only when an app lists them, and the core has no network access and no telemetry. Version 2.0 renamed the package from SwiftLLM, since it handles models of every size, and adopted the OS 27 Foundation Models framework.",
      "highlights": [
        { "t": "One API, every model", "d": "Apple's on-device model, Private Cloud Compute, any OS 27 LanguageModel such as Core AI or MLX, OpenAI, and Anthropic behind one client that streams." },
        { "t": "Local first, cloud by choice", "d": "The on-device model is the default. Private Cloud Compute and cloud providers run only when listed, and every client reports where content goes." },
        { "t": "Fallbacks with reasons", "d": "Routers skip models that can't honor a request and move on after quota, context, and availability errors. Refusals and bad output stop the run." },
        { "t": "Prompts and budgets", "d": "Versioned prompt contracts, token budgets with reports, boundary-aware chunking, and context packing that fits the model's window." },
        { "t": "Checked output", "d": "Schema descriptors, validators, and repair policies for structured generation, plus source-aware local retrieval with citations." },
        { "t": "Receipts and evaluation", "d": "Every routed run leaves a receipt with no prompt or response text in it, and evaluation cases replay a feature when a prompt or a model changes." }
      ],
      "modulesLabel": "Products",
      "modules": [
        { "name": "SwiftLM", "purpose": "The provider-neutral client, router, prompts, context, retrieval, validation, workflows, and receipts." },
        { "name": "SwiftLMFoundationModels", "purpose": "Apple's on-device model, Private Cloud Compute, custom LanguageModel values, and multi-turn sessions." },
        { "name": "SwiftLMOpenAI", "purpose": "The OpenAI Responses API, opt-in." },
        { "name": "SwiftLMAnthropic", "purpose": "The Anthropic Messages API, opt-in." },
        { "name": "SwiftLMEvaluation", "purpose": "Prompt evaluation, structured output assertions, fallback matrices, and local debug bundles." }
      ],
      "code": {
        "label": "Add the package",
        "lang": "swift",
        "lines": [
          "// Package.swift",
          ".package(url: \"https://github.com/kylebegeman/swift-lm.git\", from: \"2.0.0\"),",
          "",
          "// products: SwiftLM, SwiftLMFoundationModels, SwiftLMOpenAI, SwiftLMAnthropic, SwiftLMEvaluation"
        ]
      },
      "docs": [
        { "label": "Overview", "d": "What the package is, and what it deliberately is not.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/00-overview.md" },
        { "label": "Architecture", "d": "How the core, adapters, and pipelines fit together.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/01-architecture.md" },
        { "label": "Foundation Models", "d": "On-device, Private Cloud Compute, and custom models.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/02-foundation-models-reference.md" },
        { "label": "Reliability patterns", "d": "Fallbacks, budgets, and prompt contracts in practice.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/03-reliability-patterns.md" },
        { "label": "Provider adapters", "d": "OpenAI and Anthropic behind the same client.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/13-provider-adapters.md" },
        { "label": "Local RAG", "d": "Source-aware, on-device retrieval and citations.", "href": "https://github.com/kylebegeman/swift-lm/blob/master/docs/06-local-rag.md" }
      ]
    },
    {
      "slug": "helios",
      "name": "Helios",
      "tagline": "One small program that runs your machines: builds, certificates, secrets, backups, health checks, and alerts from a single static binary.",
      "repo": "https://github.com/kylebegeman/helios",
      "branch": "next",
      "primaryLang": "Go",
      "languages": { "Go": 2291133, "Shell": 115380, "Python": 100568 },
      "license": "Apache-2.0",
      "version": "0.7.13",
      "status": "Pre-1.0",
      "stats": { "commits": 328, "createdAt": "2026-04-13", "updatedAt": "2026-10-17" },
      "overview": "Helios installs and operates a whole machine from one static Go binary, with no agent, runtime, or hosted control plane underneath. Each app describes itself in a helios.yaml, and everything follows from that file: DNS records, certificates, secrets, data services, health checks, backups, and alerts. Containers are isolated by default, backups are proven by scheduled restore drills, and a git push deploys with every step streamed back. It is the Go rewrite of Ophelia, and it runs my own production machine.",
      "highlights": [
        { "t": "One binary", "d": "A static Go binary installs and operates the machine. There is no agent to babysit, no runtime to keep current, and no control plane to pay for." },
        { "t": "The manifest is the interface", "d": "helios.yaml declares workloads, routes, secrets, data, backups, and checks, and helios init writes a validated starting file for each kind of app." },
        { "t": "Isolated by default", "d": "Read-only root, no Linux capabilities, no privilege escalation, a non-root user, and a private network per app, with helios exposure to show what each container got." },
        { "t": "Deploys without a pipeline", "d": "git push deploys and streams every step back. A failed deploy refuses the push, and the previous revision stays ready for rollback." },
        { "t": "Backups that restore", "d": "Consistent, encrypted restic snapshots per app, restored beside the app, started, and verified by scheduled drills." },
        { "t": "Plans you approve", "d": "Every machine operation can show its plan first and then apply only that exact plan, named by its digest, so a person or an agent approves what runs." }
      ],
      "modulesLabel": "What it runs",
      "modules": [
        { "name": "Web services", "purpose": "Built from source or pulled as an image, started beside the old revision, checked, then switched at the Caddy edge." },
        { "name": "Static sites", "purpose": "A directory served behind the same edge, with DNS records and certificates handled by the deploy." },
        { "name": "Workers, cron, and releases", "purpose": "Background workers, scheduled jobs in UTC, and release tasks that run once per deploy before anything starts." },
        { "name": "Data services", "purpose": "PostgreSQL, a private object store, and named volumes, backed up together and restored in drills." }
      ],
      "code": {
        "label": "Quick start",
        "lang": "bash",
        "lines": [
          "helios host setup                  # prepare a fresh Ubuntu or Debian machine",
          "helios integration set cloudflare  # DNS records for your hosts",
          "helios integration set storage     # an S3 store, for backups",
          "",
          "helios init my-app --host app.example.com",
          "helios deploy .                    # build, check, switch the edge",
          "helios status                      # health, traffic, errors, backups"
        ]
      },
      "docs": [
        { "label": "Quick start", "d": "Prepare a machine, write a manifest, and deploy.", "href": "https://github.com/kylebegeman/helios/blob/next/README.md#quick-start" },
        { "label": "The manifest", "d": "helios.yaml in full, from one workload to many.", "href": "https://github.com/kylebegeman/helios/blob/next/README.md#an-apps-manifest" },
        { "label": "Isolation", "d": "What every container gets by default, and the ways out.", "href": "https://github.com/kylebegeman/helios/blob/next/README.md#how-apps-are-kept-apart" },
        { "label": "Deploys", "d": "git push, launches, previews, and moves between machines.", "href": "https://github.com/kylebegeman/helios/blob/next/README.md#deploying-without-a-pipeline" },
        { "label": "Backups", "d": "Consistent captures, restic, and scheduled restore drills.", "href": "https://github.com/kylebegeman/helios/blob/next/README.md#backups-that-restore" },
        { "label": "The lane", "d": "How features are proven on a server wiped and rebuilt for each one.", "href": "https://github.com/kylebegeman/helios/blob/next/lane/README.md" }
      ]
    }
  ],
  "highlights": [
    {
      "slug": "embrace-solo-build",
      "title": "Embrace Pet Insurance: Built the iOS app solo from the ground up",
      "tags": ["architecture", "solo", "tca", "swiftui", "delivery"],
      "body": "Designed and built the entire Embrace Pet Insurance iOS application from File New to App Store release as the sole developer, 100% in SwiftUI and The Composable Architecture, with a fully modular feature architecture, comprehensive test coverage, and the complete CI/CD and release pipeline."
    },
    {
      "slug": "independent-practice",
      "title": "Independent practice: Client products, platforms, and mentorship",
      "tags": ["consulting", "platform", "delivery", "mentorship"],
      "body": "Since 2022, partnered with founders and product teams to ship native iOS apps in Swift and SwiftUI, built a Swift/Vapor workflow-automation platform with PostgreSQL, multi-tenant RBAC, and AI connectors (309 tests across 57 suites), and mentored Apple-platform developers at every level."
    },
    {
      "slug": "lumen-platform",
      "title": "Lumen: Local-first AI LifeOps platform",
      "tags": ["platform", "architecture", "ai", "typescript"],
      "body": "Designing and building Lumen, a local-first AI cockpit that orchestrates coding agents and layers personal AI workspaces on top: knowledge, mail, ops, and a full career vertical, built with TypeScript and Effect across desktop, web, and server."
    },
    {
      "slug": "education-author",
      "title": "Author, instructor & educator",
      "tags": ["education", "mentorship", "writing"],
      "body": "Authored two iOS development books with Packt Publishing, taught five-star-rated Udemy courses to 1,000+ students, and built an educational YouTube channel with 1,000,000+ video views, helping developers worldwide grow their Swift and iOS skills."
    },
    {
      "slug": "leafly-app-rewrite",
      "title": "Leafly: Full app rewrite (Objective-C to Swift)",
      "tags": ["architecture", "leadership", "delivery", "tdd", "swift"],
      "body": "Led a team rewrite of the Leafly iOS app to Swift using ReSwift, MVVM, dependency injection, and TDD, then partnered with IDEO on the UI, shipping without disrupting millions of users."
    },
    {
      "slug": "dropbox-wwdc-accessibility",
      "title": "Dropbox: WWDC accessibility recognition",
      "tags": ["ux", "accessibility", "leadership", "delivery"],
      "body": "Audited and overhauled VoiceOver and accessibility across the file browser, sharing, and notifications; the work was recognized by Apple and featured at WWDC."
    }
  ],
  "testimonials": [
    {
      "name": "Jeff",
      "context": "Founder, full-stack build",
      "quote": "Kyle built our entire business infrastructure from the ground up in record time, and the quality far exceeded our expectations. An outstanding full-stack engineer who executes at an exceptionally high level. I'd trust him to lead the technical direction of any product without hesitation."
    },
    {
      "name": "Chris",
      "context": "Client, two products shipped",
      "quote": "I've shipped two full products with Kyle start to finish. Strong work ethic, real talent, and genuinely independent. He's pulled off everything I've thrown at him UI and UX wise, gets what I'm going for as a designer, and ships it on the front end with flair. I always want Kyle on the product team, and so far I'm two for two."
    }
  ],
  "links": {
    "groups": [
      {
        "id": "profiles",
        "me": true,
        "title": "Profiles",
        "links": [
          { "id": "github", "label": "GitHub", "href": "https://github.com/kylebegeman", "icon": "github", "note": "Open source and experiments", "short": "gh" },
          { "id": "linkedin", "label": "LinkedIn", "href": "https://linkedin.com/in/kylebegeman", "icon": "linkedin", "note": "Career history and recommendations", "short": "in" },
          { "id": "x", "label": "X", "href": "https://x.com/kylebegeman", "icon": "x", "note": "Notes on shipping software", "short": "x" }
        ]
      },
      {
        "id": "contact",
        "title": "Contact",
        "links": [
          { "id": "message", "label": "Send a message", "href": "/links#fd-contact", "icon": "mail", "note": "Goes straight to my inbox" },
          { "id": "vcard", "label": "Save contact", "href": "/kyle-begeman.vcf", "icon": "contact", "note": "Name, title, site, and profiles. No phone or email." }
        ]
      }
    ],
    "audiences": {
      "recruiter": { "title": "Start here", "pin": ["linkedin", "message"] },
      "ios": { "title": "Start here", "pin": ["github", "message"] }
    }
  }
}
