Bolt job data feed
Ship a job board on Bolt without writing a scraper.
Bolt Cloud databases are Supabase-backed PostgreSQL, so Jobo writes to them over the standard Postgres wire protocol — the same canonical table, upsert semantics, and 15-minute incremental sync as any other Postgres destination. Build the front end in Bolt, point the feed at its database, and the jobs table stays current on its own.
- Sync
- Incremental, every 15 min
- Deduplication
- Upsert on job ID
- Pipelines
- Not supported
- Credentials
- AES-256 at rest
Connection configuration
The fields Jobo collects to reach your Bolt instance.
hoststringrequiredSession pooler host from Supabase (Connect → Session pooler) once your Bolt database is claimed.
portnumberrequired5432 for the session pooler (recommended), 6543 for the transaction pooler.
databasestringrequiredTarget database name. Defaults to "postgres".
schemastringTarget schema, must already exist. Defaults to "public".
tablestringTarget table, created automatically. Defaults to "jobs".
usernamestringrequiredpostgres.<project-ref> when connecting through the pooler.
passwordstringrequiredDatabase password from Project Settings → Database. Encrypted at rest with AES-256.
ssl_modeselectSSL mode: require (default), verify-ca, verify-full.
delete_expired_jobsbooleanDelete expired jobs (default). Disable to keep them with an expired_at timestamp.
{
"host": "aws-0-eu-central-1.pooler.supabase.com",
"port": 5432,
"database": "postgres",
"schema": "public",
"table": "jobs",
"username": "postgres.your-project-ref",
"password": "••••••••",
"ssl_mode": "require",
"delete_expired_jobs": true
}How to sync jobs to Bolt
One-time setup. After this, the feed maintains itself.
- 1
Claim your Bolt database in Supabase
Bolt does not expose a connection string for a database it still manages for you. In your Bolt project open Database → Advanced and choose 'claim your database in Supabase'. This hands the underlying Postgres instance to a Supabase project you control, which is what gives you external credentials. Alternatively, connect a Supabase project you already own — do this before your app holds data you care about, since Bolt warns it replaces the current connection.
- 2
Copy the session pooler credentials
In the Supabase dashboard open Connect → Session pooler and copy the host, port, database, and username. The password lives under Project Settings → Database. Prefer the pooler host — the direct db.<ref>.supabase.co host is IPv6-only.
json{ "host": "aws-0-eu-central-1.pooler.supabase.com", "port": 5432, "database": "postgres", "username": "postgres.your-project-ref" } - 3
Point the feed at a dedicated table
Use a table your Bolt app only reads from, such as public.jobs. Jobo creates it on first sync and upserts on job ID, so re-running a push updates rows in place. Force resync drops and recreates this table, so it must not be one your app writes to itself.
- 4
Read it from your Bolt app
Once the first push completes it is an ordinary Postgres table in your project. Query it through the Supabase client your Bolt app already uses, or over the REST API Supabase generates for it.
javascriptconst { data } = await supabase .from('jobs') .select('title, company, locations, apply_url') .order('date_posted', { ascending: false }) .limit(20)
Common issues
What actually goes wrong when connecting Bolt, and the fix.
There is no connection string anywhere in the Bolt database settings.
That is expected while Bolt still manages the database for you. Claim it in Supabase (Database → Advanced) or connect your own Supabase project — either one produces the pooler credentials this destination needs.
Connection times out or the host fails to resolve.
You are probably using the direct db.<ref>.supabase.co host, which is IPv6-only. Switch to the session pooler host on port 5432.
Authentication fails with an otherwise correct password.
Through the pooler the username is postgres.<project-ref>, not plain postgres. Copy it verbatim from Connect → Session pooler.
The table your Bolt app wrote to keeps getting wiped.
Force resync drops and recreates the configured table by design. Point the feed at a dedicated table and have your app read from it rather than share one.
Best practices
- Claim the database in Supabase before building on top of it — migrating later risks data loss.
- Give the feed its own table and let your Bolt app read from it, never share a table your app writes to.
- Keep ssl_mode at require or higher; the pooler terminates TLS so it costs nothing.
- Use location and source filters on the feed so you sync only the jobs your app renders.
- Index the columns you sort and filter on — the feed creates the table, not your query plan.
Other destinations
Start syncing jobs to Bolt
Connect the destination, pick your filters, and let the feed run.