<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Siddeshwar U S</title>
    <description>The latest articles on DEV Community by Siddeshwar U S (@ussiddheshwar).</description>
    <link>https://dev.to/ussiddheshwar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Siddeshwar U S</title>
      <link>https://dev.to/ussiddheshwar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ussiddheshwar"/>
    <language>en</language>
    <item>
      <title>OPEN-WEIGHT MODELS ON A PHONE?? Meet iPDF, my lazy research companion</title>
      <dc:creator>Siddeshwar U S</dc:creator>
      <pubDate>Sun, 25 Oct 2026 03:32:25 +0000</pubDate>
      <link>https://dev.to/ussiddheshwar/open-weight-models-on-a-phone-meet-ipdf-my-lazy-research-companion-4cgf</link>
      <guid>https://dev.to/ussiddheshwar/open-weight-models-on-a-phone-meet-ipdf-my-lazy-research-companion-4cgf</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Open-weight models. On my phone. While I go for a walk.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The models run on hosted infrastructure. My phone is the reading, study and listening interface. No mobile GPU or model download required.&lt;/p&gt;

&lt;p&gt;I like the idea of reading research papers. I like the part where I have to look up the same unfamiliar term, make my own study cards, and reconstruct the explanation from three different tabs considerably less.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;iPDF: research at your own pace&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It turns a PDF or arXiv paper into an interactive edition: the original text, with explanations and study tools around it. It is also an open, versioned JSON format, so the result can exist independently of the application that generated it. The name means “interactive PDF”; the portable formats are &lt;code&gt;.ipdf.json&lt;/code&gt; and &lt;code&gt;.ipdf.html&lt;/code&gt;, rather than a new binary PDF standard.&lt;/p&gt;

&lt;p&gt;The workflow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign in with GitHub and upload a paper, or enter its arXiv ID.&lt;/li&gt;
&lt;li&gt;Choose beginner, intermediate or expert, your background, and what you want to get out of it.&lt;/li&gt;
&lt;li&gt;Let background jobs prepare the tools while you do something else.&lt;/li&gt;
&lt;li&gt;Come back to read, study, ask questions or listen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tap an underlined term for a definition. Save it to your deck. Work through flashcards. Follow a prerequisite path and mark the concepts you already know. Ask about the current section and get an answer with a supporting quotation and page reference.&lt;/p&gt;

&lt;p&gt;Or press play. Narration follows the sections, highlights the current one, and offers a simpler explanation. Walking mode gives the audio controls room to breathe. ElevenLabs provides optional hosted narration; browser speech is the fallback.&lt;/p&gt;

&lt;p&gt;The paper stays the main content. A summary is not the main output. Students, developers entering a new field, and readers who prefer listening get to spend less effort assembling a study setup before they can start learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://spacenets7.github.io/ipdf/" rel="noopener noreferrer"&gt;Project site and browser reader&lt;/a&gt;&lt;/strong&gt; — no account needed to try the authored interactive sample or open an exported JSON file locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ipdf-tvvn.onrender.com/" rel="noopener noreferrer"&gt;Full application&lt;/a&gt;&lt;/strong&gt; — GitHub sign-in, PDF/arXiv preparation, private libraries, tutor and listening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://spacenets7.github.io/ipdf/demo.html" rel="noopener noreferrer"&gt;Try the sample directly&lt;/a&gt;&lt;/strong&gt; — working glossary terms, study cards and browser narration, clearly labelled as an authored format demonstration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/RsLvIKrpon0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzghm3e3hm2902o7e9xor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzghm3e3hm2902o7e9xor.png" alt="iPDF project site with an interactive format preview" width="799" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a quick test, open the sample, tap “provenance,” save the term, answer the study card, then press &lt;strong&gt;Listen to paper&lt;/strong&gt;. To test generation, open the full app and use the arXiv example or upload a text-based PDF. Choose browser voice to avoid ElevenLabs usage.&lt;/p&gt;

