Reading the books…
Last 30 days views and clicks per day, settled nightly
Rides, last 30 days time out in the RC car and on the paper plane per UTC day, clocked live from the rides
Latest events
| Domain | Submitted ↓ | DR | Kind | Contact | Views | Clicks | Kisses | Paid | Evict for | Analytics | Status |
|---|
| Email ↑ | Created | Associated squares | Squares |
|---|
Inbox takedowns, questions, bugs
Loading…
Add sites
One URL per line. They land on random free cells, claimed at $0 like everyone else's.
Set a domain's kind by hand
Which slugs, and where this is used
For the ones the classifier gets wrong. Eighteen slugs: dev-tools, ai, saas, design, marketing, finance, commerce, media, social, games, personal, education, health, travel, services, utilities, community, other (other stands alone). Clicking a Kind cell in the Domains tab lands here prefilled.
The classifier
Reading the books…
How the classifier works
Runs in the Worker every ten minutes: a hundred domains still owed a verdict go to Gemini (
gemini-3.5-flash-lite) with the eighteen slugs — never-classified first, then the rows the old in-browser Gemini Nano pass left, then anything older than 180 days. A page that says nothing gets no category, just a stamp. Needs the GEMINI_API_KEY secret; without it the queue just waits.The description sweep
Reading the books…
How the sweep works
Runs in the Worker every ten minutes, right after the classifier: a hundred domains never visited get one neutral sentence for their card from Gemini (
gemini-3.5-flash-lite) — what the site does, never the brand, no slogans — newest arrivals first. Each domain is visited once; a page with too few facts keeps its website description and gets a stamp; a page that is down and has no stored description is left for a later tick. Saved text and restores are never overwritten. Needs the GEMINI_API_KEY secret; without it the queue just waits.Edit one description
Load a domain, generate a draft or write one, then save it for every square of that domain. Short, factual English: what the site does, no slogans, nothing invented.
Website description
Town description
Source used for this draft
Remove a site
Frees the square, hides the icon, logs it in the feed. Refunds (if any) are manual in Stripe.
Danger zone
How outreach works — one mail per seeded site, claim or remove links, where addresses come from
One mail per seeded site — "someone put your favicon on the wall" — with the square's 3D portrait (linked to
/<slug>, the share page for anyone who only wants to look) and two links: /<token>/claim hands over the deed on a button press, the mailed address becoming the owner email; /<token>/remove takes the square down for good on a button press (the domain is then never seeded or picked again). Addresses are found by the Worker itself — two domains every ten minutes, in the same pass that fetches a new square's favicon and description signal: the landing page and its contact / imprint / about pages, MX-checked (mx); the Monday run on GitHub (port 25 open there) confirms those mailboxes by SMTP (smtp ✓ / catch-all) and shoots portraits. Never looked at ≠ nothing found: the figures under The harvest say which. A domain is mailed once, ever; the Contact column in Domains shows ✉ sent, 🔑 claimed, 🚫 opted out. Every figure below opens: click a count to list the domains behind it, click it again for the line.On a timer …
Reading the schedule…
the book — every tick, sent or not
| When (UTC) | By | Sent | Refused | Unsure | Note |
|---|
Reading the books…
Next in line
| # | Domain | Address | Strength | Portrait |
|---|
Portrait studio
The wall, live, in this browser: a Portrait button flies it to the square, takes the picture, stores it, and this closes again. Keep the tab visible while it works (a hidden tab stops drawing).
Preview
Click Preview on a row to see the mail exactly as it would go.
Set a contact address by hand
Set by hand, the harvest never overwrites it. To test the whole loop on yourself: put your own address on one of your own domains here, then mail that one domain for real.