You are setting the variable id to be a query:
LET id = SELECT ...
Therefore the query will run each time the variable id is accessed. The variable contains a lazy query which can be thought of as an array of dicts so you need to access the row by index and then a column.
Try to first materialize the query
LET id <= SELECT .. AS HuntId FROM ....
Then use it (assuming your artifact returns one row)
SELECT * FROM source(... hunt_id = id[0].HuntId)
Or if your artifact returns multiple rows you can use foreach()
SELECT * FROM foreach(row=id,
query={
SELECT * FROM source(hunt_id=HuntId)
})
Here are some pointers