Index on an input value without saving it to a column?
Postgres supports indexes on expressions so if the value you want to index can be computed from other values in the row this will work (assuming the queries you are using a written in a way that the query planner can see the use for the index). See https://www.postgresql.org/docs/10/static/indexes-expressional.html

For more complex requirements a materialised view might be required, though these appear to need "manual" updates via REFRESH MATERIALIZED VIEW which might make them imprctical depending on your need.



From your later edit:


  or I have to create a view and remember to use that for reads but not for writes


You can use "INSTEAD OF" triggers to make views like this appear to be directly writable, though of course you need to be careful of performance issues if the data is written to often.