Portfolio

Selected work

Representative examples of the kinds of systems we build — the problem, the architecture decision, and the result. Client names vary; the engineering approach here is the real thing.

RAG

Enterprise RAG Platform

Challenge — A growing team needed AI answers grounded in thousands of internal documents, without the hallucination risk of a plain LLM wrapper.

Approach — Built a retrieval pipeline with structure-aware chunking and hybrid semantic + keyword search, so exact-match terms are never missed by vector similarity alone.

Architecture — Document ingestion → structure-aware chunking → embeddings in a vector database, reranked and merged with keyword results before generation. Every answer carries a citation back to its source chunk.

Answers are traceable to source documents by design — reviewers verify in seconds instead of re-searching from scratch.

RAGHybrid SearchCitation Grounding
RAG

Legal Research Assistant

Challenge — Associates were spending hours manually searching contracts and case files for relevant precedent, with no way to verify an AI summary against the source text.

Approach — A citation-grounded research assistant scoped to a firm's own document set, where semantic search surfaces relevant precedent and every answer cites the originating clause or case.

Architecture — Matter-scoped vector indexes keep each client's documents isolated. Clause-level chunking preserves legal structure so citations point to an exact, verifiable passage, not an approximate page range.

Every generated answer links back to the exact contract section it came from — reviewers verify in seconds instead of re-searching from scratch.

RAGLegal AICitation Grounding
AI Assistants

Engineering Knowledge Assistant

Challenge — Engineering teams re-asked questions in chat that were already answered somewhere in a design doc, runbook, or old thread — searchable in theory, findable in practice never.

Approach — An internal assistant grounded in the team's own design docs, runbooks, and incident postmortems, answering in-context inside the tools engineers already use.

Architecture — Continuous ingestion of docs and postmortems into a permission-aware index, with conversational memory for follow-up questions and a fallback to 'not covered in our docs' rather than a guessed answer.

Reduced repeated Slack questions by giving engineers a first stop that's actually grounded in the team's own material.

AI AssistantsInternal ToolsSemantic Search
RAG

Document Intelligence Platform

Challenge — A back-office team was manually re-keying data from scanned forms and PDFs into downstream systems — slow, repetitive, and error-prone at volume.

Approach — A layout-aware parsing pipeline that extracts structured data against a configurable schema per document type, instead of treating every document as a flat block of text.

Architecture — Document layout analysis separates text, tables, and figures before extraction; OCR handles scanned input; a schema-driven extraction layer outputs structured JSON to an API consumed by downstream systems.

Structured data now flows directly into downstream systems without manual re-keying for supported document types.

Document IntelligenceOCRStructured Extraction
AI Agents

Construction AI

Challenge — Design engineers needed fast answers to spec and clearance questions without breaking flow to search PDFs across multiple standards documents.

Approach — An agent with typed tool access to the active drawing and a spec knowledge base — geometry checks and standards lookups run as validated function calls, not free-form text generation.

Architecture — A retrieval-grounded spec index feeds an agent that calls typed tools — geometry validation, clause lookup — instead of generating unstructured text, with every tool call logged for review.

Spec lookups that used to mean switching windows and searching a PDF now resolve inline, with the source standard cited.

AgentsTool CallingConstruction AI
Automation

Workflow Automation

Challenge — A growing support team was manually triaging and tagging every inbound ticket before it could be routed, creating a queue backlog during peak hours.

Approach — An event-driven pipeline classifies, tags, and drafts a first-response suggestion for each ticket the moment it arrives, with a human approving before anything sends.

Architecture — Inbound events trigger a classification step, a drafting step grounded in the product's own documentation, and a human-approval gate before any customer-facing action is taken.

Manual triage time per ticket dropped substantially; the team now reviews and approves rather than reading and typing from scratch.

Workflow AutomationEvent-DrivenHuman-in-the-Loop
Web & Mobile

Responsive Product Web App

Challenge — A legacy client-rendered app had slow first paint and inconsistent behavior across devices, hurting both conversion and SEO.

Approach — Rebuilt on Next.js with server components for data-heavy routes, a shared design system, and a strict performance budget enforced in CI.

Architecture — Server components handle data-heavy routes with zero client JS by default; a shared component library keeps card, typography, and spacing rules consistent across every page.

Meaningfully faster first paint and a fully responsive layout verified across breakpoints, with server-rendered pages now indexable by search engines.

Next.jsTypeScriptPerformance Budget

Have a similar problem?

We'll walk through the architecture that fits your case in a direct technical conversation — no sales deck.

Talk to an AI Engineer