AGENT.md — src/pages/

File-based routes. Every page wraps itself in ../layouts/BaseLayout.astro (which provides head/meta, header, footer, theme, and the scroll-reveal script) except blog posts, which use PostLayout (itself built on BaseLayout). All pages are prerendered (output: "static").

FileRouteLayout
index.astro/BaseLayout
about.astro/aboutBaseLayout
projects/index.astro/projectsBaseLayout
blog/index.astro/blogBaseLayout
blog/[...slug].astro/blog/<slug>PostLayout
rss.xml.js/rss.xml— (endpoint)

sitemap-index.xml and robots.txt are generated by integrations, not pages.


index.astro (117 lines) — homepage

Compact landing: hero → What I do → Selected work → Contact.

Frontmatter

Imports Image, Icon, BaseLayout, StatusPill, CopyEmail, SectionLabel, ProjectRow, ContactCard, featuredProjects, RESUME/SITE/SOCIALS, and me (portrait). Defines whatIDo — three { title, body } blocks:

  1. Documents in, structured data out — extraction pipelines with schema validation, per-field confidence, review step.
  2. Assistants that cite their sources — RAG over own docs/tickets, citations, honest “not in the docs” path, quality tracked.
  3. Agents with guardrails — tool-calling automation, approval on risky actions, every side effect logged.

Markup

Section spacing: mt-16 md:mt-28.


about.astro (221 lines) — /about

Long-form, 640px measure, left-aligned. Order is deliberate: AI systems lead, payments is the credibility, stack is quietest.

Frontmatter data

Sections (each a .reveal with a SectionLabel)

  1. H1 “About” + lead: “Software engineer building practical AI workflows — document pipelines, assistants, agents — with the production discipline that comes from working on payments.”
  2. Portrait <Image src={me} width={320}> 96/128/160px, radius 14.
  3. Bio — three paragraphs: (a) why LLM demos fail in week one and that the post-demo work (evals, confidence gates, human sign-off, idempotent side effects) is the job; (b) Petpooja offline payments as the source of that instinct (“a retried request can’t be allowed to move money twice, and ‘probably correct’ isn’t a state”); (c) came through the web, tools without loyalties, “what not to automate”.
  4. Expertise — tiers as above, hairline-divided, ·-separated inline lists, then STACK mono line.
  5. How I build with AI — lead sentence; In production (category-level: assistants, retrieval, extraction/summarization pipelines, tool-calling agents — carries <!-- TODO(jay): add model/API names and one measurable outcome -->); What a workflow needs before I’d call it done (5-bullet checklist: eval set + regression run, confidence signal + review path, idempotent side effects, cost/latency budget, honest failure mode); Where it doesn’t help (why-questions, data modelling, naming, deciding what not to build; “plausible code that quietly does the wrong thing”); What I actually use (2-col mono/name + use).
  6. Experience — sm:grid-cols-[6rem_1fr]: date column [TODO] — Present (<!-- TODO(jay): start date -->), “Software Engineer” at Petpooja ↗, three bullets (offline payments infra; LLM-backed features in production; partner integrations + idempotent webhooks) marked <!-- TODO(jay): replace with 2–4 specific, defensible bullets -->.
  7. Outside work — chess, cricket, travel; chess streams line.
  8. <ContactCard />.

Meta description is page-specific (passed to BaseLayout).


rss.xml.js (31 lines) — /rss.xml

Subfolders