The AI Powered Feedback Aggregator for the Supabase 2022 Hackathon
The project is available at feedbackcentral.io, any pull request also has an automatically generated preview URL.
Please look at the website/repository for more information about usage of the project
All of our data is stored in the Supabase hosted PostgreSQL using RLS to protect the data from bad actors.
We have a couple functions in plpgsql:
public.regen_integration_keypair
, this uses pgcrypto to generate a keypair used for validation of requests. It returns the private key and that is the only time it can ver be exposed as we then store the public key as a hex string in the databasepublic.???
This function is used by pg_cron to asynchronously call the ingest function with the relevant headers which are signatures created by pg_crypto
We support magic links and Twitter OAuth, this is managed by GoTrue from Supabase. This links into the RLS system and the permissions for organizations/teams
We have 2 major edge functions:
classify_feedback
This function takes in the id for a piece of feedback and sends that off to OpenAI to classify it, once it has been classified the response is sent back as a response and persisted into the database so it dosen't need to be fetched again.
ingest
This function is run on a cron job or by an integration wanting to record. This function uses a public/private key signature system to validate the request is valid.
img src="https://github.com/harryet.png" width="96" height="96"/ | img src="https://github.com/olyno.png" width="96" height="96"/ | img src="https://github.com/VictorPeralta.png" width="96" height="96"/ |
---|---|---|
a href="https://github.com/HarryET"HarryET/a | a href="https://github.com/Olyno"Olyno/a | a href="https://github.com/VictorPeralta"VictorPeralta/a |
a href="https://twitter.com/TheHarryET"@TheHarryET/a | a href="https://twitter.com/OlynoWorker"@OlynoWorker/a | a href="https://twitter.com/PeraltaDev"@PeraltaDev/a |