I want to help automate part of a process for the company of a friend of mine. The company is a small construction business.
Currently they have a website, with a form that clients can fill out if they need a repair. If they fill out the form, an email is sent to a secretary who copies the content by hand onto a sheet of paper that is then given to the repair people who are sent out to the clients location to perform the work.
We have discussed together how we could optimise this process. Their webform supports webhooks, and I am considering writing a backend that receives the form and then generates a PDF that can then be given to the repair people.
But in some situations, it is necessary that the secretary and/or the clients need to provide additional details. I need some way for them to interact with my backend. However, both the secretary and clients ar non-technical users. I am thus asking if anyone has any good ideas how to setup a communication channel between non-technical users and the backend.
Note that I am primarily a (junior) python backend developer and I have barely any frontend experience. Building a custom web app would be a solution, but it would take me a lot of time. Instead, I am considering right now to have the secretary interact with a combination of (google) forms and email.
For example, the original form, filled by the client is sent via webhook to my backend. Then the backend sends an intermediary email to the secretary with the client-provided information and some form that the secretary can fill out. The contents of this form are sent via webhook (or some other way) again back to the backend, which handles it. Eventually, the final PDF for the repair people is sent via email to the secretary to distribute it.
So my idea is essentially to create a UI that is a mix of forms (for users to communicate with backend) and email (for backend to communicate with user). The advantage I see is that various form builders exist and they have plenty of features, authentication and similar should be very simple, both forms and email are intuitive to non-technical users, and development and maintenance cost of this "frontend" is very low for me.
I am asking HN to see if (1) anyone has used a similar solution and has any feedback about it, (2) anyone has another suggestion on how to approach this problem or (optionally 3) anyone knows an existing tool that already does what I am trying to do.
Tech-wise, I am planning on building the backend in Python ideally, with FastAPI and SQLAlchemy, although I am contemplating Pynecone/Reflex. I am open to using a different techstack or approaching this from a more frontend/fullstack point of view, perhaps using NextJS/Vercel, but I am far less experienced in that.
If somebody needs to edit something, let them edit the Google Doc and build a Google Docs extension that gives them a little button that lets them regenerate the PDF. Or they can just save it from the Google Doc themselves.
https://www.google.com/script/start/
The documentation is quite good.
If you want something more ready built, I think Zoho had a cheap CRM. Or maybe you can use a help desk type system like Freshdesk.
I think fundamentally this is more of a frontend and UX concern and not a backend stack question. Any stack can handle a few related tables, but you need something easy enough for your average user. Airtable and Freshdesk are OK out of the box, can be made better with some tweaking, and will probably be better than something you create from scratch with no frontend experience.
This also seems like a potential candidate for automating using some of the tools they might already have - forms, sheets, email. Forms has the ability to ask for additional info based on the previous answer (might fix the need to ask for more info).
You aren't generating an "invoice" but a work/spec sheet might follow a similar pattern. One of the first search results I found(no affiliation) https://howtogapps.com/generate-invoices-using-google-form-a...
If the additional info doesn't go there, then you shouldn't mix two separate things together.