&lt;p&gt;GitHub Pages hosts the reader; Python and generation run on Render. The free Render instance can take time to wake up and its temporary storage can reset. Export editions you want to keep. The prototype does not guarantee that an overnight upload will be ready in the morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/spacenets7" rel="noopener noreferrer"&gt;
        spacenets7
      &lt;/a&gt; / &lt;a href="https://github.com/spacenets7/ipdf" rel="noopener noreferrer"&gt;
        ipdf
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open iPDF 0.1 format and mobile paper reader with hosted-only generation
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;iPDF&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Read it. Question it. Take it with you.&lt;/strong&gt; An open, versioned JSON format for
interactive research papers, plus a viewer designed for a 390 px phone screen.&lt;/p&gt;
&lt;p&gt;The source paper stays the main content. Generation adds page-linked glossary
entries, study cards, charts backed by original table cells, and section narration
It does &lt;strong&gt;not&lt;/strong&gt; replace the paper with a summary.&lt;/p&gt;
&lt;p&gt;Python 3.11 · FastAPI · Pydantic · PyMuPDF · Jinja2 · stdlib SQLite · vanilla JS ·
vendored Chart.js. All inference uses a &lt;strong&gt;hosted OpenAI-compatible endpoint&lt;/strong&gt;
No GPU, model download, or JavaScript framework is required. GitHub sign-in protects private libraries and paid tools.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Full hosted app:&lt;/strong&gt; &lt;a href="https://ipdf-tvvn.onrender.com/" rel="nofollow noopener noreferrer"&gt;ipdf-tvvn.onrender.com&lt;/a&gt;.
Upload → personalized generation → study → browser or ElevenLabs listening.
The free service has temporary storage; export editions to retain them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Public static reader:&lt;/strong&gt; &lt;a href="https://spacenets7.github.io/ipdf/" rel="nofollow noopener noreferrer"&gt;spacenets7.github.io/ipdf&lt;/a&gt;
Open an exported &lt;code&gt;.ipdf.json&lt;/code&gt; file or explore the authored interactive sample
(glossary, study…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/spacenets7/ipdf" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository is &lt;a href="https://github.com/spacenets7/ipdf/blob/main/LICENSE" rel="noopener noreferrer"&gt;MIT licensed&lt;/a&gt;. It includes the &lt;a href="https://github.com/spacenets7/ipdf/blob/main/SPEC.md" rel="noopener noreferrer"&gt;format specification&lt;/a&gt;, Pydantic schema, generation plugins, viewer, mocked tests and deployment configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The open-weight model used in the live generation checks was &lt;strong&gt;&lt;a href="https://github.com/openai/gpt-oss" rel="noopener noreferrer"&gt;gpt-oss-120b&lt;/a&gt;&lt;/strong&gt;, served through a hosted OpenAI-compatible endpoint. Its upstream project uses the Apache 2.0 license. No model runs on the reader’s laptop.&lt;/p&gt;

&lt;p&gt;I separated the application into three layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PDF / arXiv
    ↓
ingest — PyMuPDF, page-tagged sections, tables and figures
    ↓
generate — glossary, flashcards, narration and table-derived charts
    ↓
iPDF 0.1 JSON — validated blocks with source references and provenance
    ↓
render — vanilla JavaScript reader, Chart.js and audio controls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FastAPI connects the workflow. SQLite stores accounts, jobs, caches and learning state. Background workers return a job ID quickly; the browser polls for progress. The renderer consumes completed JSON and never makes an LLM call.&lt;/p&gt;

&lt;p&gt;The generation client takes its endpoint, API key and model from environment variables. Glossary depth, flashcard difficulty and narration style change with the reader’s level. Each generated block records its source page, model and prompt version. Invalid blocks get up to two retries before being dropped and logged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper Instruments’ Ultramarine&lt;/strong&gt; is the optional DEEP backend for table selection and claim grounding. Charts have an additional constraint: every plotted number must match a parsed cell in the source table. If extraction fails, there is no chart. The model does not get to fill the gap with plausible numbers.&lt;/p&gt;

&lt;p&gt;The tutor builds on the same source discipline. Supported answers need an exact quotation from the selected section and a grounding check. Questions outside the available evidence receive a refusal. Familiarity and recent conversation help shape explanations; they do not retrain the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ElevenLabs&lt;/strong&gt; turns narration into cached MP3 segments when selected. Browser speech keeps the reading and sample experience usable without an audio API key. Optional speech input uses the browser’s speech service; this is not an ElevenLabs realtime Agent integration.&lt;/p&gt;

&lt;p&gt;Real usage mattered more to me than a “cheap per paper” claim without evidence. These are the recorded Ultramarine/DEEP cost components from bounded one-page checks:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Recorded DEEP cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local personalized generation&lt;/td&gt;
&lt;td&gt;$0.00601245&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployed upload → generation workflow&lt;/td&gt;
&lt;td&gt;$0.00253510&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Those figures are based on recorded usage and configured DEEP rates. They are &lt;strong&gt;not complete per-paper bills&lt;/strong&gt;: FAST pricing was not configured, and audio is separate. The deployed audio check synthesized 2,379 characters and returned a playable MP3. I have not measured a full-paper cost benchmark.&lt;/p&gt;

&lt;p&gt;The latest mocked suite has &lt;strong&gt;51 passing tests&lt;/strong&gt;, including schema validation, chart evidence, account isolation, OAuth and job recovery. Ingestion and table evidence were checked on Attention Is All You Need, BERT and ResNet. The complete authenticated generation/listening smoke check used one page; I am not presenting it as a full three-paper generation benchmark. &lt;a href="https://github.com/spacenets7/ipdf/blob/main/VALIDATION.md" rel="noopener noreferrer"&gt;Validation details&lt;/a&gt; record the scope and limitations.&lt;/p&gt;

&lt;p&gt;The interface uses a dark, quiet workspace inspired by &lt;a href="https://t3.codes/" rel="noopener noreferrer"&gt;T3 Code&lt;/a&gt;. It is implemented in original HTML/CSS and vanilla JavaScript. The architecture uses FastAPI, Pydantic, PyMuPDF, Jinja2, SQLite and vendored Chart.js. The earlier digest module is preserved in the repository; iPDF is the research-paper workflow built around the open document format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;The useful output of an AI tool should not disappear when I close its chat window.&lt;/p&gt;

&lt;p&gt;For iPDF, openness has two concrete jobs. The first is model choice. An open-weight model such as gpt-oss gives other developers access to the weights and the ability to deploy or adapt the model under its license. A closed-model API does not provide those weights. This build uses hosted inference to keep the application lightweight, but it does not hardcode a provider or model into the document format.&lt;/p&gt;

&lt;p&gt;The second is ownership of the result. Anyone can inspect the JSON, validate source references, write a different viewer, or add a generation plugin. A reader can keep a self-contained HTML edition rather than depend on an account to reopen it.&lt;/p&gt;

&lt;p&gt;Endpoint compatibility alone is not unique to open models, and hosted inference still sends source excerpts to providers. I am not claiming that generation is offline or private from those providers. The practical benefit is that the model, pipeline and output are separate things that can evolve independently. The schema and page references stay useful when the model changes.&lt;/p&gt;

&lt;p&gt;That makes iPDF something people can build on, rather than another destination their papers have to live inside.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built with assistance from &lt;strong&gt;Codex&lt;/strong&gt;, using an iterative loop: implement a step, run mocked tests, inspect real output, then check the browser at phone width. The work included the pivot from a digest to an open document format, source-table validation, hosted audio, GitHub login and the mobile reader.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/spacenets7/ipdf/commits/main/" rel="noopener noreferrer"&gt;commit history&lt;/a&gt; and &lt;a href="https://github.com/spacenets7/ipdf/blob/main/VALIDATION.md" rel="noopener noreferrer"&gt;validation log&lt;/a&gt; document the implementation and checks. A public agent-session transcript is not attached; those links are a build record, not a transcript.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;In this week’s authenticated test, one upload produced five glossary entries, three flashcards and a narration segment. A separate preparation job produced nine source-linked concepts. A question about the Transformer returned a cited answer; familiarity and conversation history survived a reload. The portable HTML and JSON downloads worked, and anonymous requests could not open the private edition.&lt;/p&gt;

&lt;p&gt;That is the payoff I can demonstrate today: I did not have to manually prompt for a glossary, copy questions into a separate deck, write a narration script, and then connect every result back to the page myself. The pipeline assembled those pieces once.&lt;/p&gt;

&lt;p&gt;I have not run a timed study or measured learning gains. The saved effort is a demonstrated workflow reduction, not an invented “hours saved” statistic. My goal is modest: let the reader spend less time preparing to understand a paper, and more time actually understanding it—even if that happens one section at a time, on a slow walk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; — the Dockerized FastAPI application runs on Render, including ingestion, hosted-generation jobs, private libraries and audio delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Ultramarine&lt;/strong&gt; — Paper Instruments’ Ultramarine is used as the optional DEEP backend for source grounding and table selection. Recorded run costs and their limits are reported above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; — optional section narration is synthesized into cached MP3 audio, with browser speech available as a fallback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt; — entering through the challenge’s listed &lt;strong&gt;GitHub Actions automation&lt;/strong&gt; option: Actions runs the mocked tests and static-reader build on pushes and pull requests. The coding assistant used was Codex; I am not claiming Copilot usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Partner tags: &lt;a href="https://dev.to/t/elevenlabs"&gt;#elevenlabs&lt;/a&gt; · &lt;a href="https://dev.to/t/render"&gt;#render&lt;/a&gt; · &lt;a href="https://dev.to/t/ultramarine"&gt;#ultramarine&lt;/a&gt; / &lt;a href="https://paperinstruments.com/" rel="noopener noreferrer"&gt;Paper Instruments&lt;/a&gt; · &lt;a href="https://dev.to/t/githubcopilot"&gt;#githubcopilot&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>elevenlabs</category>
      <category>render</category>
    </item>
  </channel>
</rss>
