{
  "hero": {
    "h1": "Hello, world.",
    "p1": "I'm Ryan - Catholic, husband, and product engineer building India's unlimited internet dream.",
    "p2": "From shipping product systems in the day job to incessant aura-farming by building a vim-first shell stack for mail, calendar, Drive backup, publishing, and reply drafting, I love what I do.",
    "p3": "I spend my spare time preparing for the AGI-apocolypse by re-learining high school math and physics with a focus on intuition (instead of rigour), and documenting it all at notes.ryangerardwilson.com"
  },
  "resume": {
    "title": "Snapshot",
    "subtitle": "",
    "meta": [
      {
        "label": "> focus",
        "body": "I productionalize AI/ML systems and build terminal-native tools for communication, scheduling, backup, and publishing."
      },
      {
        "label": "> experience",
        "body": "10+ years of polyglot experience across dev, data science, and intellectual property."
      },
      {
        "label": "> current_role",
        "body": "Entrepreneur-in-Residence @ Wiom, building unlimited internet for India."
      }
    ],
    "pane": {
      "name": "Ryan Gerard Wilson",
      "summary": "Builder. I turn browser sludge into shell-native tools.",
      "ctaLabel": "resume (PDF)",
      "ctaHref": "resume.pdf",
      "notesLabel": "notes",
      "notesHref": "https://notes.ryangerardwilson.com/",
      "note": "Updated March 2026"
    },
    "avatarUrl": "https://unavatar.io/x/ryan_improvises?refresh=1"
  },
  "resumePdf": {
    "basics": {
      "name": "Ryan Gerard Wilson",
      "headline": "Product Engineer",
      "location": "Gurugram, Haryana, India",
      "avatarUrl": "https://unavatar.io/x/ryan_improvises?refresh=1"
    },
    "profile": "AI-native product engineer, designer, and data scientist with 10+ years spanning product builds, machine learning, and intellectual property law. I build from first principles, design for actual use, and use agentic tooling to move with precision. Shipped systems that raised supply efficiency by 20%, collapsed legacy complexity, and turned rough operational constraints into working products fast.",
    "contact": [
      {
        "label": "Phone",
        "value": "+91-9958467951",
        "href": "tel:+919958467951"
      },
      {
        "label": "Email",
        "value": "ryan@wilsonfamilyoffice.in",
        "href": "mailto:ryan@wilsonfamilyoffice.in"
      },
      {
        "label": "Website",
        "value": "ryangerardwilson.com",
        "href": "https://ryangerardwilson.com"
      },
      {
        "label": "GitHub",
        "value": "github.com/ryangerardwilson",
        "href": "https://github.com/ryangerardwilson"
      },
      {
        "label": "Location",
        "value": "Gurugram, Haryana, India"
      }
    ],
    "education": [
      {
        "credential": "B.A. LL.B. (Hons.)",
        "institution": "Dr. Ram Manohar Lohia National Law University, Lucknow",
        "year": "2015"
      },
      {
        "credential": "Goethe-Zertifikat B1",
        "institution": "Goethe-Institut e.V.",
        "year": "2007"
      }
    ],
    "skills": [
      {
        "label": "AI/ML",
        "items": [
          "Machine Learning",
          "Deep Learning",
          "NLP",
          "Generative AI",
          "LLM Applications",
          "AI Agents",
          "Prompt Engineering",
          "Transformers",
          "OpenAI API",
          "Agentic Workflows",
          "Model Evaluation",
          "XGBoost",
          "Scikit-learn",
          "TensorFlow",
          "PyTorch",
          "Model Deployment",
          "Feature Engineering"
        ]
      },
      {
        "label": "Python",
        "items": [
          "FastAPI",
          "Flask",
          "Django",
          "Pandas",
          "NumPy",
          "REST APIs",
          "SQLAlchemy",
          "Asyncio",
          "Backend Development",
          "Automation",
          "Data Science",
          "Pytest",
          "Unit Testing",
          "Celery",
          "Web Scraping",
          "OOP",
          "Scripting"
        ]
      },
      {
        "label": "Unix",
        "items": [
          "Linux",
          "Shell Scripting",
          "Bash",
          "CLI",
          "TUI",
          "Git",
          "SSH",
          "Cron",
          "Sed",
          "Awk",
          "Grep",
          "Vim",
          "System Administration"
        ]
      },
      {
        "label": "Cloud",
        "items": [
          "AWS",
          "S3",
          "Docker",
          "Kubernetes",
          "CI/CD",
          "Terraform",
          "Serverless",
          "AWS Lambda",
          "Google Cloud",
          "Azure",
          "Microservices",
          "Infrastructure as Code",
          "Scalability"
        ]
      },
      {
        "label": "Frontend",
        "items": [
          "Next.js",
          "Native iOS (Swift)",
          "Native Android (Kotlin)",
          "Flutter",
          "React",
          "JavaScript",
          "TypeScript",
          "HTML",
          "CSS",
          "Tailwind CSS",
          "Bootstrap",
          "Responsive Design",
          "Accessibility"
        ]
      },
      {
        "label": "CLI/TUI Tooling",
        "items": [
          "Python curses",
          "Rich",
          "Textual",
          "Keyboard Event Handling",
          "Interactive Console",
          "Shell Scripting"
        ]
      },
      {
        "label": "Data Engineering",
        "items": [
          "Data Pipelines",
          "ETL",
          "ELT",
          "SQL",
          "PostgreSQL",
          "MySQL",
          "SQLite",
          "Snowflake",
          "Data Modeling",
          "Data Warehousing",
          "Analytics Engineering",
          "Workflow Automation",
          "Batch Processing",
          "Scalable Data Systems"
        ]
      },
      {
        "label": "System Design / Delivery",
        "items": [
          "System Design",
          "Scalable Systems",
          "Architecture Design",
          "API Design",
          "Performance Optimization",
          "Distributed Systems",
          "Project Management",
          "Technical Leadership",
          "Agile Methodologies",
          "Risk Management",
          "Delivery Management"
        ]
      }
    ],
    "experience": [
      {
        "role": "Entrepreneur-in-Residence",
        "company": "Wiom",
        "location": "",
        "dateRange": "Oct 2022 - Present",
        "bullets": [
          "Genie (2025): Increased supply efficiency by 20% (15% from core rewrite + 5% from ML integration). Reverse-engineered and redeployed an undocumented legacy algorithm with zero downtime after the original creator's departure.",
          "CRM Forge (2024): Developed a streamlined platform (~7k LOC) that provisions custom CRM workflows via JSON configs in 2–3 minutes, consolidating and replacing five legacy systems (~100k LOC total). Enabled cross-functional teams to align and deploy tailored solutions in hours.",
          "Happy (2023): Decreased call-center dependency by ~5x while enhancing customer outcomes and agent satisfaction. Designed a telephony bot with lightweight CRM for escalations, plus a Hindi/Hinglish AI chatbot for instant, brand-consistent scripting.",
          "Used tech, IP, and corporate-law depth beyond the formal role to shape IP strategy, safeguard innovations, and support fundraising through pitch decks and investor diligence."
        ]
      },
      {
        "role": "Solo IndieHacker",
        "company": "",
        "location": "",
        "dateRange": "Jun 2021 - Sep 2022",
        "bullets": [
          "Built and launched three full-stack Laravel products from scratch while bootstrapping under tight financial constraints.",
          "Handled the full product lifecycle: market research, backend and frontend development, branding, and direct sales.",
          "Worked over 50 events and networking loops to drive adoption and tighten feedback cycles."
        ]
      },
      {
        "role": "Intellectual Property & IP/Tech Lawyer",
        "company": "Sujata Chaudhri IP Attorneys (SCIP) & Rahul Chaudhary & Partners",
        "location": "",
        "dateRange": "Dec 2015 - Apr 2022",
        "bullets": [
          "Promoted to Senior Associate 3-5 years ahead of peers through strong performance in high-stakes litigation.",
          "Helped secure an interim injunction in the 2016 Rubik's Cube trade dress case (Seven Towns v. Kiddiland).",
          "Handled hundreds of trademark disputes, resolving most through pre-litigation mediations and favorable settlements."
        ]
      },
      {
        "role": "Marketing Associate",
        "company": "Rainmaker",
        "location": "",
        "dateRange": "Apr 2015 - Nov 2015",
        "bullets": [
          "Improved email open rates and engagement via personalized, A/B-tested Mailchimp campaigns with custom HTML designs.",
          "Curated genuine customer testimonials that increased site trust and conversions.",
          "Planned and executed a high-energy on-campus quiz for 300+ law students, increasing brand visibility and lead capture."
        ]
      }
    ],
    "projects": [
      {
        "name": "gvim",
        "href": "https://github.com/ryangerardwilson/gvim",
        "why": "Word-style editors are bloated; I wanted a block editor with Vim muscle memory and easy note publishing.",
        "what": "GTK4 block editor with Vim navigation, Python graphs, inline ThreeJS, and web publishing."
      },
      {
        "name": "ai",
        "href": "https://github.com/ryangerardwilson/ai",
        "why": "I wanted Responses-era tooling in a pure CLI, not a TUI.",
        "what": "Rebuilt opencode as a shell-native assistant with edits, audits, repo analysis, safeguards, and secure keys."
      },
      {
        "name": "xyz",
        "href": "https://github.com/ryangerardwilson/xyz",
        "why": "To-dos reward busywork; I wanted work tracked as JTBD outcomes.",
        "what": "Vim-first task tracker with North Star scoring in pure Python plus curses."
      },
      {
        "name": "o",
        "href": "https://github.com/ryangerardwilson/o",
        "why": "I wanted a full file browser driven only by hjkl.",
        "what": "Python curses file manager with modal navigation, matrix rain, and filesystem actions."
      },
      {
        "name": "vixl",
        "href": "https://github.com/ryangerardwilson/vixl",
        "why": "Excel is bloated; I wanted terminal-native spreadsheets for large sheets.",
        "what": "Python curses spreadsheet editor for CSV, Parquet, XLSX, and HDF5 with Vim navigation."
      },
      {
        "name": "rt",
        "href": "https://github.com/ryangerardwilson/rt",
        "why": "AI slop erodes intuition; I wanted drills that harden patterns into muscle memory.",
        "what": "CLI tutor with markdown lessons, rote/jump modes, accuracy gates, editing, and search."
      },
      {
        "name": "rlc",
        "href": "https://github.com/ryangerardwilson/rlc",
        "why": "GUI music players feel mushy; I wanted ffplay speed and terminal-local playback.",
        "what": "Curses music player with search, shuffle, playlist control, ASCII visuals, and yt-dlp pulls."
      },
      {
        "name": "replyguy|x|linkedin|blog",
        "href": "https://github.com/ryangerardwilson",
        "displayHref": "github.com/ryangerardwilson/{replyguy|x|linkedin|blog}",
        "launchDate": "Feb 25 - Mar 10, 2026",
        "why": "Social apps are feed sludge; I wanted Vim-first tools that turn Codex into bangers and publish them without browser ceremony.",
        "what": "Reply drafting plus shell-native posting across replyguy, X, LinkedIn, and blog."
      },
      {
        "name": "gmail|gcal|gdrive",
        "href": "https://github.com/ryangerardwilson",
        "displayHref": "github.com/ryangerardwilson/{gmail|gcal|gdrive}",
        "launchDate": "Mar 3 - Mar 9, 2026",
        "why": "Google's browser stack turns mail, calendar, and backup into ceremony; I wanted shell-first tools.",
        "what": "CLIs for Gmail, Calendar, and Drive backup with OAuth, presets, and XDG-local state."
      }
    ],
    "page_1": {
      "left_sections": [
        {
          "kind": "identity"
        },
        {
          "kind": "contact"
        },
        {
          "kind": "education"
        },
        {
          "kind": "skills",
          "title": "Skills",
          "labels": [
            "AI/ML",
            "Python",
            "Frontend",
            "Data Engineering"
          ]
        }
      ],
      "right_sections": [
        {
          "kind": "profile"
        },
        {
          "kind": "experience",
          "title": "Experience",
          "roles": [
            "Entrepreneur-in-Residence",
            "Solo IndieHacker",
            "Intellectual Property & IP/Tech Lawyer",
            "Marketing Associate"
          ]
        }
      ]
    },
    "page_2": {
      "left_sections": [
        {
          "kind": "skills",
          "title": null,
          "labels": [
            "CLI/TUI Tooling",
            "System Design / Delivery",
            "Unix",
            "Cloud"
          ]
        }
      ],
      "right_sections": [
        {
          "kind": "projects",
          "title": "AGENTIC AI TOOLING",
          "subtitle": "These tools help steer AI agents with purpose and precision.",
          "names": [
            "replyguy|x|linkedin|blog",
            "gmail|gcal|gdrive",
            "rlc",
            "gvim",
            "ai",
            "xyz",
            "vixl",
            "o",
            "rt"
          ]
        }
      ]
    }
  },
  "resumePdf2": {
    "extends": "resumePdf",
    "basics": {
      "headline": "Data Scientist & Backend Engineer"
    },
    "profile": "Data scientist and backend engineer with 10+ years across ML, APIs, automation, and data systems. I ship models into products, turn operational mess into backend logic, and build Python services that stay close to actual use. Shipped ML-assisted systems that lifted supply efficiency by 20%, replaced sprawling legacy workflows with compact configurable backends, and move comfortably from feature engineering to production delivery.",
    "page_1": {
      "left_sections": [
        {
          "kind": "identity"
        },
        {
          "kind": "contact"
        },
        {
          "kind": "education"
        },
        {
          "kind": "skills",
          "title": "Skills",
          "labels": [
            "AI/ML",
            "Python",
            "Data Engineering",
            "Cloud"
          ]
        }
      ]
    },
    "page_2": {
      "left_sections": [
        {
          "kind": "skills",
          "title": null,
          "labels": [
            "System Design / Delivery",
            "Unix"
          ]
        }
      ],
      "right_sections": [
        {
          "kind": "projects",
          "title": "Data + Backend Projects",
          "subtitle": "Selected systems across backend automation, data workflows, and applied AI.",
          "names": [
            "vixl",
            "ai",
            "xyz",
            "gvim",
            "rt",
            "gmail|gcal|gdrive",
            "replyguy|x|linkedin|blog",
            "o",
            "rlc"
          ]
        }
      ]
    }
  },
  "resumePdf3": {
    "extends": "resumePdf",
    "basics": {
      "headline": "AI & ML Solutions Engineer & Strategist"
    },
    "profile": "AI solutions architect with 10+ years across ML, backend systems, and hands-on delivery. I turn operational mess into shipped workflows: models in production, APIs around them, and tools people will actually use. Shipped ML-assisted systems that lifted supply efficiency by 20%, replaced legacy sprawl with compact configurable backends, and move comfortably from model behavior and prompt design to rollout, docs, and operator enablement.",
    "page_1": {
      "left_sections": [
        {
          "kind": "identity"
        },
        {
          "kind": "contact"
        },
        {
          "kind": "education"
        },
        {
          "kind": "skills",
          "title": "Skills",
          "labels": [
            "AI/ML",
            "Python",
            "System Design / Delivery",
            "Cloud"
          ]
        }
      ]
    },
    "page_2": {
      "left_sections": [
        {
          "kind": "skills",
          "title": null,
          "labels": [
            "Data Engineering",
            "Unix"
          ]
        }
      ],
      "right_sections": [
        {
          "kind": "projects",
          "title": "GenAI + Platform Systems",
          "subtitle": "Selected systems across AI delivery, backend automation, and operator-facing tooling.",
          "names": [
            "ai",
            "gmail|gcal|gdrive",
            "replyguy|x|linkedin|blog",
            "vixl",
            "xyz",
            "gvim",
            "rt",
            "o",
            "rlc"
          ]
        }
      ]
    }
  },
  "timeline": {
    "title": "My Story",
    "subtitle": "",
    "projects": [
      {
        "id": "vixl",
        "type": "project",
        "date": "2026-01-06T13:49:49Z",
        "accent": "vixl",
        "title": "vixl",
        "summary": "Excel is bloated and opaque on large sheets; I wanted fast, home-row spreadsheets.",
        "bullets": [
          "Vim-first TUI spreadsheet editor for CSV/Parquet/XLSX/HDF5 with Pandas syntax.",
          "Handles 100k+ row workflows without leaving the home row."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/vixl"
      },
      {
        "id": "gvim",
        "type": "project",
        "date": "2026-02-10T03:24:40Z",
        "accent": "gvim",
        "title": "gvim",
        "summary": "Microsoft Word-style editors are bloated; I wanted a block-based doc editor that respected my Vim muscle memory and made notes easy to publish like a personal Wikipedia.",
        "bullets": [
          "Built to avoid bloated Word-style tools while keeping a block-based workflow and real Vim navigation.",
          "GTK4 editor that preserves Vim movement across document blocks and rich note structures.",
          "Renders Python graphs and ThreeJS inline, stores git-friendly `.gvim` files, and makes publishing notes to the web straightforward."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/gvim"
      },
      {
        "id": "ai",
        "type": "project",
        "date": "2026-02-05T04:52:41Z",
        "accent": "ai",
        "title": "ai",
        "summary": "I wanted to study Responses vs Completions and prove a pure CLI aesthetic.",
        "bullets": [
          "Built to study the Responses API vs. Completions using a pure CLI (no TUI).",
          "Rebuilt opencode as a terminal-first assistant for editing, diff audits, Q&A, and repo analysis.",
          "Includes Git safeguards, sandboxed shell commands, and secure API key storage."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/ai"
      },
      {
        "id": "o",
        "type": "project",
        "date": "2025-12-16T01:51:07Z",
        "accent": "o",
        "title": "o",
        "summary": "File managers force arrows/mouse; I wanted hjkl-only navigation for the filesystem.",
        "bullets": [
          "Built to eliminate arrow-key/mouse strain with Vim's hjkl-only navigation.",
          "Python curses file browser with modal nav, yank/cut/paste/delete, and picker modes.",
          "Matrix-inspired rain display keeps context while you move fast."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/o"
      },
      {
        "id": "xyz",
        "type": "project",
        "date": "2026-01-18T05:57:58Z",
        "accent": "xyz",
        "title": "xyz",
        "summary": "To-dos reward busywork; I wanted JTBD outcomes that compound progress.",
        "bullets": [
          "Built to force JTBD outcomes instead of busywork checklists.",
          "Vim-first terminal task tracker with North Star scores (p/q/r) for value, impact, embodiment.",
          "Pure Python (curses + CSV) with instant setup for clarity-driven creators."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/xyz"
      },
      {
        "id": "rt",
        "type": "project",
        "date": "2025-10-16T02:34:33Z",
        "accent": "rt",
        "title": "rt",
        "summary": "AI code slop dulls intuition; I wanted drills that embed expert patterns.",
        "bullets": [
          "Built to counter AI code slop by drilling expert snippets into muscle memory.",
          "CLI tutor with rote/jump modes, 90%+ accuracy gates, and in-place editing.",
          "Parses .md courses into structured lessons with bookmarks and search."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/rt"
      },
      {
        "id": "clipai",
        "type": "project",
        "date": "2026-01-16T16:26:57Z",
        "accent": "clipai",
        "title": "clipai",
        "summary": "I wanted AI answers without context switching, triggered straight from the clipboard.",
        "bullets": [
          "Clipboard watcher swaps ai{{ prompt }} with OpenAI responses in real time.",
          "CLI mode pipes answers straight into your buffer for scripts and automations.",
          "Wayland-native service built on wl-clipboard with a systemd user unit for persistence."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/clipai"
      },
      {
        "id": "google-stack",
        "type": "project",
        "date": "2026-03-03T05:08:21Z",
        "accent": "ai",
        "title": "gmail|gcal|gdrive",
        "summary": "Google's browser maze turns simple mail, scheduling, and backup into ceremony; I wanted one shell-native layer instead.",
        "bullets": [
          "gmail handles send, reply, attachments, contacts, spam cleanup, and thread audits with preset-based accounts.",
          "gcal creates, lists, deletes, and reschedules events across accounts, with timezone-aware timestamps and Meet links on create.",
          "gdrive makes local folders authoritative, syncing backups to Drive with OAuth presets, XDG state, and hourly timers."
        ],
        "githubUrl": "https://github.com/ryangerardwilson"
      },
      {
        "id": "replyguy",
        "type": "project",
        "date": "2026-03-10T08:52:36Z",
        "accent": "clipai",
        "title": "replyguy",
        "summary": "Posting is easy; writing replies worth posting is the part that burns time. I wanted one local rant to turn into usable drafts without the feed pulling me in.",
        "bullets": [
          "Vim-first CLI that turns one local rant into copy-paste-ready reply suggestions plus an archived muse.",
          "Runs drafting in the background through the local `codex` CLI, then reports completion through `notify-send`.",
          "Keeps live state in XDG directories so the public repo stays clean and the workflow stays local-first."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/replyguy"
      },
      {
        "id": "audio",
        "type": "project",
        "date": "2026-03-01T12:55:35Z",
        "accent": "o",
        "title": "audio",
        "summary": "Linux audio settings are click-heavy nonsense; I wanted pactl-driven sink switching from the terminal.",
        "bullets": [
          "CLI for listing and switching PulseAudio/PipeWire output devices with direct sink and sink:port targeting.",
          "Supports interactive selection, fast `--list` inspection, and explicit device jumps for headphones vs speakers.",
          "Keeps Bluetooth pairing manual through `bluetoothctl`, then hands device switching back to one clean command."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/audio"
      },
      {
        "id": "rlc",
        "type": "project",
        "date": "2026-03-01T08:40:40Z",
        "accent": "rt",
        "title": "rlc",
        "summary": "GUI music players feel mushy and overlit; I wanted local playback, ffplay speed, and an ASCII visualizer in the terminal.",
        "bullets": [
          "Curses-based local music player with keyboard-first controls, playlist reordering, search, shuffle, and command bar actions.",
          "Uses `ffmpeg`/`ffplay` for playback and rendering, plus `yt-dlp` for pulling YouTube audio straight into the music directory.",
          "Stores only a small XDG config for music dir and FPS, then gets out of the way."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/rlc"
      },
      {
        "id": "blog",
        "type": "project",
        "date": "2026-03-04T05:19:13Z",
        "accent": "xyz",
        "title": "blog",
        "summary": "Posting clips across platforms was repetitive ceremony; I wanted one CLI to record, trim, caption, and publish to X plus LinkedIn.",
        "bullets": [
          "Publishes text or media to multiple platforms from one command, with `$EDITOR` compose mode and XDG-configured per-platform argument templates.",
          "Includes built-in screen recording, stop-and-trim flow, local test renders, sync diagnostics, and recorder cache cleanup.",
          "Treats x and linkedin as composable backends instead of making me retype the same post twice."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/blog"
      },
      {
        "id": "x",
        "type": "project",
        "date": "2026-02-25T00:41:00Z",
        "accent": "clipai",
        "title": "x",
        "summary": "X is useful and distractingly awful at the same time; I wanted a CLI that posts text or media without dragging me into the feed.",
        "bullets": [
          "Minimal command-line publisher with Vim compose mode, media attach support, and automatic 280-character guardrails.",
          "Uses OAuth2 PKCE user login by default, with OAuth1 fallback for text-only posts when needed.",
          "Built around the official Python XDK for v2 media upload and post creation."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/x"
      },
      {
        "id": "linkedin",
        "type": "project",
        "date": "2026-03-04T13:06:10Z",
        "accent": "vixl",
        "title": "linkedin",
        "summary": "LinkedIn punishes brevity with layers of form fields and recruiter varnish; I wanted a small CLI that just posts the thing.",
        "bullets": [
          "Posts text, images, or video from the command line with Vim compose mode and a direct `main.py` flow.",
          "Handles OAuth token storage at `~/.linkedin/oauth2_token.json` and can auto-start login when no valid token exists.",
          "Waits for LinkedIn media asset processing before creating the post so uploads do not race and fail halfway."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/linkedin"
      },
      {
        "id": "slack",
        "type": "project",
        "date": "2026-02-25T05:36:51Z",
        "accent": "ai",
        "title": "slack",
        "summary": "Slack is fine until I need one fast direct message; I wanted a CLI that messages people as me without tab-hopping.",
        "bullets": [
          "Sends Slack DMs from the terminal using a user token, addressed by user ID, email, or saved labels.",
          "Supports `$EDITOR` compose mode plus CLI label creation for repeat contacts.",
          "Keeps the permissions narrow: `chat:write`, `im:write`, and `users:read` only when email lookup is needed."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/slack"
      },
      {
        "id": "whatsapp",
        "type": "project",
        "date": "2026-02-25T01:32:16Z",
        "accent": "o",
        "title": "whatsapp",
        "summary": "WhatsApp Web makes a two-line message feel like a small pilgrimage; I wanted one command and done.",
        "bullets": [
          "Minimal CLI that drives WhatsApp Web through Playwright, with persisted login stored in `~/.whatsapp-web` after the first QR scan.",
          "Supports direct numbers, contact labels in XDG config, profile clearing, and send timeouts for flaky sessions.",
          "Installer sets up a private virtualenv plus Playwright browser binaries so the runtime stays boxed in."
        ],
        "githubUrl": "https://github.com/ryangerardwilson/whatsapp"
      }
    ],
    "lifeEvents": [
      {
        "id": "life-1",
        "type": "lifeEvent",
        "date": "1991-12-31T23:59:59Z",
        "label": "[1991 | Birth]",
        "title": "And so it began",
        "bullets": [
          "Baptized Catholic."
        ]
      },
      {
        "id": "life-2",
        "type": "lifeEvent",
        "date": "2005-12-31T23:59:59Z",
        "label": "[2005 | Till 15]",
        "title": "Dreaming in chords and code",
        "bullets": [
          "Imagined life as a mad scientist, Liverpool midfielder, and pianist."
        ]
      },
      {
        "id": "life-3",
        "type": "lifeEvent",
        "date": "2006-12-31T23:59:59Z",
        "label": "[2006 | At 15]",
        "title": "Challenging the script",
        "bullets": [
          "Silent-quit CBSE science, refusing assembly-line thinking."
        ]
      },
      {
        "id": "life-4",
        "type": "lifeEvent",
        "date": "2008-12-31T23:59:59Z",
        "label": "[2008 | By 17]",
        "title": "Dropping out to chase better questions",
        "bullets": [
          "Walked away from DU commerce to find deeper learning paths."
        ]
      },
      {
        "id": "life-5",
        "type": "lifeEvent",
        "date": "2010-12-31T23:59:59Z",
        "label": "[2010 | At 18]",
        "title": "Law school foundations",
        "bullets": [
          "Joined RMLNLU in Lucknow, grounding discipline in dialect and rhetoric."
        ]
      },
      {
        "id": "life-6",
        "type": "lifeEvent",
        "date": "2015-12-31T23:59:59Z",
        "label": "[2015 | At 23]",
        "title": "First LegalTech startup crash",
        "bullets": [
          "Joined a LegalTech startup.",
          "Ran email marketing campaigns; learned basic HTML.",
          "Fell in love with the idea that computers can do whatever you tell them to—provided you ask nicely."
        ]
      },
      {
        "id": "life-7",
        "type": "lifeEvent",
        "date": "2016-12-31T23:59:59Z",
        "label": "[2016 | At 24]",
        "title": "IP and tech attorney years",
        "bullets": [
          "Worked as an IP and technology lawyer, observing how labor-driven businesses scale."
        ]
      },
      {
        "id": "life-8",
        "type": "lifeEvent",
        "date": "2019-12-31T23:59:59Z",
        "label": "[2017-2019 | 25–27]",
        "title": "Law, code, and rediscovering craft",
        "bullets": [
          "Rode out COVID disruption while practicing law.",
          "Learned PHP; rekindled piano disciplines and builder mindset."
        ]
      },
      {
        "id": "life-9",
        "type": "lifeEvent",
        "date": "2024-12-31T23:59:59Z",
        "label": "[2020-2024 | 28–32]",
        "title": "Entrepreneurial rollercoaster to Wiom",
        "bullets": [
          "Built LegalTech apps, burned savings, learned from a startup crash.",
          "Joined Wiom's mission; shipped HAPPY and GENIE.",
          "Deepened craft in Bash, PHP, Python, JS, and Gospel piano.",
          "Explored Rust for a year before returning to Python's pragmatism.",
          "Proved build-in-production with Python, JS, and SQLite for Wiom's internal CRM."
        ]
      },
      {
        "id": "life-10",
        "type": "lifeEvent",
        "date": "2026-12-31T23:59:59Z",
        "label": "[2025-26 | 33–34]",
        "title": "Married my beautiful wife",
        "bullets": [
          "Married my wife – very beautiful indeed.",
          "Relearned high-school math while building gvim and sharpening tutor tools.",
          "Rebuilt my personal infra into a shell stack for mail, calendar, Drive backup, publishing, and reply drafting.",
          "Started a terminal-first Android workflow from Arch Linux with Kotlin, Compose, `adb`, and a scriptable release path.",
          "Kept coding taste sharp with rt and its companion tutor apps."
        ]
      }
    ]
  },
  "footer": {
    "avatarUrl": "https://unavatar.io/x/ryan_improvises?refresh=1",
    "avatarAlt": "Ryan improvises on X",
    "resumeHref": "resume.pdf",
    "notesLabel": "notes.ryangerardwilson.com",
    "notesHref": "https://notes.ryangerardwilson.com/"
  }
}
