Typed orimported textPhoto folderTarget
list

Prepare once.Organize every target.
Text, images and settings gathered by project.
Posts, lists and deletes in groups with supervision at every step.
- Tauri
- React
- Node.js
- Playwright
Typed orimported textPhoto folderTarget list

Prepare once.Organize every target.
Text, images and settings gathered by project.
- Tauri
- React
- Node.js
- Playwright
Posts, lists and deletes in groups with supervision at every step.
- Tauri
- React
- Node.js
- Playwright
One listing, many groups
One listing, the right groups.
When publishing a listing, the engine looks for groups by name and checks the ones that match the keywords, without going over the limit and without checking the same group twice. Change the words and see who gets in.
Group keywords
Exclude groups with
The groups it finds
- 1Marketplacechecked
- Compra e Venda Centrono match
- 2Repúblicas e Quartoschecked · repub
- Repúblicas, Medicinaskipped (exclusion) · medicina
- 3Republica Estudantil Nortechecked · repub
- Repúblicas e Quartosrepeated name, not clicked again
- Aluguel de Quartosno match
- 4Repúblicas Bairro Sulchecked · repub
- Desapega Geralno match
- República Mista Lesteover the limit
Review the 4 checked groups. Enter PUBLISHES · "a" aborts
The rules are the engine's (facebook.mjs): the word is compared without accents ("repub" finds "Repúblicas"); an exclusion skips the group; a name already seen isn't clicked again (a second click would uncheck it); the starting group, already checked, is kept; Marketplace goes first and counts toward the limit. Before publishing, it stops at this review. The groups here are examples.

Automation moves on. You stay in control.
Configurable intervals, duplicate checks and step-by-step mode.
Intervals between actionsDuplicate checksStep-by-step modeEach group the engine opens goes through three checks before publishing. Write a post, pick what the group page looks like and see which gate it stops at, or whether it passes.
The post
The group page
The checks, in this order
- 1Block on the page?passed
- 2Validation term?passed
- 3Post already here?passed
The lines it looks for (cleaned)
🏠 Room available to rentRoom available to rentFurnished, close to downtown, bills includedFurnished, close to downtown, bills included
Passed all three: publishes.
The rules are the engine's (facebook.mjs, selectors.mjs): first the 7 block texts (Portuguese and English), one found, everything stops; then the validation terms; last the duplicate: with 15 characters or more, it takes the first 2 lines longer than 12, strips * _ ~ # and emojis and searches the page. The texts here are examples.

Less repetition. More control.
Content, photos and targets in a supervised flow.
OrganizedprojectsHuman
reviewMonitored
execution
The engine doesn't fire away: the queue has a ceiling per run and, in step-by-step mode, it asks before each target. Without step by step, it waits a random interval. Start the queue and take the wheel.
Targets 6/8
- Group 1
- Group 2
- Group 3
- Group 4
- Group 5
- Group 6
- Group 7over the limit
- Group 8over the limit
- OK
- 0
- Error
- 0
- Skipped
- 0
Without step by step: random interval of 60 to 180 s (sped up here)
—
The real screens
The rules are the engine's (run.mjs): min(targets, limit) get in, the limit is per run, not per day; in step by step it waits for your command; without it, it draws a whole interval between min and max and counts 1 s at a time. A block stops the whole queue. The targets here are examples.
The technologies
What it is made of, piece by piece
Three parts that talk: the Tauri window with a React screen, Rust that starts the engine and relays messages, and the Node engine with Playwright, which opens the browser and does each step. Pick a piece to see what it does here and which file it is in.
7technologies, in 3 layers
Screen
Program
Engine




Desktop applicationsSmart Photo Organizer