<?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: Software Sausage</title>
    <description>The latest articles on DEV Community by Software Sausage (softwaresausage).</description>
    <link>https://dev.to/softwaresausage</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F14612%2F4286c1b8-d019-4b89-aeb9-f41f6d1fe358.png</url>
      <title>DEV Community: Software Sausage</title>
      <link>https://dev.to/softwaresausage</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/softwaresausage"/>
    <language>en</language>
    <item>
      <title>A source-led research-paper workflow with Obsidian, Claude Code, LaTeX, and Codex</title>
      <dc:creator>Constantine Macris</dc:creator>
      <pubDate>Wed, 02 Sep 2026 14:48:34 +0000</pubDate>
      <link>https://dev.to/softwaresausage/a-source-led-research-paper-workflow-with-obsidian-claude-code-latex-and-codex-dd4</link>
      <guid>https://dev.to/softwaresausage/a-source-led-research-paper-workflow-with-obsidian-claude-code-latex-and-codex-dd4</guid>
      <description>&lt;p&gt;Disclosure: AI tools helped draft and edit this article. A human publisher reviewed the final text and workflow before publication.&lt;/p&gt;

&lt;p&gt;Putting four tools in a list does not make a workflow. The difficult part is&lt;br&gt;
deciding which tool owns each artifact, what the next tool may change, and what&lt;br&gt;
must still be checked by a person.&lt;/p&gt;

&lt;p&gt;This recipe uses four bounded roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Obsidian&lt;/strong&gt; keeps the source ledger, claim status, notes, and open questions
in readable Markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; works across the outline and manuscript files while material
factual claims remain tied to ledger IDs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LaTeX&lt;/strong&gt; owns the versionable manuscript, bibliography, equations, and build
warnings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex&lt;/strong&gt; acts as a separate critic of the ledger, manuscript diff, and build
log. It is not treated as evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is not automatic authorship. It is a manuscript whose claims,&lt;br&gt;
sources, build, and review trail remain inspectable.&lt;/p&gt;
&lt;h3&gt;
  
  
  Start with files, not a blank chat
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;paper-project/
├── sources/              # permitted PDFs, links, and notes
├── brief.md              # question, audience, scope, deadline, rules
├── source-ledger.md      # claim -&amp;gt; citekey -&amp;gt; verification status
├── outline.md
├── manuscript.tex
├── library.bib
└── review-findings.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can clone the starter repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Software-Sausage/recipes.git sausage-recipes
&lt;span class="nb"&gt;cd &lt;/span&gt;sausage-recipes/recipes/research-paper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Work in a private copy when the paper or source set is not public. The&lt;br&gt;
&lt;code&gt;sources/&lt;/code&gt; directory is ignored by Git, but an ignore rule is not a substitute&lt;br&gt;
for checking what your agent, sync service, and plugins can access.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Write the brief yourself
&lt;/h3&gt;

&lt;p&gt;Fill in &lt;code&gt;brief.md&lt;/code&gt; before asking a model to draft anything. State the research&lt;br&gt;
question, audience or venue, thesis, permitted sources, citation style,&lt;br&gt;
deadline, institutional AI-use rules, exclusions, and claims that require&lt;br&gt;
specialist review.&lt;/p&gt;

&lt;p&gt;If those decisions are missing, fluent prose only hides the ambiguity.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Make the source ledger the control surface
&lt;/h3&gt;

&lt;p&gt;Create one row for every material claim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| ID | Claim | Citekey | Page/section | Status | Notes |
| --- | --- | --- | --- | --- | --- |
| C-001 | ... | ... | ... | UNVERIFIED | ... |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The author—not the agent—changes &lt;code&gt;UNVERIFIED&lt;/code&gt; to &lt;code&gt;VERIFIED&lt;/code&gt; after opening the&lt;br&gt;
source and checking the cited passage. An abstract, metadata record, search&lt;br&gt;
snippet, or model summary is not source verification.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Hand the ledger and outline to the drafting agent
&lt;/h3&gt;

&lt;p&gt;Ask Claude Code to inventory only the permitted source files, build the ledger,&lt;br&gt;
and draft the argument in &lt;code&gt;outline.md&lt;/code&gt; before editing prose. Require ledger IDs&lt;br&gt;
beside material claims. Unsupported claims stay visible as questions; they do&lt;br&gt;
not get smoothed into confident paragraphs.&lt;/p&gt;

&lt;p&gt;The starter &lt;code&gt;AGENTS.md&lt;/code&gt; also tells the agent not to browse, download, upload,&lt;br&gt;
publish, or contact anyone unless the author explicitly authorizes it.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Keep the build evidence
&lt;/h3&gt;

&lt;p&gt;Draft &lt;code&gt;manuscript.tex&lt;/code&gt; and &lt;code&gt;library.bib&lt;/code&gt; from the checked outline. Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./verify.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script checks that the required artifacts exist and builds the manuscript&lt;br&gt;
when &lt;code&gt;latexmk&lt;/code&gt; is available. Before review, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./verify.sh &lt;span class="nt"&gt;--final&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final check rejects remaining &lt;code&gt;TODO&lt;/code&gt;, &lt;code&gt;UNVERIFIED&lt;/code&gt;, and &lt;code&gt;UNRESOLVED&lt;/code&gt;&lt;br&gt;
markers. Do not weaken the check to make a run green.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use a different model as a critic
&lt;/h3&gt;

&lt;p&gt;Give Codex the brief, source ledger, manuscript diff, bibliography, and build&lt;br&gt;
output. Ask it to record unsupported claims, broken references, logical gaps,&lt;br&gt;
and reproducibility failures in &lt;code&gt;review-findings.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is a critique, not independent fact verification. Two model families can&lt;br&gt;
repeat the same error. The author still opens every cited source and resolves&lt;br&gt;
each material finding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Definition of done
&lt;/h3&gt;

&lt;p&gt;The paper is ready for author review when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the manuscript compiles;&lt;/li&gt;
&lt;li&gt;bibliography links and build warnings have been reviewed;&lt;/li&gt;
&lt;li&gt;no material claim remains unverified;&lt;/li&gt;
&lt;li&gt;the review log shows each finding and resolution; and&lt;/li&gt;
&lt;li&gt;the author has confirmed the venue's authorship and AI-use rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Open-source substitutions
&lt;/h3&gt;

&lt;p&gt;LaTeX and the recipe itself are open source. If proprietary tools are a bad fit,&lt;br&gt;
test Zettlr or Logseq for Markdown notes and Aider or OpenHands for repository&lt;br&gt;
work. Treat these as substitutions to verify, not drop-in compatibility claims;&lt;br&gt;
the same fixture and final checks should be rerun after changing a tool.&lt;/p&gt;

&lt;p&gt;If you try the recipe, report the first confusing or broken step in the&lt;br&gt;
&lt;a href="https://github.com/Software-Sausage/recipes/issues/1" rel="noopener noreferrer"&gt;starter repository&lt;/a&gt;.&lt;br&gt;
Failures are the useful part of this stage.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>obsidian</category>
      <category>latex</category>
    </item>
  </channel>
</rss>
