Settings
Everything technical lives here so the demo stays clean. Changes are saved to this browser and take effect when you return to the demo. This is a hosted demo page, so settings persist locally between visits.
Live scoring weights
These are the ten knobs the matching engine uses. The base nine are auto-normalized to 100; co-presence is an additive bonus on top. Adjust, then head back to the demo to see the ranking re-score.
Learning & behavior
Let the demo learn each member’s taste from how they act — winks, hearts, favorites, messages, “Not interested”, and how long they view a profile — and gently re-order matches toward what they engage with. This is a small, bounded nudge applied on top of compatibility: it never changes the displayed match %, and it never hides a qualified match.
Ranking signals
Two extra, bounded re-ranking signals applied on top of compatibility — like the learning nudge, they only re-order matches. They never change the displayed match %, and they never hide a qualified match.
Regional surfacing
Dial how strongly matches surface in each area. 100% = full strength; lower it where you’re not strong yet, raise it where you are. Compatibility scores shown to members never change — this only affects which matches rise to the top and clear the surface bar.
Data source
By default the demo computes matches in your browser from bundled sample data. You can instead point it at the live PHP + MySQL backend, which runs the identical engine server-side. If the backend can't be reached, the demo automatically falls back to local scoring and shows a small notice.
Deploy / backend setup
reference ▾The matching engine ships in two forms that produce the same results: engine.js (runs in the browser, the reference covered by the test suite) and backend/engine.php (a faithful server-side port). The live demo at match.helpmeout.ai uses the PHP + MySQL backend below.
Two ways to run it
| Option | Storage | Endpoint |
|---|---|---|
| A. Static / SQLite | a single file (sdc.sqlite) — simplest, just FTP and go | backend/api.php |
| B. Live MySQL | a real MySQL database via phpMyAdmin (the live demo) | backend/api_mysql.php |
Option B — live MySQL on cPanel/HostGator
- Create the database & user (cPanel): open MySQL Databases, create a database (e.g.
sdcmatch→ becomescpaneluser_sdcmatch), add a user with a strong password, then Add User To Database with ALL PRIVILEGES. - Import the data (phpMyAdmin): select your database in the left list, open the Import tab, choose
backend/mysql/sdc_match_import.sql(schema + 500 profiles + events + groups in one file), keep format SQL, click Go. You should see tablesprofiles(500 rows),partners,events,groups_tbl, and the join tables. - Add your password: copy
backend/config.sample.phptobackend/config.phpand fill indbname,user,pass(leavehostaslocalhost). - Upload (FTP): upload the whole
backend/folder under the site document root, so the file lands at.../match.helpmeout.ai/backend/api_mysql.php. - Test: visit https://match.helpmeout.ai/backend/api_mysql.php?viewerId=1 You should get JSON with the viewer’s info and a
matchesarray (each withscore,band,distanceKm,reasons,coPresence,featured,factors).
Option A — SQLite (no DB server)
- Upload the
backend/folder via FTP; make suresdc.sqlitetransfers in binary mode. - Requires PHP 8 with the
pdo_sqliteextension (ships with most installs). - Test: https://YOUR-SUBDOMAIN/backend/api.php?viewerId=1
Useful query variations (both endpoints)
| URL | Result |
|---|---|
?viewerId=1 | Top matches for profile 1 (only 70%+ shown). |
?viewerId=1&minScore=0 | Include weaker matches too (debugging). |
?viewerId=1&picks=1 | The 5 “Daily Top Picks”. |
?viewerId=1&radiusKm=300 | Widen the distance radius to 300km. |
To point this demo at your backend, choose Live MySQL backend above and set the API base path (e.g. /backend/api_mysql.php). Full instructions are in backend/README.md.