Skip to main content

Built for humans. Queryable by machines.

Every page has a markdown variant. Every data point is structured. AI agents can query this portfolio as a tool.

View raw

Every page has a markdown variant. Every data point is structured. AI agents can query this portfolio as a tool. Everything below is auto-generated from four TypeScript data files.

01 — For LLMs

Markdown surfaces designed for large language models to read and index.

  • /llms.txt — Curated index with links. Follows the llms.txt spec.
  • /llms-full.txt — Complete site content in one document. ~28,000 words.
  • /llms-lite.txt — Elevator pitch. Under 100 words.
  • /profile.md — One-page identity document. Supports ?context=recruiting|collaboration.
  • /system-prompt.md — Instructions for AI systems representing me.

02 — Structured Data

Machine-readable JSON endpoints for programmatic access.

03 — APIs

RESTful endpoints returning structured JSON with content negotiation.

  • /api/profile — Structured identity JSON. Supports ?context= for selective disclosure.
  • /api/introduce?to= — Tailored introductions for 6 audience types.
  • /api/capabilities — What this site can do, with endpoint URLs.
  • /api/mcp — MCP server. 5 tools via JSON-RPC. Details below.

04 — Markdown Pages

Every page available as clean markdown via content negotiation.

  • /about.md — Bio, experience, education, skills.
  • /blog.md — Blog index with excerpts.
  • /blog/{slug}.md — Full blog post as clean markdown.
  • /work.md — All projects, categorized.
  • /work/{slug}.md — Full case study.
  • /contact.md — Contact information and machine-readable links.

05 — MCP Server

Connect any MCP-compatible client to query this portfolio as a tool. No authentication required.

claude_desktop_config.json
{
  "mcpServers": {
    "fardiniqbal": {
      "url": "https://fardiniqbal.com/api/mcp"
    }
  }
}

Available Tools

  • get_profile(context?: recruiting | collaboration | public) — Professional profile with selective disclosure.
  • get_resume() — Full resume in JSON Resume format.
  • search_blog(query: string) — Search posts by keyword, tag, or content.
  • list_projects(category?, featured_only?) — Filter projects by category.
  • get_skills() — Categorized skills from resume data.

How it works

Change the data, push to git, and every surface updates automatically. No manual files, no database, no CMS.

  • 01 · Source — Four TypeScript data files are the single source of truth for everything on this site. (blog.ts, projects.ts, experience.ts, case-studies.ts)
  • 02 · Pipeline — A generation library reads the data and produces every surface, route, and schema. (ai-surfaces.ts, mcp-tools.ts)
  • 03 · Output — 30+ surfaces, 5 MCP tools, and 4 JSON-LD schemas. All auto-generated, zero maintenance. Push to git, everything updates.

Crawler Policy

AI crawlers are explicitly welcomed. GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and 9 others are allowed in robots.txt. Every page has JSON-LD structured data. Blog posts include BlogPosting schema with word count and full metadata.