Skip to content

joshnaim1/Claro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claro — Document Accessibility for Students with Disabilities

Making every document clear for every student.

Claro is a web application that makes any document instantly accessible for college students with disabilities — personalized to their specific needs, learning their preferences over time.

Built for the Kiro x Cal Poly Hackathon | Track 4: Human-Centered Design

The Problem

  • 95.9% of the top million websites fail basic WCAG 2.2 accessibility standards
  • 21% of college undergraduates (3.5 million students) have a disability
  • Only 37% of those students report their disability to their college
  • Students wait 3-5 business days for disability offices to manually convert one document
  • Every existing accessibility tool (axe, WAVE, Deque) is built for content creators — nobody has built a tool for the student who needs to USE inaccessible content right now

Claro flips the perspective: instead of asking the world to become accessible, it brings accessibility to the student immediately.

The Solution

Upload any inaccessible document (PDF, pasted text, or URL), select your disability profile, and receive an instantly transformed accessible version. Four specialized AI agents handle ingestion, diagnosis, transformation, and profile management — all powered by Amazon Bedrock (Claude Sonnet 4).

A Kiro steering file stores the student's preferences and updates after every scan, making each subsequent transformation smarter. The system learns which transformations work best for each student's specific content.

Demo

3-Minute Demo Flow:

  1. Upload a document → Multi-agent pipeline fires (visible in real-time trace)
  2. View accessibility diagnosis (score, issues, readability stats)
  3. Transform for any disability profile → Before/after split view
  4. Switch profiles instantly (cached) → See different transformations
  5. Check Insights → Steering file updates live, behavioral intelligence accumulates

Supported Disability Profiles

Profile What It Does
Dyslexia Simplifies sentences (max 15 words), OpenDyslexic font, 1.8 line spacing, key term highlighting, chunked paragraphs
Low Vision High contrast (7:1 ratio), 22px+ font, simplified layout, verbose image descriptions
Cognitive / ADHD TL;DR summary, numbered sections, 3-sentence chunks, key concept callouts, reading time estimates
Screen Reader Document outline, alt text for figures, table header annotations, linearized reading order

Architecture

Multi-Agent Pipeline

┌─────────────┐    ┌─────────────┐    ┌──────────────────┐    ┌──────────────┐
│  Ingestion  │───▶│  Diagnosis  │───▶│ Transformation   │───▶│   Profile    │
│    Agent    │    │    Agent    │    │      Agent       │    │    Agent     │
│ (pdfplumber)│    │  (Bedrock)  │    │   (Bedrock)      │    │ (steering.md)│
└─────────────┘    └─────────────┘    └──────────────────┘    └──────────────┘
     │                    │                     │                      │
     ▼                    ▼                     ▼                      ▼
  Extract text      Score 0-100         Rewrite content         Update learning
  from any format   + issue list        per profile rules       preferences

Each agent has its own system prompt, input/output contract, and trace array. The output of each agent is the input to the next — a true multi-agent pipeline with explicit data contracts.

Tech Stack

Layer Technology
Backend Python 3.11+, FastAPI, uvicorn
AI/LLM Amazon Bedrock (Claude Sonnet 4) via boto3 client.converse()
PDF Processing pdfplumber
Frontend React 18, Vite, Tailwind CSS v4
MCP Server Model Context Protocol (stdio transport)
Persistence .kiro/steering.md (no database)

Kiro Integration

This project showcases Kiro's spec-driven development workflow:

.kiro/specs/claro/

  • requirements.md — 12 requirements with 68 acceptance criteria
  • design.md — Full technical design with Mermaid diagrams, Pydantic models, API contracts
  • tasks.md — 42 implementation tasks with build priority ordering

.kiro/steering.md

Live-updating steering file that stores:

  • Primary disability profile and preferences
  • Learning history (documents scanned, score improvements)
  • Session context (subject, document type)
  • Accumulated Intelligence — cross-document patterns, profile effectiveness, user level estimation

.kiro/hooks/

  • auto-diagnose.json — Triggers diagnosis pipeline on file upload
  • steering-sync.json — Logs steering file changes
  • profile-change.json — Re-runs transformation on profile switch

