Custom Estimator App

Hey all,

First off I'm not a developer but I know enough to stumble my way through and a low-code tool like Retool seemed like a good place to start for building some internal processes for my construction company.

I am trying to create an estimation tool using Retool that would allow my to do pull "items" from a table that are then totaled for the estimate total.

This is a simple example of what I'm trying to make happen: Invoice generator | Make your invoice in seconds

It seems simple but it has proven challenging to find an app that works for us...mainly because they all want to charge for sending invoices but this tool would be used only internally.

The important thing is that the data for each item is pulled from a table but then can be edited (at least the price and quantity) of the item to help generate an accurate estimate. It doesn't look like there is a repeater field option in Retool so I wanted to see if the community had any input or examples that I might be able to look at and mimic.

Thanks in advance!

Hey @ironandtimberco,

I'm a door sub out of SoCal we have been building for about 4-6 months to move all our internal processes into retool. Estimating for us (unfortunately) is very detailed and its probably the hardest part about the whole system we are building. We have essentially a "Procore" already built out with jobsite photos and mobile users who can pull jobsite information and addresses and such. As well as a chat system, file storage, basic pricing pages and such as well as the ability to generate cut sheets. I would highly suggest starting with something like that so you can experience building before you try to dive into estimating. There's a little bit of coding knowledge you'll need to acquire along the way but the more you build in retool the faster you'll learn.

That being said if your estimating is more basic then dive right in... but we built the system so that when we are awarded the contract all our submittals and everything are a button click away.

Good luck man!

PS: Start out with Retool Database, store your "Items" that you want to pull from. Drop a table component into an app and add a custom button field to click which will "Add" it into a list view (this is the repeater I think you mentioned) through a temp state, then make some queries to edit the temp state as you see fit and "Save" the new temp state into a different database and/or just output the estimate to whatever form you intended to send it in.

2 Likes

Thanks @stevenhdsdoor! This will help point me in the right direction. I really appreciate it!

No worries man.

Without the background in coding/development you will run into some frustration points... even those of us with a little background run into it often. Use this forum for help. Everyone's super responsive, especially to new people. Before ChatGPT I also would have suggested google/stackoverflow for any specific coding questions. Now... just ask ChatGPT haha.

Push through the walls though, you'll get there eventually. The app as it stands has cut out the need for us to hire two additional people at least. It's streamlined the project management/estimating to a point where one person can do the work of at least two if not more.

1 Like

That's awesome. I've been in web development for years but databases and queries are pretty new to me so I've definitely been struggling. I've got a similar hope that the investment of time and learning Retool can help us streamline and save time and money in the future! Thanks again.

1 Like

Thanks for sharing, @stevenhdsdoor!

I agree, the listview will likely come in handy! Let us know as questions come up :sunglasses:

Hey @Tess ,

I'm making some progress with the listview component. Something I'm bumping in to and haven't yet resolved is chaining values from an "item" based on the item chosen in a select.

I have the select populating by mapping based on query but I'm not sure how to populate the cost field based on the item chosen in the select field. I'll try to show you what I mean in the screenshot below.

I'd like the value of the cost to be set based on the item chosen in the select which is pulled via my table.

I hope that all makes sense. Let me know if I can provide any other information that would help.

Hi @ironandtimberco

Thanks for reaching out!

It may be a bit dependent on your data source, but you should be able to leverage the magic variable, i.

Here's an example:

{{query1.data.filter(x=>x.id === listView1.data[i].select1)[0].first_name}}

Helpful tool to use for populating data from selection is View State

Select the select box, view state
Look through the select’s object state and find the one that shows your select box’s value. That will be the variable you use to target select’s data in your cost box

1 Like