shouldivibecodeit

Should I vibe codeAfforai?

Searches, cites, and compares uploaded research documents with AI

A citation is a claim, not a formatting flourish. Your retriever cannot tell you whether the page actually says it.

?

Their verdict, the price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.

Can you build it?asked by canivibecodeit.com ↗KINDAweekend project · multi-day
?

Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.

Should you ship it?asked by usDEMO ONLYvibe the v0, throw it away.

The honest answer

why the verdict is what it is

Upload a PDF, chunk it, embed it, answer over the top hits with a footnote — that is a real evening's work now, and the first answer it gives you with a page number attached feels like the future. The trouble is that the footnote is the product, and a footnote is a claim. Your retriever returns the chunk it thinks is closest; the model writes a fluent sentence and appends a citation to it; nothing in that chain verifies that the sentence is actually supported by the page it points at. On a well-formed article you will not notice. On a two-column PDF with footnotes, a scanned appendix and a table that your text extractor flattened into a single line, the quote is real, the page number is real, and the pairing is wrong. Afforai — now Logically — is selling exactly that boring middle: publisher-specific import that gets the metadata right, and retrieval tuned on corpora far larger than your forty PDFs. Build it for your own reading and it is a genuinely good tool. Cite it in something that matters without opening the source, and you are the story.

What actually breaks

not "if". the specific failures.

  • PDF extraction, which is where most of your accuracy goes: two-column layouts interleave, tables flatten into a single line, ligatures come out as mojibake and scanned pages come out as nothing at all
  • The citation itself, when the quoted sentence is real, the page number is real, and they belong to different chunks
  • Retrieval quality past a couple of thousand documents, which degrades quietly because you never built an evaluation set and neither does anyone else
  • Metadata, because "who wrote this and when" is a licensed dataset problem, not a regex over the first page
  • Cross-document comparison, which is the demo everyone wants and the query type naive top-k retrieval is worst at
  • The bill, the first time a re-index of the whole library runs on a paid embedding endpoint
  • Confidentiality, when the client contract or the unpublished manuscript you dropped in goes out to a third-party model API you never chose deliberately

Is that you?

the verdict is a default, not a law

ship it if
  • It is your own reading pile and you open the source before you quote anything
  • Every answer links to the page image, not just the page number, so verifying costs one click
  • The corpus is documents you own or are licensed to hold
  • You would be fine if the whole index had to be rebuilt from the original files tomorrow
don’t ship it if
  • The output goes into a brief, a filing, a paper or anything with your name and a bibliography on it, unverified
  • Other people query it and read the footnotes as checked
  • The documents are confidential and you have not established where the embedding and completion calls actually terminate
  • You are relying on it to tell you what a document does not say — absence is the one thing retrieval cannot report

If you build it anyway

the checklist, then the prompt that enforces it

  1. Keep the original files as the source of truth and treat the index as a cache you can throw away. If a full rebuild from the PDFs does not reproduce the same state, you have invented a second copy of your library.
  2. Store the byte offsets and page coordinates of every chunk at ingest, and render the citation as a link to the highlighted region of the page image. A footnote you can click is a footnote you will actually check.
  3. Build an evaluation set of thirty real questions with known answers before you tune anything. Without it, every prompt change is a vibe and retrieval quality only ever moves in the dark.
  4. Fail loudly on documents you cannot extract cleanly. A scanned PDF that silently indexes as empty is worse than a rejected upload, because the model will answer around the hole.
  5. Never let the model produce a citation string. Attach citations mechanically from the retrieved chunk's stored metadata, so a fabricated reference is structurally impossible rather than merely unlikely.
  6. Decide explicitly which provider sees the documents, and write it in the README. "Whatever the agent reached for" is how a client contract ends up in someone's training pipeline discussion.
  7. Ship export before import: full library, original files, notes and annotations, in a format a successor tool can read.
the guardrail prompt
I am building a research assistant that answers questions over my own uploaded documents and cites them. The failure I care about is a confident answer attached to the wrong page — design against that first.

1. The original files are the source of truth. The vector index is a disposable cache.
   Give me a rebuild-from-source command in the first commit and make passing it a
   precondition for any feature work.