.kiro/settings/mcp.json

MCP server configuration for the Claro accessibility tools

MCP Server

Claro exposes its accessibility tools via the Model Context Protocol, allowing Kiro or any MCP-compatible AI to call them directly:

Tools:
  - diagnose_accessibility(document_text, document_title)
  - transform_document(document_text, disability_profile, document_title)
  - diagnose_pdf(file_path)
  - list_disability_profiles()

Getting Started

Prerequisites

  • Python 3.11+
  • Node.js 18+
  • AWS credentials configured (~/.aws/credentials) with Bedrock access in us-east-1

Backend Setup

cd backend
pip install -r requirements.txt
python3 main.py

Server starts on http://localhost:8000

Frontend Setup

cd frontend
npm install
npm run dev

App starts on http://localhost:5173

MCP Server (Optional)

The MCP server runs via stdio transport and is configured in .kiro/settings/mcp.json. Kiro will auto-connect when the workspace is opened.

API Endpoints

Method Endpoint Description
POST /upload Upload PDF/text/URL → Ingestion Agent
POST /diagnose Run Diagnosis Agent via Bedrock
POST /transform Run Transformation Agent for a profile
GET /steering Read current steering file
PUT /steering Update steering file
POST /steering/reset Reset steering to defaults
POST /upload-and-process Chain: Ingestion → Diagnosis → Profile update

Project Structure

claro/
├── backend/
│   ├── main.py                  # FastAPI app with all routes
│   ├── mcp_server.py            # MCP server (stdio transport)
│   ├── agents/
│   │   ├── ingestion.py         # PDF/URL/text extraction
│   │   ├── diagnosis.py         # Bedrock accessibility analysis
│   │   ├── transformation.py    # Bedrock profile transformation
│   │   └── profile.py           # Steering file management
│   ├── models.py                # Pydantic models
│   ├── bedrock_client.py        # Shared Bedrock client with retry
│   ├── store.py                 # In-memory document store
│   ├── demo_data.py             # Pre-built demo documents
│   └── requirements.txt
├── frontend/
│   ├── src/
│   │   ├── pages/               # Upload, Diagnosis, Transform, Insights
│   │   ├── components/          # ProfileSelector, ScoreGauge, SteeringDisplay
│   │   ├── hooks/               # useApi, useTrace
│   │   └── utils/               # constants, documentContext, traceStore
│   └── public/
├── .kiro/
│   ├── steering.md              # Live-updating user profile
│   ├── hooks/                   # Kiro hook definitions
│   ├── settings/mcp.json        # MCP server config
│   └── specs/claro/             # Requirements, design, tasks
└── README.md

Intelligent Learning

Claro doesn't just transform documents — it learns:

  1. Subject Detection — Infers academic subject from document titles and content
  2. Profile Effectiveness — Tracks which profile produces the best score improvement for each user's content type
  3. Difficulty Trending — Monitors document complexity over time
  4. Issue Pattern Recognition — Identifies systemic accessibility issues across all scanned documents
  5. Personalized Recommendations — Suggests the most effective profile based on accumulated history

All intelligence is stored in the .kiro/steering.md file and persists across sessions.

Why This Wins

Implementation (20pts): Four-agent pipeline with clear separation of concerns, real tool use (PDF extraction, LLM reasoning, file I/O), Kiro hooks, steering file as persistent memory, MCP server exposing tools to any AI.

Innovation & Design (20pts): Every accessibility tool ever built is for content creators. Claro is for content consumers. The perspective flip is genuinely novel. Real-time agent trace, before/after split view, and live profile switching are visually distinctive.

Social Good (20pts): 3.5 million college students with disabilities. 95.9% of websites inaccessible. Students wait days for one PDF conversion. Claro eliminates that wait entirely: "3-5 business days vs. 23 seconds."

Kiro Showcase: Full .kiro/ directory with specs, hooks, steering, and MCP config. The steering file updating live during the demo is Kiro's native feature used exactly as designed.

License

MIT License — see LICENSE for details.

Team

Built for the Kiro x Cal Poly Hackathon 2026.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors