Back to Mukul's profile
2views

Miora

MukulMiora

Overview

LIVE DEMO — https://miora-zeta.vercel.app No signup, no install, no test credentials needed. The app ships with a demo identity so every module is populated on load. 60-SECOND TOUR 1. Launch Miora → Dashboard. Every number is computed live from the documents in the store. Nothing is hardcoded. 2. Knowledge Graph → hover any node. It isolates that node's neighbourhood; click it to see every relationship AND the AI's stated reason for inferring it. 3. Timeline → the journey reconstructed from document dates, with milestones ("first certification") detected automatically. 4. Search "show all my certificates" → structured intent, resolved as a metadata filter rather than a fuzzy guess. 5. Search "leadership experience" → semantic vector match. Finds the relevant project even though that word appears nowhere in it. TO TEST THE AI PIPELINE Click "API Key" in the sidebar and paste a free Groq key (console.groq.com/keys, takes ~30 seconds). Then upload any certificate PDF, or hit "Infer with AI" on the Knowledge Graph. No key is pre-loaded, deliberately: anything prefixed VITE_ is compiled into the client bundle and readable in DevTools, so shipping a key on a public deployment means leaking it. Your key stays in your browser's localStorage and is sent only to the provider you chose. THREE DESIGN DECISIONS WORTH KNOWING 1. It reads the file, not the filename. The common shortcut in this problem space is categorising by filename. Miora uses pdf.js to extract the real text layer. When a PDF turns out to be a scan with no text layer — which most certificates are — the page is rasterised to canvas and passed to a vision model. We chose that over bundling Tesseract WASM because vision models handle decorative certificate fonts and seals far better than classical OCR. 2. Typed relationship triples, not embedding similarity. Cosine similarity can tell you two documents are related. It cannot tell you a certificate ENABLED a project, or that an internship FOLLOWED FROM a skill. The LLM emits (source, relation, target, confidence, reason) triples instead. Triples below 35% confidence are dropped rather than drawn as fact. Rule-based edges render dashed, AI-inferred edges render solid, so you can always see which is which. 3. Hybrid retrieval, because pure vector search answers this badly. "Show all my certificates" is a filter. "Leadership experience" is a meaning search. Miora fuses category intent (0.5) + lexical overlap (0.3) + MiniLM vector similarity (0.5) + a recency nudge (0.08) rather than picking one strategy. ARCHITECTURE No backend. Parsing, 384-d embeddings (all-MiniLM-L6-v2 via Transformers.js/WASM), the graph and storage all run in the browser. The only network calls are to the LLM provider you pick. There is no server to breach because there is no server. Only two npm dependencies (d3, chart.js) — pdf.js and Transformers.js load lazily from CDN. KNOWN LIMITATIONS (stated deliberately) - Multi-page scanned PDFs: only page 1 is sent for vision reading. - Handwritten documents: vision models are unreliable here, so these are flagged "needs review" rather than silently misfiled. - localStorage caps near 5 MB. Storage degrades in stages (trim text, then drop vectors, which are recomputable) and warns you instead of failing silently. A large corpus would need IndexedDB. - The client-side API key model suits a local-first tool, not a hosted multi-user deployment — that would need a server-side proxy. Extraction confidence is surfaced in the UI on every document. When the system isn't sure, it says so rather than guessing quietly.

Gallery

5