by Nishant.
Workspace/Projects/PagePilot
Built in the open
All projects
AI RESEARCH ASSISTANT / CASE STUDY

PagePilot

From a long article to a grounded conversation.

Full-stack AI application · Rust + ReactImplemented · bring your own key
RustTokioReactLLM streaming
Source codeOpen app
PROJECT WALKTHROUGH

PagePilot demo

A recorded project demonstration. The player loads only while this dialog is open.

WHERE THIS CREATES VALUE

A practical pattern for adding source-aware AI assistance to reading, documentation, and knowledge workflows.

01 / CONTEXT

The problem

Reading a long article and asking a model about it are often separate tasks. PagePilot keeps the extracted source, a summary, and follow-up questions in the same workflow so answers can be checked against passages.

02 / IMPLEMENTATION

The approach

An Axum API validates a public URL, fetches bounded HTML, and extracts readable passages. Separate generation requests stream a selected provider's response to the React interface. Pasted text is available when extraction fails.

  • Read extracted content before connecting an AI provider
  • Summarize and ask follow-up questions with streamed responses
  • Select passages and inspect source citations
  • Keep reading history in IndexedDB and export the conversation as Markdown
03 / ARCHITECTURE

Follow the flow.

Select a stage to explore its role. This diagram explains the documented design; it is not live infrastructure.

ARCHITECTURE EXPLORERDOCUMENTED DESIGN
STEP 1 / 4

URL or pasted source

The visitor supplies a public page or text; extraction does not require a provider key.

04 / TRADEOFFS

The decisions behind it.

Separate fetch, parse, and generation workloads

Each stage has its own concurrency limit. A full stage returns a busy response instead of creating an unbounded queue.

Keep history local

IndexedDB avoids an account or server database for the current scope. It also means history is not encrypted or synchronized between devices.

Make the source inspectable

Passage selection and citation links support verification. A valid passage link is not proof that a generated answer is correct.

05 / EVIDENCE

What the evidence supports.

The repository documents Rust tests, Clippy, frontend tests/build, a no-key smoke script, and mocked provider streams. This case study summarizes that verification approach; no paid-provider or load test was run for the portfolio.

Current boundaries

  • One public HTML page or pasted document per conversation; PDF upload and multi-page research are not implemented.
  • The existing app retains visitor-supplied keys in sessionStorage and receives them transiently on the backend. The portfolio itself accepts no keys.
  • JavaScript-rendered pages and authenticated sources are outside scope; provider access and billing are required for generation.
06 / NEXT STEPS

What comes next.

  • Validate streaming through the chosen production proxy and provider.
  • Measure latency by extraction and generation stage under a declared workload.
Read the project documentation
NEXT CASE STUDYDevGraph