{
  "total": 10,
  "posts": [
    {
      "slug": "how-text-watermarks-hide-in-plain-sight",
      "title": "How does a text watermark work?",
      "description": "A first-principles investigation of how generation-time text watermarks work, from a weighted coin to Gemma, and where the evidence stops.",
      "date": "2026-08-18T00:00:00.000Z",
      "tags": [
        "ai-safety",
        "llm",
        "watermarking",
        "gen-ai",
        "research"
      ],
      "reading_time": "50 min read",
      "readingTime": "50 min read",
      "wordsCount": 9917,
      "url": "https://jayshah.dev/posts/how-text-watermarks-hide-in-plain-sight/",
      "markdown_url": "https://jayshah.dev/posts/how-text-watermarks-hide-in-plain-sight.md",
      "markdownUrl": "https://jayshah.dev/posts/how-text-watermarks-hide-in-plain-sight/index.md",
      "json_url": "https://jayshah.dev/api/posts/how-text-watermarks-hide-in-plain-sight.json",
      "series": null,
      "seriesOrder": null,
      "interactive": true
    },
    {
      "slug": "entity-resolution-dense-retrieval",
      "title": "Can Dense Retrieval Beat BM25 for Entity Resolution? (And At What Cost?)",
      "description": "Testing if applying Matryoshka Representation Learning (MRL) to tabular entity data could bridge the cost gap, compressing embeddings enough to remain operational while still beating BM25 on corrupted queries.",
      "date": "2026-03-09T00:00:00.000Z",
      "tags": [
        "machine learning",
        "search",
        "infrastructure",
        "embedding models",
        "BM25",
        "matryoshka representation learning",
        "entity resolution"
      ],
      "reading_time": "14 min read",
      "readingTime": "14 min read",
      "wordsCount": 2788,
      "url": "https://jayshah.dev/posts/entity-resolution-dense-retrieval/",
      "markdown_url": "https://jayshah.dev/posts/entity-resolution-dense-retrieval.md",
      "markdownUrl": "https://jayshah.dev/posts/entity-resolution-dense-retrieval/index.md",
      "json_url": "https://jayshah.dev/api/posts/entity-resolution-dense-retrieval.json",
      "image": "https://jayshah.dev/assets/images/entity-resolution/mrr_overall.png",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "memory-architecture",
      "title": "File-Based Memory Is a Terrible Idea That Somehow Works",
      "description": "A production diary of tiered episodic memory in AI agents. Three markdown files, an SQLite database, and a lobster that somehow remembers what you said three days ago.",
      "date": "2026-02-28T00:00:00.000Z",
      "tags": [
        "ai-agents",
        "openclaw",
        "memory",
        "production"
      ],
      "reading_time": "15 min read",
      "readingTime": "15 min read",
      "wordsCount": 2856,
      "url": "https://jayshah.dev/posts/memory-architecture/",
      "markdown_url": "https://jayshah.dev/posts/memory-architecture.md",
      "markdownUrl": "https://jayshah.dev/posts/memory-architecture/index.md",
      "json_url": "https://jayshah.dev/api/posts/memory-architecture.json",
      "image": "https://jayshah.dev/assets/images/2026-03-01-02-52-00-memory-architecture-hero-v2.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "stop-renting-your-workflow",
      "title": "Stop Renting Your Workflow: Building a Custom AI Coding Agent with Pi",
      "description": "Four tools, a settings file, and full control - how I built my own AI coding agent with Pi instead of paying $200/month for a CLI that keeps changing.",
      "date": "2026-02-11T00:00:00.000Z",
      "tags": [
        "ai-agents",
        "coding-tools",
        "llm",
        "developer-tools",
        "pi-coding-agent"
      ],
      "reading_time": "11 min read",
      "readingTime": "11 min read",
      "wordsCount": 2057,
      "url": "https://jayshah.dev/posts/stop-renting-your-workflow/",
      "markdown_url": "https://jayshah.dev/posts/stop-renting-your-workflow.md",
      "markdownUrl": "https://jayshah.dev/posts/stop-renting-your-workflow/index.md",
      "json_url": "https://jayshah.dev/api/posts/stop-renting-your-workflow.json",
      "image": "https://jayshah.dev/assets/images/pi-coding-agent/2025-02-11-pi-terminal-header.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "ragatouille",
      "title": "Concept to Code - Deploying ColBERT with RAGatouille on Modal Labs in Minutes",
      "description": "Practical way of using colbert with ragatouille on modal labs",
      "date": "2024-09-07T00:00:00.000Z",
      "tags": [
        "gen-ai",
        "llm",
        "rag"
      ],
      "reading_time": "18 min read",
      "readingTime": "18 min read",
      "wordsCount": 3484,
      "url": "https://jayshah.dev/posts/ragatouille/",
      "markdown_url": "https://jayshah.dev/posts/ragatouille.md",
      "markdownUrl": "https://jayshah.dev/posts/ragatouille/index.md",
      "json_url": "https://jayshah.dev/api/posts/ragatouille.json",
      "image": "https://jayshah.dev/assets/images/ragatouille.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "applied-rag",
      "title": "Beyond the Hype- Practical Strategies for Implementing Superior RAG",
      "description": "Practical strategies for implementing and optimizing Retrieval Augmented Generation (RAG) in LLM systems.",
      "date": "2024-09-03T00:00:00.000Z",
      "tags": [
        "gen-ai",
        "llm",
        "rag"
      ],
      "reading_time": "24 min read",
      "readingTime": "24 min read",
      "wordsCount": 4720,
      "url": "https://jayshah.dev/posts/applied-rag/",
      "markdown_url": "https://jayshah.dev/posts/applied-rag.md",
      "markdownUrl": "https://jayshah.dev/posts/applied-rag/index.md",
      "json_url": "https://jayshah.dev/api/posts/applied-rag.json",
      "image": "https://jayshah.dev/assets/images/rag-llm.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "mistral-hackathon",
      "title": "Hackathons - A Condensed Time for Learning, Building, and Networking",
      "description": "Hackathon Experience at Mistral Hackathon in San Francisco",
      "date": "2024-03-25T00:00:00.000Z",
      "tags": [
        "gen-ai",
        "hackathon"
      ],
      "reading_time": "3 min read",
      "readingTime": "3 min read",
      "wordsCount": 535,
      "url": "https://jayshah.dev/posts/mistral-hackathon/",
      "markdown_url": "https://jayshah.dev/posts/mistral-hackathon.md",
      "markdownUrl": "https://jayshah.dev/posts/mistral-hackathon/index.md",
      "json_url": "https://jayshah.dev/api/posts/mistral-hackathon.json",
      "image": "https://jayshah.dev/assets/images/mistral-hackathon.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "gen-ai",
      "title": "Euphoria of Gen AI",
      "description": "Gen AI and its euphoria",
      "date": "2024-02-26T00:00:00.000Z",
      "tags": [
        "llm",
        "gen-ai"
      ],
      "reading_time": "2 min read",
      "readingTime": "2 min read",
      "wordsCount": 345,
      "url": "https://jayshah.dev/posts/gen-ai/",
      "markdown_url": "https://jayshah.dev/posts/gen-ai.md",
      "markdownUrl": "https://jayshah.dev/posts/gen-ai/index.md",
      "json_url": "https://jayshah.dev/api/posts/gen-ai.json",
      "image": "https://jayshah.dev/assets/images/euphoria-gen-ai.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "prompt-injection",
      "title": "Prompt Injection",
      "description": "Prompt Injection and lessons",
      "date": "2023-10-16T00:00:00.000Z",
      "tags": [
        "llm",
        "prompt"
      ],
      "reading_time": "2 min read",
      "readingTime": "2 min read",
      "wordsCount": 337,
      "url": "https://jayshah.dev/posts/prompt-injection/",
      "markdown_url": "https://jayshah.dev/posts/prompt-injection.md",
      "markdownUrl": "https://jayshah.dev/posts/prompt-injection/index.md",
      "json_url": "https://jayshah.dev/api/posts/prompt-injection.json",
      "image": "https://jayshah.dev/assets/images/prompt-injection.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    },
    {
      "slug": "what-is-spirituality-to-me",
      "title": "What is Spirituality to me?",
      "description": "Spiritual Journey",
      "date": "2021-03-16T00:00:00.000Z",
      "tags": [
        "spiritual",
        "personal"
      ],
      "reading_time": "1 min read",
      "readingTime": "1 min read",
      "wordsCount": 182,
      "url": "https://jayshah.dev/posts/what-is-spirituality-to-me/",
      "markdown_url": "https://jayshah.dev/posts/what-is-spirituality-to-me.md",
      "markdownUrl": "https://jayshah.dev/posts/what-is-spirituality-to-me/index.md",
      "json_url": "https://jayshah.dev/api/posts/what-is-spirituality-to-me.json",
      "image": "https://jayshah.dev/assets/images/Spirituality.webp",
      "series": null,
      "seriesOrder": null,
      "interactive": false
    }
  ]
}