Inspiration
I have a manual writing process. Write until I hit a hole in the draft, something I knew was missing but couldn't articulate. Paste everything into a chat window. Ask the model to fill the gap. Two patterns emerged. When I described what the gap should contain, the model chased my description into tangents. When I just said "substantiate this”, some of its sentences survived into my final drafts. My own prose was a better instruction than my instructions.
Weld turns above process into a tool.
What it does
Two panes. The left is your draft. The app never writes into it. Put the cursor where the hole is and hit Substantiate. Weld splits the draft at the cursor and sends both halves to GPT-5.6 with one job: write the passage that belongs between them, in the writer's voice, connecting into the paragraph below. The fill streams into a card on the right.
There is no insert button. You read the card, keep what earned it, and type it in yourself. Nothing enters the draft except through your hands.
There is also no field to describe what the gap should say. I tested that for months. The description of a gap is written by the part of you that is failing. That is why the gap exists. The model just goes on to elaborate the failure. The surrounding prose encodes what is missing better than you could say it.
How I built it
One long Codex session. I set the constraints: two panes, one verb, no insert button, no instruction field, streaming, localStorage, no accounts. Codex proposed the structure and wrote the code. I pushed back where it drifted toward features. Most of the work after the core loop ran was cutting scope, not adding it.
Challenges I ran into
GPT-5.6 rejected the Chat Completions stop parameter, which I was counting on to end fills at a blank line. The first working version died on that error. The fix moved the cutoff into Weld itself: the stream parser watches incoming tokens for the end marker and cuts there, with max_tokens as the backstop. The general lesson: stopping is not a model property, it is a harness property. You cannot make the model stop. You can stop listening.
What I learned
Verbs beat descriptions. "Substantiate this" outperforms any explanation of what the gap should contain.
Two walls beat one. A continuation drifts; a bridge has to arrive. Anchoring the fill to the paragraph below kills overreach better than any instruction could.
Register is contagious. Given enough surrounding prose, the model holds the writer's voice. The draft is the prompt.
What's next for Weld
A runway mode using prefill, so the model continues mid-sentence instead of answering. More verbs, but only ones that earn reuse the way substantiate did. Weld stays small. The draft belongs to the writer.
Also, correct some unintentional mistakes. Some times I used ‘US’ instead of ‘the US’ and the model repeated the same. A mistake that proved the prose holding point.
Built With
- codex
- next.js
- openaiapi
- react
Log in or sign up for Devpost to join the conversation.