Plant-O-Manager
Estate Intelligence Platform · Killara Estate, Sakleshpur, Hassan, Karnataka
What is Plant-O-Manager?
Plant-O-Manager is a mobile-first web application designed for day-to-day estate management at Killara Estate.
It covers labour attendance, harvest recording, field operations, nursery tracking, inventory, disease scouting,
soil analysis, supplier contacts, and market prices — all in one place, accessible from any device.
The app runs on Cloudflare Pages and stores data in Supabase (PostgreSQL).
It is installable as a PWA — add it to your phone's home screen for app-like access.
Estate at a Glance
| Location | Sakleshpur, Hassan District, Karnataka |
| Primary Crop | Arabica Coffee (SLN 15, S.795, 5355, PBG2, CxR, Cauvery) |
| Other Crops | Pepper, Areca |
| Zones | A (Red, White, Purple), B (Orange, Yellow, Green), C (Orange, Yellow), D (Violet), Blue |
| Season | Oct–Mar (coffee harvest year runs Oct to following Mar) |
How to Access
| Web | plantomanager.pages.dev — opens in any browser |
| Install on Android | Open in Chrome → menu (⋮) → Add to Home Screen |
| Install on iPhone | Open in Safari → Share → Add to Home Screen |
| Login | Email + password, or biometric passkey (if registered) |
Plant-O-Manager is a Progressive Web App (PWA). You can install it on your phone's home screen for full-screen, app-like access — no App Store needed.
Installing on Android (Chrome)
| Step 1 | Open plantomanager.pages.dev in Google Chrome |
| Step 2 | Tap the three-dot menu (⋮) in the top-right corner of Chrome |
| Step 3 | Tap "Add to Home screen" or "Install app" from the menu |
| Step 4 | Confirm the name and tap "Add" or "Install" |
| Result | A Plant-O-Manager icon appears on your home screen. Tap it to open the app full-screen without browser chrome. |
If you don't see "Add to Home screen", look for a banner at the bottom of Chrome saying "Add Plant-O-Manager to Home screen" and tap it.
Installing on iPhone / iPad (Safari)
| Step 1 | Open plantomanager.pages.dev in Safari (not Chrome — iOS only allows PWA install from Safari) |
| Step 2 | Tap the Share button (the box with an arrow pointing up) at the bottom of the screen |
| Step 3 | Scroll down in the Share sheet and tap "Add to Home Screen" |
| Step 4 | Edit the name if desired, then tap "Add" in the top-right corner |
| Result | A Plant-O-Manager icon appears on your home screen. Opens full-screen without Safari navigation bars. |
On iPhone, the app must be installed from Safari. Installing from Chrome or other browsers on iOS will open as a regular bookmark, not a full-screen PWA.
Offline Mode — What Works Without Internet
When there is no internet connection, an amber banner appears at the top of the app: "⚠️ You are offline — data shown may be stale".
The app continues to function in read-only mode using cached data.
| App Shell | All pages, navigation, and UI load instantly from cache — the app opens even with no signal |
| Cached Data | The last data fetched while online is displayed — you can browse blocks, view recent records, and read all modules |
| Offline Banner | Amber strip below the top header: "⚠️ You are offline — data shown may be stale" |
| Banner goes away | Automatically disappears when internet is restored — no page reload needed |
Offline Mode — What Is Blocked
All actions that write to the database are blocked while offline. Attempting any of the following shows a toast: "You are offline — changes cannot be saved."
| Blocked Action | Affected Modules |
| Save / Add new record | All modules (Labour, Harvest, Operations, Blocks, Prices, Disease, Nursery, Inventory, Suppliers, Soil) |
| Edit / Update existing record | All modules |
| Delete record | All modules |
| Mark attendance / close payroll | Labour & Attendance |
| Log harvest batch | Harvest Records |
| Change operation status | Operations Log |
Data entered while offline is not queued — there is no sync-later mechanism. Wait until you are back online before saving any records.
Cache & Update Behaviour
| First visit | Service worker installs and caches the app shell (HTML, CSS, JS) in the background |
| Subsequent visits | App loads from cache instantly; network used to fetch fresh data from Supabase |
| App update | When a new version is deployed, a toast appears: "App updated — reload to get the latest version." Reload to activate. |
| Supabase requests | Never intercepted by the service worker — all database reads and writes go directly to the network |
Three roles control what each user can see and do in the app.
| Role | Permissions |
| Owner | Full access — all modules, Settings → Users tab, change any user's role, delete records |
| Manager | Full access to all modules — add, edit, delete — except cannot manage user roles |
| Viewer | Read-only access — can view all data but cannot add, edit, or delete anything |
Roles are assigned in Settings → Users (Owner only). A new user who signs up appears with no role until an Owner assigns one.
Follow these steps when setting up the app for the first time.
Initial Setup Order
| Step 1 | Set Groq API Key — go to Settings → 🤖 AI Setup, enter your free Groq API key (get one at console.groq.com). Needed for image import and the AI assistant. |
| Step 2 | Review Zones — go to Blocks → ⚙️ Zones, verify the default zones (Red, Green, Yellow, etc.) match your estate, and add or recolour any that don't |
| Step 3 | Import Blocks — go to Blocks → 📥 Import. Upload a photo of your estate block map (AI extracts all block codes and zones automatically), or download the Excel template, fill it in, and upload it. Review the preview and click Import All. |
| Step 4 | Add Workers — go to Settings → Workers, add each worker with their wage structure |
| Step 5 | Add Inventory Items — go to Inventory, add your fertilisers, pesticides, and tools |
| Step 6 | Add Suppliers & Buyers — go to Suppliers, add your regular contacts |
| Step 7 | Start Daily Use — Labour (attendance), Harvest (yields), Operations (field work) |
Blocks and Workers must be added first — they are referenced by Labour, Harvest, Operations, Nursery, and Disease modules.
The fastest way to create all your blocks is image import: photograph your estate map or plan, upload it in Blocks → Import → Upload Image, and the AI will extract all block codes and zone names in seconds.
The home screen — a real-time summary of estate activity, weather, alerts, and market prices.
Alert Banner
If there are active disease/pest alerts, pending operations, or low-stock items, a red alert banner appears at the top of the Dashboard with counts. Tap it to navigate directly to the relevant module.
KPI Tiles — Today's Snapshot
| Workers Today | Workers marked present (not half-day or absent) for today. Tap to go to Labour & Attendance. |
| Pending Ops | Field operations with status = Pending or In Progress. Tap to go to Operations Log. |
| Disease Alerts | Active (unresolved) disease or pest sightings. Tap to go to Disease & Pest. |
| Low Stock | Inventory items where quantity on hand ≤ reorder level. Tap to go to Inventory. |
All KPI tiles are tappable — tapping navigates directly to the relevant module.
Zone Activity
Color-coded summary of all blocks grouped by zone, showing zone name and total acreage. Trial blocks are listed separately. Zones with no harvest this season are shown as inactive.
Operations Snapshot
A card showing pending and in-progress operations — type, assigned worker, block, and planned date. Tap any operation to navigate to the Operations Log.
Season Plan Progress
A progress bar showing completion of seasonal plan tasks for the current year. Shows completed vs total plan items. Only counts tasks for the current calendar year — prior-year plan data is not mixed in.
Inventory & Nursery Panel
| Low Stock Items | Items currently at or below their reorder level — item name, qty on hand, and reorder level |
| Nursery Ready | Count of nursery batches with status = Ready (available for transplanting) |
Price Ticker
Live Arabica coffee futures (₹/kg) fetched from ICE New York via Yahoo Finance — updated each time the dashboard loads. Shows the converted ₹/kg price, the raw ¢/lb futures quote, % change from previous close, and the current USD/INR rate used for conversion. For Cherry, Pepper, and Areca, prices are taken from your most recent manual entries in the Market Prices module.
Weather Widget
Shows current conditions for Sakleshpur: temperature, humidity, wind speed, and rainfall. Includes a 7-day forecast with daily activity advisories. Tap the weather card header to expand or collapse it.
Spraying
Machinery
Field Work
Planting
Harvesting
Each advisory shows ✅ Good, ⚠️ Caution, or ❌ Avoid based on wind speed and rainfall forecast.
Mark daily attendance, record activities and harvest kg, calculate wages, and track payroll.
Three Tabs
| Daily Entry | Mark attendance for today or any past date — toggle Present / Half Day / Absent per worker |
| History | Last 30 days of attendance grouped by date — shows worker count, total pay, and paid status per day |
| Pay Summary | All unpaid wages grouped by worker — grand total unpaid, Mark Paid button per worker |
Daily Entry Fields
| Date | Use ← → arrows to navigate to any past date |
| Attendance Status | Tap the worker card to cycle: Present → Half Day → Absent (colour-coded: green / yellow / grey) |
| Block | Which block the worker was assigned to (optional) |
| Activity | Harvesting, Weeding, Pruning, Spraying, Fertilising, Irrigation, Planting, Transport, General |
| Kg Cherry | Quantity harvested — used for piece-rate pay calculation |
| Override Rate | Override the default day rate or piece rate for a specific day |
Wage Calculation
| Day Rate only | Pay = Day Rate × days_fraction (1.0 = Present, 0.5 = Half Day, 0 = Absent) |
| Piece Rate only | Pay = Piece Rate (₹/kg) × kg_cherry |
| Day + Piece | Pay = Day Rate × days_fraction + Piece Rate × kg_cherry |
A live pay preview is shown on each worker card before saving.
Mark Paid in the Pay Summary tab to record that wages have been disbursed. This stamps the paid date and removes them from the unpaid total.
Record daily block-wise harvest yields for coffee, pepper, and areca. Track seasonal totals and trends.
Three Tabs
| Daily Entry | Enter yields per block for a selected date — blocks grouped by zone |
| History | Last 30 days grouped by date — shows crop tags, day totals, and per-block yields; Edit/Delete per record |
| Summary | Current season totals — stat cards by crop, top 20 blocks by yield (bar chart), crop breakdown |
Daily Entry Fields
| Date | Use ← → to navigate — only past dates and today allowed |
| Block | Select from all registered blocks (grouped by zone) |
| Crop | Coffee Cherry, Pepper, or Areca |
| Quantity (kg) | Weight harvested from that block on that day |
Season Logic
The coffee season runs October to March. A record dated October 2024 or later (up to March 2025) belongs to season 2024-25. Records from April–September belong to the following season year. The Summary tab always shows the current active season.
Log and track all field activities — spraying, pruning, fertilising, irrigation, weeding, and planting.
Log View
Shows all operations with summary counts by status (Pending, In Progress, Completed, Cancelled) and total cost of completed operations. Each card shows the operation type, block or estate-wide scope, assigned worker, dates, status badge, and cost.
Form Fields
| Operation Type | Pruning, Spraying, Fertilising, Irrigation, Weeding, Planting |
| Scope | Estate-wide (no specific block) or Specific Block |
| Block | Select if scope = Specific Block |
| Planned Date | When the operation is scheduled |
| Completed Date | When it was actually done |
| Status | Pending → In Progress → Completed / Cancelled |
| Assigned To | Select an active worker |
| Notes | Free text — inputs used, method, observations |
| Cost (₹) | Total cost of the operation — must be zero or positive (negative values are blocked) |
| Cost Notes | Breakdown of what the cost covers |
Link inventory usage to an operation in the Inventory module — log a Usage transaction and select the related operation from the dropdown.
Cost amount cannot be negative. Entering a negative value will show a validation error and block the save.
Manage the estate's cultivation blocks — the fundamental unit that all other modules reference. Zones are fully dynamic and managed within the app.
Four Tabs
| 🗺️ Map | Column-per-zone layout: each zone has a coloured header badge and a vertical stack of block pills below it. Tap any block pill to see the detail panel below the map. The estate name badge appears at the top. Map scrolls horizontally on mobile. |
| 📋 List | All blocks grouped by zone — shows crop icon, area (acres), variety, and season harvest total. Search bar filters in real time. |
| 📥 Import | Three ways to add blocks: download an Excel template, upload a filled Excel/CSV, or upload a block map photo for AI extraction (Groq Vision). All methods show an editable preview table before any data is saved. |
| ⚙️ Zones | Create, rename, recolour, and delete zones. Zones drive the map layout and the zone dropdown in all block forms. A zone can only be deleted if no blocks are assigned to it. |
Adding Blocks — Three Paths
| 📷 Image Import (AI) | Go to Import → Upload Image. Select a photo of your estate block map. The AI (Groq llama-4-scout) reads block codes and zone names, then shows an editable preview table. Correct any AI misreads, then click Import All to create all blocks at once. This is the fastest way to set up a new estate. Requires a Groq API key set in Settings → 🤖 AI Setup. |
| 📊 Excel / CSV Import | Go to Import → Download Template to get a pre-formatted .xlsx file with all columns and a sample row. Fill it in (block_code, zone_name, area, crop, variety, shade trees, trial, notes), then upload it. A preview table appears — confirm or correct, then click Import All. |
| ✏️ Manual Add | Click the ➕ Add Block button (top-right on the Map or List tab). Fill in the form and save. Use this for individual blocks or corrections after import. |
Block Form Fields
| Block Code | Short code used across all modules (e.g. A-01, B-03). Must be unique. |
| Zone | Select from the dynamic zones list. Zones are managed in the ⚙️ Zones tab. |
| Primary Crop | Coffee, Areca, Pepper, or Mixed |
| Area (acres) | Size of the block |
| Coffee Variety | SLN 15, S.795, 5355, PBG2, CxR, Cauvery |
| Shade Trees | Type of shade tree cover |
| Trial Block | Check if this is an experimental/trial plot |
| Notes | Any additional details |
Import Preview Table
Both Excel upload and image AI upload show the same editable preview before saving:
| 🟢 New | Block code not yet in the database — will be created on import |
| 🟡 Update | Block code already exists — existing record will be updated |
| 🔴 Error | Row has a validation problem (e.g. empty block code or unrecognised zone) — fix inline before importing |
| ✕ Remove | Click the ✕ on any row to remove it from the import batch |
Zone names from an image or spreadsheet are matched against the zones table — e.g. "Red Zone" matches "Red". Unrecognised zones are flagged in the preview so you can correct them or first add the zone in the ⚙️ Zones tab.
⚙️ Zones Management
| Add Zone | Enter a name, pick a colour (colour picker), choose text colour (Light/Dark), set sort order, then click + Add Zone |
| Rename Zone | Click the zone name to edit it inline — press Enter or click outside to save |
| Recolour Zone | Click the colour swatch on any zone row to open the colour picker inline |
| Delete Zone | The 🗑 delete icon is active only if no blocks are assigned to the zone. Greyed out (with tooltip) if blocks exist. |
| Block Count | Each zone row shows the number of blocks currently assigned to it |
Track and monitor commodity prices for coffee, pepper, and areca. Includes live global futures prices and manual local price entry with 30-day trend tracking.
Four Tabs
| 💹 Prices | Latest price dashboard — one card per commodity with date, market, grade, price, and 30-day % change (▲/▼) |
| 📈 History | Per-crop section with bar chart (last 12 entries) and table (last 20 entries). Tap a row to edit. |
| 🌐 Live | Real-time global futures prices — Arabica (KC=F) and Robusta (RC=F) from ICE exchanges, converted to ₹/kg using the live USD/INR rate. Includes a Refresh button and conversion methodology note. |
| ➕ Add Entry | Record a new local price observation |
🌐 Live Global Prices
| Arabica Coffee (KC=F) | ICE New York futures in ¢/lb — converted to ₹/kg using: (¢/lb ÷ 100 × USD/INR) ÷ 0.4536 |
| Robusta Coffee (RC=F) | ICE London futures in USD/t — converted to ₹/kg using: USD/t × USD/INR ÷ 1000 |
| USD/INR Rate | Live interbank rate (INR=X via Yahoo Finance) — shown in the conversion notes at the bottom of the Live tab |
| % Change | Compared to the previous trading day's close |
| Data Source | Yahoo Finance via allorigins.win CORS proxy — no API key required, ~15-minute delayed futures data |
| Cherry / Pepper / Areca | No free global API available — use Add Entry to record local farm-gate prices from Coffee Board, Agmarknet, or Spices Board |
Global futures prices are wholesale international benchmarks. Farm-gate cherry and parchment prices in Sakleshpur will be lower — use the Add Entry tab to record what you actually receive.
Price Entry Fields
| Commodity | Coffee Cherry, Parchment Coffee, Pepper, Areca |
| Grade | Varies by commodity — e.g. AB, PB, C, BL for parchment; Bold, Medium for pepper |
| Price (₹) | Price per unit |
| Unit | Per kg or per quintal |
| Market | Sakleshpur, Hassan, Mysore, Mangalore, Chikmagalur, Coffee Board, Other |
| Date | Date of the price observation |
| Price Type | Market Rate (published price) or Actual Received (what you were paid) |
| Notes | Buyer name, lot details, or other context |
Reference Links
The Prices dashboard includes direct links to Coffee Board of India, Agmarknet, and Spices Board for local market price verification. For global futures, use the 🌐 Live tab which fetches automatically.
Scout and track disease and pest sightings across blocks. Record treatments and monitor resolution.
Three Tabs
| Scout Log | All sightings as cards — summary counts (Active, Treated, Resolved), alert banner if active issues exist |
| Block Map | Visual block grid colored by worst active severity — Red = High, Orange = Medium, Green = Low, White = Clean. Tap a block to see its active issues. |
| Log Sighting | Form to record a new disease or pest observation |
Sighting Form Fields
| Disease / Pest | CBD, CLR, Black Rot, Pink Disease, Anthracnose, Stem Borer, Coffee Borer, Mealybug, Scale Insect, Leaf Miner, Top Rot, Bud Rot, Yellow Leaf, Areca Spindle, Pollu Beetle, Quick Wilt, Slow Wilt, Other |
| Type | Disease or Pest |
| Severity | Low / Medium / High |
| Scope | Estate-wide or Specific Block |
| Observed Date | When first sighted |
| Affected Area (acres) | Approximate extent of the outbreak |
| Status | Active → Treated → Resolved |
| Notes | Observations, symptoms seen |
Treatment Fields
| Treatment Applied | Copper Oxychloride, Bordeaux, Carbendazim, Propiconazole, Chlorpyrifos, Imidacloprid, Neem Oil, Trichoderma, Beauveria, Manual Removal, Other |
| Treatment Date | When treatment was applied — cannot be earlier than the Observation Date |
| Cost (₹) | Total cost of treatment |
| Treatment Notes | Dosage, method, follow-up required |
Treatment date cannot be set before the observation date. Entering an earlier treatment date will show a validation error and block the save.
Track seedling batches from sowing through germination, hardening, and transplanting. Monitor mortality and readiness.
Three Tabs
| Batches | Active batches (Growing/Ready) shown first, then Archived (Transplanted/Disposed). Each card shows variety, batch code, sown date, qty alive, mortality %, bed status, days until ready, and target block. |
| Summary | Stat cards: seedlings alive, ready to transplant, overall mortality %, transplanted total. Alerts for overdue batches. Variety breakdown and stock by variety. |
| New Batch | Form to record a new sowing or update an existing batch |
Batch Form Fields
| Variety | Coffee: SLN 15, S.795, 5355, PBG2, CxR, Cauvery · Areca: Mangala, Sumangala, Sreemangala · Pepper: Panniyur 1 |
| Batch Code | Unique identifier for this batch (e.g. SLN-OCT24-01) |
| Sowing Date | Date seeds were sown |
| Qty Sown | Number of seeds/seedlings sown |
| Bed Status | Germinated → Hardening → Ready |
| Batch Status | Growing → Ready → Transplanted / Disposed |
| Mortality Count | Number of seedlings that died — used to calculate mortality % |
| Qty Ready | Current count of healthy seedlings available for transplanting |
| Expected Ready Date | When the batch will be ready for the field |
| Destination Block | Which block these seedlings are earmarked for |
| Transplant Date | Filled when batch status is changed to Transplanted |
| Input Cost (₹) | Total cost of seeds, media, and nursery inputs for this batch |
Mortality Rate Formula
Mortality % = (Mortality Count ÷ Qty Sown) × 100
Batches with mortality > 20% are highlighted with a warning. Overdue batches (past expected ready date and still Growing) are flagged in the Summary tab.
Manage stock of fertilisers, pesticides, tools, and nursery inputs. Track purchases, usage, and reorder levels.
Two Tabs
| Stock | All items grouped by category. Each item shows qty on hand (highlighted red if at or below reorder level), reorder level, cost/unit, and supplier. Summary tiles: total items, low stock count, total stock value. |
| Transactions | Last 50 transactions — date, item, type, qty, unit cost, linked operation, notes. Color-coded by transaction type. |
Item Form Fields
| Item Name | Name of the product (e.g. Urea, Copper Oxychloride) |
| Category | Fertiliser, Pesticide, Herbicide, Fungicide, Tools & Equipment, Nursery Inputs, Other |
| Unit | kg, L, g, ml, pieces, bags, packets |
| Qty on Hand | Current stock — updated automatically when transactions are logged |
| Reorder Level | When qty on hand reaches this level the item is flagged as Low Stock |
| Cost per Unit (₹) | Standard cost — used to calculate total stock value |
| Supplier | Who supplies this item |
| Notes | Storage or handling notes |
Transaction Types
| Purchase | Stock received — adds to qty on hand. Enter unit cost to update stock value. |
| Usage | Stock consumed in field work — deducts from qty on hand. Cannot exceed current stock on hand. Can be linked to an Operation. |
| Adjustment | Manual correction — for stock-takes or damage write-offs. Positive = add, negative = deduct. |
Low Stock items also appear as an alert on the Dashboard. Set realistic reorder levels so you get timely warnings before running out.
Usage transactions that exceed available stock are blocked — the app will show "Insufficient stock — only X [unit] available" and prevent the save.
Unified directory of all suppliers (inputs) and buyers (produce). Track contact details, credit terms, and buyer price history.
Contact List
Filter by All / Suppliers / Buyers using the pill filters. Each contact card shows name, type badge, contact person, commodities, and quick action buttons.
📞 Call
💬 WhatsApp
✏️ Edit
💰 Prices (buyers only)
Contact Form Fields
| Type | Supplier or Buyer — determines which commodity list is shown |
| Name | Company or individual name |
| Contact Person | Name of the person to speak to |
| Phone / WhatsApp | Can be different numbers — WhatsApp button uses the WhatsApp number |
| Address | Location or area |
| Commodities | Suppliers: Fertiliser, Pesticide, Tools, Nursery Inputs, Other · Buyers: Coffee Cherry, Parchment, Pepper, Areca, Other |
| Last Transaction | Date and amount of the most recent transaction |
| Credit Terms | Cash/COD, Advance, Net-7, Net-15, Net-30, Net-60 |
| Payment Notes | Account details, payment preferences |
| Active | Uncheck to archive a contact without deleting |
Buyer Price History
For each buyer, log price quotes over time. Click 💰 Prices on a buyer card to view their quote history and add a new quote.
| Commodity | Coffee Cherry, Parchment, Pepper, Areca, Other |
| Grade | Depends on commodity — e.g. AB, PB, C for parchment |
| Price per kg (₹) | Quoted or agreed price |
| Date | Date the price was quoted |
| Notes | Conditions, lot size, payment terms for this quote |
Inline Field Validation
| Field | Rule |
| Phone | Must be exactly 10 digits |
| WhatsApp | Must be exactly 10 digits |
Error appears on blur (when you leave the field) with a red border. Clears automatically as you type a correction.
Store soil and leaf analysis reports from labs. View nutrient status with color-coded bars and track nutrient trends over time by block.
Two Tabs
| Soil Reports | Lab reports measuring soil pH, Organic Carbon, N, P, K per block |
| Leaf Reports | Foliar analysis reports measuring N, P, K, Calcium, Magnesium per block |
Report List Features
| Block Filter | Filter reports by block using the dropdown |
| Nutrient Status Bars | Color-coded bar for each measured value — Red = Low, Green = Optimal, Orange = High |
| Recommendations | Free-text field for lab or agronomist recommendations |
| Report Link | URL to the lab report PDF (e.g. Google Drive link) — opens in new tab |
| Trend Chart | When a specific block is selected and has ≥ 2 reports, a line chart shows nutrient trends over time. pH uses a separate right-hand axis. |
Nutrient Reference Ranges
| Parameter | Low | Optimal | High |
| pH | < 5.5 | 5.5 – 7.0 | > 7.0 |
| Nitrogen (kg/ha) | < 280 | 280 – 560 | > 560 |
| Phosphorus (kg/ha) | < 11 | 11 – 22 | > 22 |
| Potassium (kg/ha) | < 110 | 110 – 280 | > 280 |
| Organic Carbon (%) | < 0.5 | 0.5 – 1.5 | > 1.5 |
| Calcium (mg/kg) | < 500 | 500 – 2000 | > 2000 |
| Magnesium (mg/kg) | < 60 | 60 – 300 | > 300 |
Report Form Fields
| Block | Which block this report covers |
| Report Date | Date the sample was analysed |
| Lab Name | Laboratory that performed the analysis |
| File URL | Link to the scanned report (Google Drive, Dropbox, etc.) |
| Nutrient Values | Enter values from the lab report — leave blank if not reported by the lab |
| Recommendations | Notes on fertiliser adjustments or corrective actions |
Season-level summaries across harvest, labour, operations, and inventory — with charts and exportable tables. Defaults to the current coffee season (Oct–Mar).
Four Report Tabs
| 🍒 Harvest & Yield | Total kg by crop (coffee cherry, pepper, areca), monthly yield bar chart, kg per acre, and top 10 blocks by yield. |
| 👷 Labour & Payroll | Total payroll cost, cost per kg cherry, monthly payroll bar chart, activity breakdown (harvesting vs weeding vs pruning etc.), and worker-wise summary table. |
| 📋 Operations Cost | Total operations spend, completion rate %, cost by operation type (horizontal bar chart), and recent completed operations table. |
| 📦 Inventory Usage | Total purchase value vs total usage value, usage by category (fertiliser/pesticide/tools/nursery), and top 10 items by usage quantity. |
Date Range
| Default | Current coffee season — Oct 1 to Mar 31 (auto-detected from today's date) |
| Custom | Change the From / To date inputs at the top of each tab to filter any date range |
| Season logic | If today is Oct–Dec: season is Oct this year → Mar next year. If today is Jan–Sep: season started Oct last year → Mar this year. |
Reports are read-only — no data entry. All charts use Chart.js and are responsive on mobile.
A floating AI panel powered by Groq (configurable model — default: llama-4-scout-17b) with four smart modes — accessible from every page via the 🤖 Ask AI button.
How to Access
| Open | Tap the 🤖 Ask AI button (fixed, bottom-right of screen above the nav bar) |
| Close | Tap ✕ in the top-right of the panel |
| Switch mode | Use the dropdown at the top of the panel to change between the four AI modes |
API Key Setup (one-time)
| Provider | Groq — free tier, no credit card required |
| Get a key | Go to console.groq.com → sign up → API Keys → Create API Key |
| Key format | Starts with gsk_ |
| Save key | Go to Settings → 🤖 AI Setup → paste key into the API Key field → click Save Settings. The key is stored locally on your device. |
| Change key | Return to Settings → 🤖 AI Setup → paste the new key → Save Settings. Or click Remove Key to clear it. |
| Model selection | Settings → 🤖 AI Setup → choose from Llama 4 Scout 17B (default), Llama 3.3-70B, or Llama 3.1-8B |
| Token usage | Settings → 🤖 AI Setup shows today's token usage vs the 450,000 free-tier daily limit with a progress bar |
| Test Connection | Click Test Connection in AI Setup to verify the key works before using the assistant |
Four AI Modes
| 💬 Estate Assistant |
Conversational Q&A with live estate data as context. Ask anything — harvest totals, pending operations, disease alerts, current prices, low stock items, recent payroll. Maintains conversation history within the session. |
| 📈 Sell Timing |
One-tap analysis. Fetches 60 days of market price history for coffee cherry, parchment, and pepper. Returns: price trend (rising/falling/flat), sell recommendation (sell now / hold / partial sell), and reasoning with specific prices. |
| 🌱 Fertilizer Plan |
Select a block that has a soil report. AI reads the actual NPK, pH, and organic carbon values and generates a seasonal fertilizer schedule — product name, quantity per acre, timing (pre/post-monsoon / during season), and application method. |
| 📋 Season Summary |
One-tap narrative. Fetches season harvest totals, payroll, operations, disease incidents, and nursery activity. Returns a 2–3 paragraph plain-English performance report suitable for sharing with stakeholders. |
Live Data Used by the AI
| Estate Assistant | Block count, season harvest by crop, pending operations, active disease alerts, latest market prices, low-stock inventory items, recent payroll (7 days) |
| Sell Timing | market_prices table — last 60 days for coffee cherry, parchment, pepper |
| Fertilizer Plan | soil_reports — most recent report for selected block (pH, N, P, K, OC) |
| Season Summary | harvest_records, labour_attendance, operations, disease_pest_log, nursery_batches — all filtered to current season |
The AI assistant requires an internet connection — it cannot work offline. If you are offline, tapping any AI action will show a "You are offline" toast.
AI responses are generated by a language model and should be treated as advisory. Always apply your own judgement, especially for sell timing and fertilizer recommendations.
Manage workers, view payroll summaries, control user access, view the estate profile, and configure the estate profile.
Five Tabs
| Workers | Add, edit, and deactivate estate workers. Active and inactive workers shown separately. |
| Payroll | Monthly payroll summary — gross wages, deductions, net payable per worker, Mark Paid button. Use the month picker at the top to navigate to any past month. |
| Users | Owner only — view all app users and change their role (Owner / Manager / Viewer). |
| 🤖 AI Setup | Manage the Groq API key, select the AI model, view today's token usage vs the free-tier daily limit (450,000 tokens), and test the connection. Also controls the model used for block image import in the Blocks module. |
| Estate Config | Configure estate profile — identity, location, owner contact, season dates, and app defaults. Accessed via the ✏️ Edit button on the estate summary card. |
| 🌿 About | Killara Estate farm profile — estate introduction, coffee varieties, farming philosophy milestones, and post-harvest processing methods. |
🤖 AI Setup — Detail
| API Key | Password field — click Show/Hide to toggle visibility. Saved locally (browser localStorage), never sent to any server other than Groq. |
| Model | Llama 4 Scout 17B (recommended — fastest, vision-capable), Llama 3.3-70B (most capable reasoning), Llama 3.1-8B (lightest) |
| Test Connection | Fires a single test request to Groq and shows OK or error inline |
| Save Settings | Saves key + model selection and refreshes the KPI tiles immediately |
| Remove Key | Clears the saved key. Appears only when a key is stored. |
| Token Usage | Progress bar showing today's token consumption vs the 450,000 free-tier daily limit. Resets at midnight. |
The Groq API key is also used by the Block Image Import feature in Blocks → Import → Upload Image. Set the key here before attempting image-based block creation.
Worker Form — Basic Info
| Name | Full name of the worker |
| Designation | Estate Manager, Field Supervisor, Plucking Watcher, Nursery Supervisor, Irrigation Operator, Machine Operator, Store Keeper, Driver, Security, General Worker, or task-specific worker |
| Worker Type | Permanent, Seasonal, or Contractor |
| Wage Structure | Daily wages or Monthly salary |
| Payment Type (Daily) | Day Rate only, Piece Rate only, or Day + Piece |
| Day Rate (₹/day) | Base daily wage |
| Piece Rate (₹/kg) | Per-kg rate for harvesting work |
| Monthly Salary (₹) | Fixed monthly salary (if wage structure = Monthly) |
| Phone | Contact number |
| Joined Date | Start date at the estate |
| Active | Uncheck to deactivate — deactivated workers are hidden from attendance and operation forms |
Worker Form — Statutory Details
| PF Applicable | Enable Provident Fund deduction (for wages ≥ ₹15,000/month) |
| ESI Applicable | Enable ESI deduction (for wages ≤ ₹21,000/month) |
| PF Account No. | Employee PF account number |
| ESI Card No. | ESI card number |
| Aadhaar Number | 12-digit Aadhaar for statutory compliance |
A live payroll preview shows gross, deductions, net pay, and employer cost as you fill the form.
Worker Form — Bank & Emergency
| Bank Name | Worker's bank for salary transfer |
| Account Number | Bank account number |
| IFSC Code | Branch IFSC for NEFT/IMPS transfer |
| Emergency Contact | Name and phone of emergency contact person |
Inline Field Validation
| Field | Rule |
| Phone | Must be exactly 10 digits |
| Emergency Phone | Must be exactly 10 digits |
| Aadhaar Number | Must be exactly 12 digits |
| IFSC Code | Format: 4 letters + 0 + 6 alphanumeric (e.g. SBIN0001234) |
| Bank Account Number | 9–18 digits only |
Error appears below the field with red border when you leave it. Starts clearing as soon as you type a correction. Save still runs a final check on all fields.
Configure the estate profile used across all reports and displays — name, location, owner contact, physical details, crop calendar, and app defaults.
Estate Identity Fields
| Estate Name | Required — primary name used in report headers and topbar |
| Tagline / Sub-title | Optional subtitle shown below the estate name on reports |
| Location / Address | Street address or village name |
| District | District name (e.g. Hassan, Chikmagalur) |
| Established Year | Year the estate was founded |
| Owner Name | Name of the estate owner |
| Owner Phone | 10-digit contact number — validated inline on blur |
| Owner Email | Email address — validated inline on blur (email format check) |
Physical Details
| Total Area (acres) | Total registered estate area |
| Elevation (metres) | Altitude of the estate above sea level |
| Latitude | -90 to 90 — validated inline on blur |
| Longitude | -180 to 180 — validated inline on blur |
| Primary Crops | Checkboxes: Arabica, Robusta, Pepper, Areca, Cardamom, Other |
Season Dates
All dates in MM-DD format. Validated inline on blur.
| Arabica Harvest Start | MM-DD format (e.g. 10-01) |
| Arabica Harvest End | MM-DD format |
| Arabica Pruning Start | MM-DD format |
| Arabica Pruning End | MM-DD format |
| Robusta Harvest Start | MM-DD format |
| Robusta Harvest End | MM-DD format |
| Robusta Pruning Start | MM-DD format |
| Robusta Pruning End | MM-DD format |
| Pepper Harvest Start | MM-DD format |
| Pepper Harvest End | MM-DD format |
App Defaults
| Financial Year Start | Month the financial year begins (e.g. April) |
| Working Days / Week | 5, 6, or 7 — used in payroll and labour reports |
| Default Daily Wage (₹) | Default wage rate pre-filled when adding a new worker |
All phone, email, coordinates and date fields validate inline as you type — red border + tip appears on leaving a field, clears as you correct it.
Overview of the Supabase (PostgreSQL) tables used by the app.
| Table | Purpose |
blocks | Estate cultivation blocks — master reference for all modules |
zones | Dynamic zone definitions — name, colour, text colour, sort order; drives block map layout and zone dropdowns |
workers | Estate workers with wage structure and statutory details |
user_profiles | App users — display name, role (owner/manager/viewer) |
labour_attendance | Daily attendance records — worker, date, status, activity, pay |
harvest_records | Block-wise daily harvest yields — crop, kg, season |
operations | Field activities — type, block, dates, status, cost |
inventory | Stock items — category, unit, qty on hand, reorder level |
inventory_transactions | Purchase, usage, adjustment transactions per item |
nursery_batches | Seedling batches — variety, sown, alive, status, transplant |
disease_pest_log | Scouting log — disease/pest, severity, block, treatment |
contacts | Suppliers and buyers — type, commodities, credit terms |
buyer_price_history | Price quotes per buyer — commodity, grade, price, date |
soil_reports | Soil analysis — pH, OC, N, P, K per block and date |
leaf_reports | Foliar analysis — N, P, K, Ca, Mg per block and date |
market_prices | Price entries — commodity, grade, market, price, date |
alerts | System alerts — severity, category, message, resolved flag |
Row Level Security (RLS) is enabled on all tables. All queries require an authenticated Supabase session.
Statutory deduction rules and wage calculation formulas used in the Labour and Settings modules.
Provident Fund (PF)
| Employee contribution | 12% of basic wage (capped at ₹1,800/month on wage ≤ ₹15,000) |
| Employer contribution | 13% of basic wage (12% EPF + 1% admin charge) |
| Applicability | Mandatory for workers earning ≥ ₹15,000/month |
ESI (Employees State Insurance)
| Employee contribution | 0.75% of gross wages |
| Employer contribution | 3.25% of gross wages |
| Applicability | Mandatory for workers earning ≤ ₹21,000/month |
Net Pay Formula
Gross = Day Rate × days worked + Piece Rate × kg cherry
Deductions = PF (employee) + ESI (employee)
Net Pay = Gross − Deductions
Employer Cost = Gross + PF (employer) + ESI (employer)
Changelog
v2026-05-05
5 May 2026 · v2 Cutover
- Block Management redesigned — four tabs (🗺️ Map, 📋 List, 📥 Import, ⚙️ Zones) replacing the previous three-view layout
- Block map: new column-per-zone layout with coloured zone header badges and block pills; replaced flat colour grid
- Zones now fully dynamic — stored in Supabase, managed in the ⚙️ Zones tab; no longer hardcoded in the app
- Block import: upload an estate map photo and the AI (Groq llama-4-scout Vision) extracts all block codes and zones automatically; editable preview before saving
- Block import: Excel/CSV template download and upload with editable preview table (status chips: New / Update / Error)
- Manual block add: ➕ Add Block button available from both Map and List tabs
- Settings → new 🤖 AI Setup tab: Groq API key management, model selector, token usage progress bar, Test Connection, Remove Key
- AI model upgraded to llama-4-scout-17b-16e-instruct (vision-capable) as default; user-selectable model in AI Setup
- User role race condition fixed — profile fetch no longer times out silently; Settings tab bar re-renders correctly after profile load
- Architecture: all data access routed through planto-api Cloudflare Worker (Hono-based REST gateway); Supabase used for auth only
v2026-05-03
3 May 2026
- Settings → Estate Configuration: new full estate profile form (name, owner contact, location, season dates, app defaults)
- Inline field validation across all forms: phone, email, Aadhaar, IFSC, bank account, coordinates, MM-DD season dates — errors show on blur, clear on input, save re-checks all
- Suppliers & Buyers: inline phone/WhatsApp validation (10-digit check on blur)
- Inventory → Add Supplier link now correctly navigates to Suppliers module
- Help documentation updated with Estate Configuration section, validation reference, and SCOD companion app cross-link
v2026-04-22
22 April 2026 · Production Release
- Dashboard redesigned — alert banner, clickable KPI tiles, zone activity with acres, operations snapshot card, season plan progress (current year only), inventory/nursery combined panel, price ticker, collapsible weather widget
- Settings → new 🌿 About tab with Killara Estate farm profile (varieties, farming philosophy, post-harvest processing)
- Settings → Payroll month picker — navigate to any past month's payroll summary
- Inventory — Herbicide and Fungicide added as separate category options
- Inventory — Usage transactions that exceed available stock are now blocked with a clear error message
- Operations — Negative cost amount is now blocked with a validation error
- Disease & Pest — Treatment date before observation date is now blocked with a validation error
- Full QA cycle completed — 7 phases, 54 regression checks, 17 defect fixes
- Authentication switched to production mode (real Supabase login required)
App Information
| App | Plant-O-Manager |
| Estate | Killara Estate, Sakleshpur, Karnataka |
| Hosting | Cloudflare Pages |
| Database | Supabase (PostgreSQL) |
| AI Assistant | Groq API — configurable model (default: llama-4-scout-17b-16e, free tier). Manages key and model in Settings → 🤖 AI Setup. |
| PWA | Installable — add to home screen on Android (Chrome) or iPhone (Safari) |
| Offline | App shell cached by service worker — opens without internet; live data requires connectivity |
Module Status
| Module | Status |
| Dashboard | Complete |
| Labour & Attendance | Complete |
| Harvest Records | Complete |
| Operations Log | Complete |
| Block Management | Complete |
| Market Prices | Complete |
| Disease & Pest Log | Complete |
| Nursery Management | Complete |
| Inventory | Complete |
| Suppliers & Buyers | Complete |
| Soil & Leaf Reports | Complete |
| Offline Mode (PWA) | Complete |
| Reports & Analytics | Complete |
| AI Estate Assistant | Complete |
| Settings | Complete |
SCOD (Smart Crop & Operations Dashboard) is a companion analytics platform built on the same Killara Estate data. Where Plant-O-Manager is the day-to-day operational tool, SCOD provides deep analytical insight — 14 strategic analyses across yield, labour, financials, sustainability, and supply chain.
Access
| URL | scod-f39.pages.dev |
| Login | Same Supabase account as Plant-O-Manager |
| Data | Reads live from the same Killara Estate database |
| Purpose | Strategic analysis and decision support |
14 Analyses
| Executive Summary | Season KPIs at a glance — yield, labour cost, input spend, top blocks, and AI-generated narrative |
| Block Yield Map | Heatmap of harvest kg across all blocks — identify best and worst performers |
| Block Utilization | Which blocks are active, idle, or underperforming relative to their area |
| Input Spend vs Yield | Correlates fertiliser/pesticide spend per block against harvest yield |
| Sustainability Index | Chemical-free score, compost use, soil health trend, and biodiversity indicators |
| Labour Productivity | Cost per kg cherry, attendance efficiency, activity mix, and worker-level breakdown |
| Post-Harvest Efficiency | Processing method mix, moisture target adherence, and dry milling readiness |
| Estate P&L | Revenue from produce vs total costs (labour + inputs + operations) — profit per crop |
| Harvest Timing | Actual harvest dates vs estate season calendar — early/late/on-time by block |
| Inventory Risk | Days-of-stock remaining per item, reorder urgency, and spend concentration |
| Variety Portfolio | Yield and input efficiency by coffee variety — which variety earns most per acre |
| Input Benchmarks | Cost per kg benchmarked against purchase history and supplier pricing |
| Supplier Rationalization | Supplier concentration risk, price comparison across vendors |
| Quality & Compliance | Processing method split, grade distribution, and compliance tracking |
SCOD Help
For full documentation of each analysis, see the SCOD Help & Documentation page. Each analysis includes the data it reads, the metrics it calculates, how to interpret the output, and what action each analysis card recommends.
SCOD reads directly from the same Supabase database as Plant-O-Manager. Every harvest record, labour entry, inventory transaction and operation you log in Plant-O-Manager is immediately visible in SCOD.