READING
Running the batch
One model at a time, dropped before the next opens — the only reason gigabyte submissions fit in a browser tab. It stays on this computer. Stopping keeps the projects already finished.
Open an IFC model. This page counts the precast elements, works out the erection hours, and gives you the crew size.
For the whole site — every trade, week by week — open 5 · Whole site, by trade. It answers before you open a file, because it starts from your floor area and the productivity figure the Code publishes rather than from the model. The two answers rest on different evidence, and each page says which.
Nothing is uploaded. Your IFC file is opened and read inside this browser tab, on this computer. It is the real model, fully parsed — not a sample and not a preview. There is no server and no account, and no copy is kept anywhere. Close the tab and nothing of it remains.
New here?
WHAT THIS TOOL IS
How many people erect the precast in this model, inside this programme? Tabs 2 to 4. Every figure is counted from the model: the pieces, their weights, their joints, the hours they take and the crew that clears them.
How many people are on the whole site each week, and what are they doing? Tab 5. It starts from the one productivity figure Singapore publishes — Annex C Table 4, square metres of floor area per manday — turns your floor area into a total manday envelope, and lays it out over sixteen trades. The envelope is published; the split between trades is this tool’s. The page says so beside every figure and in every export.
It does not schedule the job, plan a lift, check a design against the Code, or price anything.
What comes back
READING
One model at a time, dropped before the next opens — the only reason gigabyte submissions fit in a browser tab. It stays on this computer. Stopping keeps the projects already finished.
ACROSS EVERY PROJECT
READ THESE FIRST
PROJECT BY PROJECT
Costed identically — same rates, same crane, same window — which is what makes the comparison worth anything. Open one for its full floor-by-floor page.
| Project | Files | Levels | Pieces | Tonnes | Labour-hours | Crew | Workforce | Finishes | Constrained by | Heaviest lift |
|---|
ACROSS THE PORTFOLIO
Piece count and effort routinely disagree — many planks and a few transfer beams is not mostly plank work — so both shares are shown.
| Element | Pieces | Share of pieces | Tonnes | Erection hours | Share of the hours |
|---|
WHAT THIS RESTS ON
VISUAL ANALYSIS
Every project costed at the same assumptions, largest first. The bars are the table above, drawn.
Labour demand by project estimated labour-hours
Workforce by project people on the erection face, crew size × crews
Where the hours are, by element type across every project
MANPOWER FROM THE PROGRAMME
| Step | Formula | This model | Result |
|---|
What a different duration costs in people — same model, same rates.
| Duration | Workforce | Split | Erection finishes | Note |
|---|
What actually shortens a sequenced programme — and what each lever needs to be true on site.
| Lever | Workforce | Erection finishes | Then limited by | Requires |
|---|
| Role | People | Where the number comes from |
|---|
BEFORE ANYTHING IS LIFTED
THE REPORT
Both exports are written by this tab and saved straight to your own downloads folder — nothing is sent anywhere. The JSON carries the rates, the site settings and the assumptions the figures were made with, so the estimate can be reproduced, or argued with, later.
WHAT WAS COUNTED
Not a kind this tool erects
A kind it erects, but nothing says precast
Prefabricated and craned — and deliberately not this crew
All levels containing recognised precast columns, walls, beams or slabs are listed. Select a row to inspect it. Every column is tagged with where its number comes from — IFC read from your model, ASSUMED a planning rate you can edit, DERIVED calculated from the two.
| Level IFC | Elements / lifts IFC | Weight (t) IFC ASSUMED | Connections ASSUMED | Crew DERIVED | Cycle (days) DERIVED | Labour-hours DERIVED | Target DERIVED | Crew set by |
|---|
| Figure | Source | How it is produced | What it is not |
|---|---|---|---|
| Level | IFC | IfcRelContainedInSpatialStructure → storey name; otherwise the aggregate parent's storey; otherwise Unassigned. | Not a construction sequence. Levels are not ordered by when they are built. |
| Elements / lifts | IFC | Elements classifying as precast column, wall, beam or slab, with sub-components of a counted parent removed. One element = one lift. | Not a quantity. A 6 m³ wall and a 0.3 m³ panel count the same, and untagged precast is not counted at all. |
| Weight (t) | IFC volume × ASSUMED density | NetVolume, else GrossVolume, converted to cubic metres using the project's own declared volume unit, × 2.4 t/m³. Where the model carries no volume quantity, or declares one outside the credible 0.02–40 m³ range for a single piece, the reference weight for the type is used instead (column 3.0 t, wall 3.5 t, beam 3.0 t, slab 2.5 t) and the piece is counted as assumed. A real submission model was found declaring its volumes in cubic decimetres; read as cubic metres that put its tonnage out by a factor of a thousand, which is why both the unit and the plausibility of the result are checked. | No longer decorative — weight now drives the lifting minutes, so an assumed weight is an assumed labour figure. The per-element table names the basis for every piece; check it before quoting a tonnage-sensitive result. |
| Connections | ASSUMED per type | Joints per piece by element type — column 2, wall 3, beam 2, slab 2 — times the element count. A column lands on a grouted base and meets what sits on it; a wall panel has a base joint and a stitch each side; beams and planks bear at both ends. | Not a joint take-off. IFC exports rarely carry connection objects. The count is editable, and the low/high range for each type (column 1–3, wall 2–4, beam 2–3, slab 1–3) is what the labour range is built from. |
| Labour-hours | ASSUMED rates on IFC counts and quantities | (handling + per_tonne × weight + grout × joints + hook_travel × level) per piece, summed, × reference crew / 60, plus the survey allowance and the non-productive percentage. | Not measured productivity. The shipped rates are planning assumptions calibrated to published ranges, not completed-floor outcomes from this project. |
| Range | ASSUMED | Recost at the low and high joint counts for each type, then ×0.90 and ×1.15 for residual rate uncertainty. | Not a confidence interval. It expresses two stated assumptions — joint count and rate accuracy — and nothing else. It does not widen for a poorly tagged model. |
| Crew · Crew set by | DERIVED | Project duration (default), target floor cycle, or your manual entry. The column names which one produced the row. | Not a headcount to hire against on its own — it is people on a level, before supervision beyond one, deliveries, or any other trade. |
| Cycle (days) | DERIVED | labour_hours / (reference_crew × (crew / reference_crew)^0.78 × shift_hours). | Not a sequence. It assumes the level can be worked continuously — no grout cure before props come out, no crane clash, delivery wait or weather beyond the flat allowance. |
| Workforce | DERIVED | The smallest crew from 8 to 18 whose sequenced total — every level's cycle added up, divided by the crews you declared, and never below the crane's own floor — fits the window. Every crew is the same size. | Not a site organisation chart, and not a number that can be scaled by adding crews to one tower. Levels are a precedence chain; only separate structures run in parallel. |
| Constrained by | DERIVED | Whichever of the sequenced labour days, the crane days (elements / lifts_per_shift / cranes) or the minimum practical crew is setting the finish date. | Not a bottleneck analysis. It compares three declared ceilings; it does not look at deliveries, workface readiness or access. |
| Implied floor takt | DERIVED | working_days × crews / levels. | Not a programme. It spreads levels evenly and sequences nothing within them. |
VISUAL ANALYSIS
Labour demand by floor estimated labour-hours · the selected floor is marked
Where the hours are, by element type labour-hours across every parsed floor — erection only, before the survey and the non-productive allowance
This floor’s pieces, by type
Where this floor’s hours go handling, lifting, grouting, survey and the non-productive allowance
Crew response curve diminishing returns — flat bars are crane-bound
EVIDENCE AND LIMITS
Erection rates — crew-elapsed minutes at the reference crew. Handling is per piece and does not move with weight; lifting is the part that tracks tonnage; grouting is the joint. Edit any cell to re-cost every level immediately.
| Element | Handlingmin / piece | Liftingmin / tonne | Connectionsjoints / piece | Groutingmin / connection | At reference weight |
|---|---|---|---|---|---|
| Column | |||||
| Wall | |||||
| Beam | |||||
| Slab | |||||
| Staircase | |||||
| PPVC / PBU module |
Site factors — the work that is not one piece being erected.
Where the non-productive time goes
HOW MUCH TO TRUST THIS
| Assumption | Kind | Now | Tested across | Moves | Swing |
|---|
The sequence and the tolerances below are BCA's own, from the Buildability Series — Construction Method for Precast System, section 4.2. The lifting steps are the duties the WSH (Operation of Cranes) Regulations 2011 place on the appointed rigger and signalman. Steps marked INFERRED are not in either and must be replaced with your own method statement.
How this level's erecting hands divide across the element types — a share of hours, not separate teams.
| Element | Pieces | Tonnes | Erection hours | Share of the hours | Erecting hands |
|---|
WORK BY FLOOR
| IFC GlobalId | Type | Family | Weight t | Joints | Erection min | Weight basis |
|---|
WEEKLY MANPOWER DEMAND
The crew estimator answers one trade from your model. This answers the site. It starts from the one productivity figure Singapore actually publishes — Annex C Table 4, square metres of construction floor area per manday — turns your floor area into a total manday envelope, and lays that envelope out over the programme by trade. Open Three layers, and which of them is measured at the foot of this tab for what that can and cannot carry.
THE CURVE
Every share is editable. They are renormalised to one after every edit, so raising a trade takes labour from the others rather than inventing it — the envelope does not move, only its division. Not one share is a published figure.
| Trade | Group | Share % | Mandays | Peak | On site | Gang | Basis |
|---|
Click any week to see the crew composition behind it, role by role.
Roles are apportioned from each trade’s standard gang and the residue given to its largest working role, so every column adds to the headcount beside it. The gang ratios are this tool’s, not a published establishment.
| Trade | Workers | Composition |
|---|
TAKE IT WITH YOU
Generated in this tab and saved by the browser, like every other export here. Nothing is transmitted.
Buildability is scored on design. The Code of Practice awards labour-saving points for how a building is put together, and Annex C sets an area-per-manday target — but it publishes no element labour rates. A crew size cannot be read out of a Buildability score, and this tool never tries to. It goes the other way: count what the model actually contains, price it with rates that are stated and editable, and let the programme decide the crew.
Read this before quoting any figure. This is a proof of concept: it turns a count of precast elements per building level into an indicative labour demand and floor cycle using assumed planning rates — not measured site outcomes. Every number is reproducible from the IFC alone.
piece_minutes = handling(kind) + per_tonne(kind) x weight_t + grout(kind) x connections
+ hook_travel x level_index
erection_h = SUM( piece_minutes ) x reference_crew / 60
labour_hours = erection_h x (1 + non_productive%) + survey_h_per_level
learning(n) = MAX( 0.80 , n ^ log2(learning_rate) ) n = levels this crew has erected
cycle_days = labour_hours x learning(n)
/ ( reference_crew x (crew / reference_crew)^0.78 x shift_hours )
working_days = duration_months x working_days_per_month
sequence_days = SUM over levels( cycle_days ) / crews
crane_days = total_elements / ( lifts_per_shift x cranes )
hold_days = levels x cure_hold_days / crews
erection_days = MAX( sequence_days , crane_days ) + hold_days <- crew is solved against this
Time per piece has three parts because they scale differently. Handling — hook on, sling, land, align, plumb, prop, unhook, return — barely moves with weight. Lifting does: a hoist winch runs slower under load (a Potain MD 185A does about 108 m/min light and 46 m/min on the geared-down winch), heavy pieces are inched in on approach, and rigging gets more deliberate. Grouting is the joint, and belongs to the connection rather than to the piece. Splitting them is what lets a 9-tonne transfer beam cost more than a 1.5-tonne plank instead of the same.
The reference crew is the crew the rates were observed with, not a choice about the answer — and it does not cancel. Quote a piece at 35 crew-minutes and the work content is 35 x reference_crew / 60 labour-hours, so reading a 6-person crew's rates as if they were a 10-person crew's overstates the work, and every crew derived from it, by exactly 10/6. It also anchors the diminishing-return curve: at crew = reference_crew the efficiency factor is 1, and the cycle is just the hours that crew would take. The 0.78 exponent is the falling return from adding people to one floor — from a 10-person anchor, 18 people do the work of about 15.8. State the crew your rates came from in the site factors, and read any derived crew far from it as an extrapolation.
Levels are erected in order, and that is the whole point of the last three lines. Level n+1 stands on level n, so a tower is a precedence chain: their cycles add. Adding people shortens each cycle, sub-linearly, until the workface is full at 18 — and then stops. Thirty levels cannot be erected at once, at any headcount, because twenty-nine of them have nothing to stand on yet.
Two sequence assumptions ship switched off, and stay off until someone states them. A cure and prop-release hold is elapsed time between levels — grout gaining strength, props staying in, a topping curing — and it is the one quantity here that neither a crew nor a second crane can shorten, so it is added after the MAX rather than inside it. The default of zero days is a declaration that the programme carries no hold point, not a claim that grout cures instantly; take the number from the grout's datasheet and the engineer's prop-release criterion. Repetition learning runs the other way: the unit form of the learning curve, where each doubling of the levels a crew has erected costs learning_rate of the previous one. Published construction rates sit in the 80–95% band and repetitive precast belongs at its shallow end, but the unbounded curve is wrong past the first handful of repeats — at 90% it would have the thirtieth level erected in 60% of the first level's time — so improvement is clamped at 20%. Both are assumptions about your site and your crew, never measurements from the model, and the panel says which way each one moved the answer.
Only two things genuinely run in parallel. Crews at once counts physically separate structures — another block, another tower — because that is what lets a second crew work in parallel. The tool never infers it from the model; you state how many you have, and the default is one. Cranes raise the hook ceiling. That ceiling matters: one crane placing 16 pieces a shift needs 563 shifts for 9,000 pieces no matter how many people are standing on the floor, which is why crane_days is a floor under the answer rather than a footnote. The panel names which of the three — sequence, crane, or simply not enough work — is binding.
Given all that, Crew from: project duration sweeps crew sizes from the lawful floor up to 18, and takes the smallest one whose sequenced total fits the window. If none does, it says the window is not achievable and reports the earliest finish it can reach, rather than quoting a crew that would not deliver it.
The floor is set by law before it is set by practice. Under the WSH (Operation of Cranes) Regulations 2011 nothing may be lifted until a lifting supervisor (reg 17), a rigger (reg 18) and a signalman (reg 19) have been appointed, and only a registered crane operator may work the crane (reg 5). Those are not interchangeable with erectors: MOM's Code of Practice requires the signalman to hold their line of sight and to “refrain from handling load/ rigging simultaneously when giving signal”, and the lifting supervisor to be present and to keep the operation in view. So the crew carries a lifting supervisor, a signalman per hook and riggers per hook, and only what is left over receives, aligns, plumbs and props the piece — four of them at the very least, which is the one part of this floor that is practice rather than law. At one crane and one crew that comes to 1 + 1 + 2 + 4 = 8, which is where the tested band starts. A second crane is therefore not a free lever: it brings its own signalman, its own riggers and its own registered operator, and the lever table charges for them.
IfcRelContainedInSpatialStructure, falling back to the storey of an aggregate parent. Anything unresolved is grouped as Unassigned.precast, pre-cast, prefab, PC panel, PBU or PPVC in its name, type, object type or materials.Rates are editable in the results panel, so the figures below are the shipped defaults rather than fixed constants. Minutes are crew-elapsed at the reference crew; the last column is the whole-piece figure at the assumed reference weight.
| Element | Handling min/piece | Lifting min/tonne | Joints (range) | Grouting min/joint | Reference weight | Whole piece |
|---|---|---|---|---|---|---|
| Column | 18 | 2.5 | 2 (1–3) | 5 | 3.0 t | 35.5 min |
| Beam | 17 | 2.5 | 2 (2–3) | 4 | 3.0 t | 32.5 min |
| Wall | 14 | 2.0 | 3 (2–4) | 2.5 | 3.5 t | 28.5 min |
| Slab / plank | 15 | 1.5 | 2 (1–3) | 2.5 | 2.5 t | 23.75 min |
Plus, per level: hook travel 0.2 min per level of height per lift, survey 4 labour-hours for setting out and post-installation verification, and a 15% non-productive allowance on erection time for crane wait, late deliveries, an unready workface, weather and coordination.
None of these is a measured outcome from this project, and none of them is a published rate for a Singapore residential precast crew — no such table is public. They are a defensible starting point, calibrated against what is: the shipped defaults put a whole piece at 24–36 crew-minutes, the low end of BCA's own band, which is where a repetitive floor with a settled crew belongs.
| What it anchors | Source | What it says |
|---|---|---|
| Whole-piece time | BCA, Buildability Series — Construction Method for Precast System | “Estimated time to install a typical precast element is 1/2 to 3/4 hour”, alongside the setting-out, propping, grouting and post-installation verification sequence the site factors stand for. |
| Split between handling, lifting and the joint | Time wastage of prefabricated building hoisting, E3S Web of Conferences (2024) | A staged field study of component hoisting: 227 s slinging, 279 s hoisting, 760 s positioning, 160 s unhooking, 94 s hook return — positioning dominates, and hoisting is the smaller share. |
| Why lifting scales with tonnage | Potain MD 185A H10 specification | Hoist speed falls as the load rises — about 108 m/min on the light winch against 46 m/min geared down — so a heavier piece spends longer on the hook for the same travel. |
| Hook travel per level | Derived | A 3.5 m storey at 30–60 m/min costs roughly 0.1 min each way, so 0.2 min per level per lift. |
| Sanity check on the totals | Tindall; JLC; WisDOT production rates | 6–8 intricate architectural pieces a day, 15–20 repetitive ones; 8–12 wall panels a shift; 5–8 girders a day. The defaults plus the 15% allowance land a crew at roughly 12–14 pieces a shift. |
| The crane ceiling | Tindall; JLC | 15–20 repetitive pieces a day, 8–12 wall panels a shift. The default of 16 lifts per shift per crane sits at the top of that range — the point past which more people on the floor buy nothing. |
| The lifting roles inside the crew | WSH (Operation of Cranes) Regulations 2011, reg 5(1), 17, 18, 19 | Before any lifting operation with a mobile or tower crane, the responsible person must appoint a lifting supervisor (reg 17(1)), a rigger (reg 18(1)) and a signalman (reg 19(1)); “no person shall rig up loads … unless he is a rigger appointed” (18(3)) and “no person shall give signal to the crane operator unless he is a signalman appointed” (19(3)). Only a registered crane operator may operate the crane (reg 5(1)). |
| Why the signalman is not also an erector | WSH Council / MOM, Code of Practice on Safe Lifting Operations in the Workplaces (2011, rev. 2014), 5.3.2–5.3.4 | The signalman shall “maintain his/her position so as to ensure line of sight during the controlled phase of the lift” and “refrain from handling load/ rigging simultaneously when giving signal to the crane operator” (5.3.4.2) — so the signalman is a dedicated observer, not a spare pair of hands. The lifting supervisor shall “be present during all lifting operations” and “keep within his/her sight and view of all the lifting operations” (5.3.2.3), and “may be allowed to supervise more than one lifting operation … e.g., when the two operations are side by side within close proximity” (5.3.2.2), which a separate block is not. |
| Cure and prop-release hold | Five Star; SpecChem; the project's own structural engineer | Non-shrink grouts publish strength against age, and the release of props is an engineer's decision against a strength criterion — not a figure any model carries. The tool therefore ships the hold at zero days and asks for it, rather than inventing a default that would silently lengthen every programme. |
| Repetition learning | Wright (1936); Thomas, Mathews & Ward, “Learning curve models of construction productivity”, ASCE JCEM 112(2), 1986 | Repeated units fall by a constant fraction with every doubling of the repeats; construction studies report rates in the 80–95% band and a steady state within the first several repetitions. Shipped off at 100%, clamped at 20% improvement when switched on, and never derived from the model. |
| Grout behaviour | Five Star; SpecChem | About 45 minutes of working time once mixed, with substrate preparation and pre-soaking before it. Minutes per joint are not published anywhere we could find, so the grouting rate is the residual once handling and lifting are taken out of BCA's band — the weakest number here, and the first one to replace. |
NetVolume, else GrossVolume, is used. This is the price of opening a several-hundred-megabyte model in a tab, and it is the reason a tonnage-sensitive result is worth checking against the authoring tool.Unassigned is a parsing artefact, not a floor. If an export omits spatial containment, the whole building can land in one bucket and its cycle will look absurd.Unassigned row, or a piece count far above one floor's worth, explains almost every surprising result.file.text() has to produce a single JavaScript string, and an engine caps a string at 229 − 24 characters, so anything past about 512 MB used to fail with RangeError: Invalid string length before a line of this page ran. Only the entity types a take-off reads are parsed — elements, the spatial tree, quantities, properties, materials, units — and the geometry, which is most of an IFC and none of this calculation, is stepped over. Measured on a synthetic 600 MB model: 22 seconds, 323,120 precast elements, 9.0 million geometry entities skipped, about 1 GB of tab memory. Parsing still runs on the page thread, so the tab will be busy while it works; the progress figure is real, not a spinner. Above 400 MB the page says so before it starts.