Purpose & architecture
The source separates corpus adapters, storage and observer interfaces from a pure ranking and vector core. Signal construction, seeded randomness, scoring, density and contour modules feed the UI’s terrain and feed views. This generation supplies inspectable mathematical ranking behavior within a website experience.
A ranking score or field visualization is an application model. Its presence does not establish the consciousness of the broader research system.
This source generation
This record follows the main branch of Janady13/feedthejoe at commit 0e608a2b515a959bf35d2783428766624400ca3c. The snapshot identifies the source inspected in this audit. It is not a statement about which revision is currently running on a device.
| Field | Source record |
|---|---|
| Revision | 0e608a2b515a959bf35d2783428766624400ca3c |
| Branch | main |
| Recorded generation | Interactive corpus and ranking generation |
Recovered implementation structure
These paths locate the components and entry points represented by this build. The source register contains their inspected revisions.
- .dependency-cruiser.cjs
- README.md
- build/build.mjs
- build/embed-corpus.mjs
- build/extract-corpus.mjs
- build/identity.mjs
- build/project.mjs
- content/corpus.json
- content/manifold.json
- package.json
- src/adapters/corpus.js
- src/adapters/observer.js
- src/adapters/storage.js
- src/app/main.js
- src/core/field/contour.js
- src/core/field/density.js
- src/core/rank/random.js
- src/core/rank/rank.js
- src/core/rank/score.js
- src/core/signal/signals.js
- src/core/vector/vector.js
- src/ports/types.js
- src/ui/feed.js
- src/ui/terrain.js
- test/core.test.js
- test/field.test.js
Behavior & verification limits
A ranking score or field visualization is an application model. Its presence does not establish the consciousness of the broader research system.
Original project documentation
The following documentation is preserved as a dated source account. Claims in it retain the source’s wording and must be read alongside the implementation notes above.
feedthejoe.com
The personal site of Joseph W. Anady — software engineer, retired U.S. Army Sergeant First Class (1st Infantry Division, Iraq), founder of ThatDeveloperGuy, a service-disabled veteran-owned firm.
It is also a working recommender. The list of work reorders itself against what you actually read, and it shows you why.
What is unusual about it
The ranking is the lighting. Every entry carries an illumination value derived from its current rank, and the stylesheet spends it on colour, weight and size at once. The model's opinion arrives as light rather than as a number. Nothing is ever removed — an entry it has set aside is dimmer, not gone.
It shows its working. Every row exposes the four terms that produced its score, including the penalty. Recommenders do not usually let you see this.
Nothing leaves your machine. No cookies, no account, no telemetry, no server call. Session state lives in sessionStorage and is discarded when the tab closes. There is no endpoint to send anything to.
Semantics are precomputed. Item embeddings are generated at build time with Transformers.js and ship as a 25 KB int16 sidecar, so the browser needs no model to use the feed.
The algorithm
A faithful reduction of the published mechanics of TikTok's ranker to a corpus of a few dozen items with no server:
| Signal | Weight | Web analogue |
|---|---|---|
| completion | 1.00 | dwell ÷ estimated read time |
| rewatch | 0.85 | returning to something already read |
| share | 0.70 | copying the link |
| expand | 0.55 | opening the full piece |
| save | 0.35 | explicit save |
| contact | 1.20 | reaching the contact surface |
| skip | −0.60 | scrolling past faster than reading allows |
score(i) = w₁·Thompson(Beta(α,β) per topic) ← exploration, cold start
+ w₂·cos(interest, item) ← semantic match
+ w₃·freshness(i) − w₄·fatigue(i) ← recency, anti-repetition
Selection is Maximal Marginal Relevance, so a confident model still cannot collapse the feed into a single topic — the characteristic failure of a small-corpus recommender.
Completion is measured against estimated read time rather than in raw seconds, so a long item cannot win by being long. Dwell does not accrue while the tab is backgrounded. Skips carry real negative weight: a model that only learns from positive signals drifts toward whatever it happened to show first.
Architecture
src/core/ pure functions — no clock, no I/O, no DOM, no global random
src/ports/ contracts only; imports nothing
src/adapters/ the impure edge: fetch, storage, DOM observation
src/ui/ rendering; no business logic
src/app/ composition root — the only place wiring happens
The arrow never points from core/ outward. That is enforced mechanically by dependency-cruiser on every npm run verify, not by convention.
Because the ranker is pure and its randomness is injected, a given (corpus, state, config, nowMs, seed) always produces the same order — which is why the ordering itself can be a test fixture.
Build and verify
npm run verify # lint, architecture, cycles, tests
node build/extract-corpus.mjs .source content/corpus.json
node build/embed-corpus.mjs content/corpus.json content/embeddings.bin
node build/build.mjs # -> dist/
The build content-hashes the asset tree, subsets the variable font to the glyphs actually used (643 KB → 46 KB, both axes preserved), and pre-compresses every text asset with zopfli for nginx http_gzip_static.
Licence
MIT for the code. Prose and the body of work are © Joseph W. Anady. Archivo is licensed under the SIL Open Font License.
Equations in this build
4 linked mathematical records. Each opens its notation, interpretation and source.
The algorithm
This relation defines score(i) in the source section “The algorithm”. Evaluates oscillatory sine or cosine terms using the stated phase or frequency. Its interpretation depends on…
random · boost identity G(a)
This relation defines boost identity G(a) in the source section “random · boost identity G(a)”. It specifies the displayed relationship between the named quantities or…
random
This relation defines X ~ G(a,1), Y ~ G(b,1) in the source section “random”. It specifies the displayed relationship between the named quantities or parameters. Its interpretation…
rank · MMR
This relation defines MMR in the source section “rank · MMR”. Chooses an argument maximizing the displayed objective over the stated feasible set. Its interpretation depends on…