Match
Settings & technical controls
← Back to demo

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.

Saved ✔

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.

Learn from member behavior
Use winks, hearts, favorites, messages and “Not interested” to learn taste and re-rank matches.
Use dwell time (how long a profile is viewed) i
Lingering on a profile counts as a weak interest signal feeding the taste model.
How much behavior influences ranking 30
0 = ignore behavior entirely · 100 = strongest nudge (still bounded so compatibility leads).
Saved ✔

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.

Reply-likelihood weight 25
Favor members who are active and likely to respond.
Popularity ↔ Fairness 25
Higher = give newer / less-seen members more exposure instead of always surfacing the most popular.
Saved ✔

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.

Percent strength applied to any area without its own rule. Default 100.
Default 100. Co-present members beyond it can still surface.
Saved \u2714

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.

Saved ✔

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

OptionStorageEndpoint
A. Static / SQLitea single file (sdc.sqlite) — simplest, just FTP and gobackend/api.php
B. Live MySQLa real MySQL database via phpMyAdmin (the live demo)backend/api_mysql.php

Option B — live MySQL on cPanel/HostGator

  1. Create the database & user (cPanel): open MySQL Databases, create a database (e.g. sdcmatch → becomes cpaneluser_sdcmatch), add a user with a strong password, then Add User To Database with ALL PRIVILEGES.
  2. 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 tables profiles (500 rows), partners, events, groups_tbl, and the join tables.
  3. Add your password: copy backend/config.sample.php to backend/config.php and fill in dbname, user, pass (leave host as localhost).
  4. Upload (FTP): upload the whole backend/ folder under the site document root, so the file lands at .../match.helpmeout.ai/backend/api_mysql.php.
  5. Test: visit https://match.helpmeout.ai/backend/api_mysql.php?viewerId=1 You should get JSON with the viewer’s info and a matches array (each with score, band, distanceKm, reasons, coPresence, featured, factors).

Option A — SQLite (no DB server)

  1. Upload the backend/ folder via FTP; make sure sdc.sqlite transfers in binary mode.
  2. Requires PHP 8 with the pdo_sqlite extension (ships with most installs).
  3. Test: https://YOUR-SUBDOMAIN/backend/api.php?viewerId=1

Useful query variations (both endpoints)

URLResult
?viewerId=1Top matches for profile 1 (only 70%+ shown).
?viewerId=1&minScore=0Include weaker matches too (debugging).
?viewerId=1&picks=1The 5 “Daily Top Picks”.
?viewerId=1&radiusKm=300Widen 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.