2. Write export before search: original files, extracted text, notes and annotations out
   to a directory a successor tool can read.
3. At ingest, store for every chunk: document id, page number, character offsets and the
   bounding boxes. Citations are assembled mechanically from that metadata.
4. The model is never allowed to write a citation string. It selects from the retrieved
   chunks; the code attaches the reference. If I ask you to let it format references
   itself, refuse and explain what a fabricated citation costs me.
5. Render every citation as a link that opens the page image with the region highlighted.
   If verifying costs more than one click, nobody verifies.
6. Reject what you cannot extract. If a PDF yields under a threshold of characters per
   page, mark it failed and tell me, rather than indexing an empty document.
7. Use an established extraction library and test it against a two-column paper, a scanned
   page, a document with footnotes and one with a wide table before building any UI.
8. Build a thirty-question evaluation set with known answers before tuning chunk size,
   embedding model or prompt. Report retrieval recall on it after every change.
9. When retrieval returns nothing above the similarity floor, say "not found in these
   documents". Never let the model answer from its own weights and cite my library.
10. Tell me, before the first upload, exactly which provider receives document text and
    embeddings. If I say the documents are confidential, propose a local model instead.
11. Deliberately out of scope unless I ask again: multi-user sharing, a citation graph,
    publisher connectors and reference-manager sync. Those are the licensed-data parts
    and I cannot rebuild them; say so rather than half-building them.
paste this before you build — not after something breaks27 lines · 2203 chars

That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.

their build prompt ↗

Or don’t build it

the boring option, and the way back out

just pay for it

Your output is graded, filed, published or billed. The paid tools are buying two things you cannot assemble at home: clean bibliographic metadata under licence, and retrieval tuned against corpora vastly larger than your library. If the goal is organising rather than answering, Zotero is free, has done this for twenty years, and its plugin ecosystem will bolt an LLM onto it for you.

your exit plan, if you already built it

Keep the PDFs in a folder you control and everything derived — text, chunks, embeddings, summaries — regenerable from them. Then the exit is a directory copy. What does not regenerate is the layer you added: highlights, notes, tags and which papers you decided mattered, so store those as sidecar files next to each document rather than as rows in a database only your app understands. Bibliographic metadata should live as BibTeX or CSL JSON on disk, which is also the format Zotero will accept the day you give up and use Zotero.

prior art · someone already did this
Zotero

Mature open-source research and citation manager.

GROBID

Machine-learning parser that turns scholarly PDFs into structured metadata and references, which is the hard half of citation-grade ingest.

Onyx

Open-source RAG chat over your own documents, with connectors and a retrieval layer already built.

Questions

Is Afforai still called Afforai?

No. It rebranded to Logically during 2025 and afforai.com now redirects to logically.app. The product is the same shape — upload documents, ask questions, get answers with references, manage a library — and the entry is kept under the old slug because that is how canivibecodeit lists it and how people still search for it.

If it's only my own documents, why isn't this SHIP IT?

Mostly because of what you will do with the output. The build itself is low-stakes and reversible, and if it is a reading assistant you close after checking the source, it is close to ship-it. The reason it sits in demo-only is retrieval quality: it is impressive at forty documents and mediocre at four thousand, and you will not notice the transition because you have no way to measure it. That gap is the product you were considering paying for.

How do you actually stop a fabricated citation?

Structurally, not by prompting. Retrieve chunks, pass their text to the model, and have your code — not the model — attach the reference from the chunk's stored document id, page and offsets. The model can still write a wrong sentence, but it cannot invent a source that was never retrieved. Then link the citation to the highlighted page image so checking it is one click, because a footnote nobody can verify cheaply is a footnote nobody verifies.

did you build it?

Every week, someone ships something they shouldn’t have.

New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.

also on the regret index
MemDEMO ONLY

Semantic search over fifty notes is magic. Over five thousand it's a ranking problem you have no way to measure.

RecallDEMO ONLY

It summarises a page you will never open again. Later you cite the summary as if you read the page.

LateralDEMO ONLY

The vendor switched the lights off in 2025. Whatever you build is now the only version of this that exists.

last reviewed 2026-08-04 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice