-
-
Admins connect their own Salesforce org through App Home 1
-
Admins connect their own Salesforce org through App Home 2
-
Real time events triggering alerts
-
Natural language querying Slack data without external storage
-
Field Worker onboarding done through 9 Slack canvases
-
Natural language with local language querying Slack data
-
Natural language querying of Salesforce data through MCP server
Nutrition Agent
Field to data. Data to action. Action to healthier children.
Inspiration
Malnutrition in Indian children is not simply about food. Jagruti, a community led NGO in rural Karnataka, India, has spent years understanding that a child's nutritional status is shaped by everything around them, the mother's education and health, family income, hygiene and toilet usage, water treatment, and how much time parents spend with their children. This led to an extensive survey format of 70 questions across 10 aspects of a child's life and 15 areas where parents can be counseled.
Jagruti trained community members as field workers to visit families, collect data, and conduct counseling sessions, video demonstrations, and cooking sessions. Previously unidentified severe malnutrition cases came to light and were given priority treatment. However everything was done manually on paper. So we built a solution. An Android app for the field workers to conduct surveys and a dashboard to view data and show analytics. Almost all the communication such as sharing experiences, issues faced and even attendance, happened over Whatsapp. Qualitative observations disappeared into chat history.
Nutrition Agent was built to solve this as one single intelligent platform designed around the real constraints of the people using it.
What it does
Nutrition Agent is a unified field intelligence platform built on Slack and Salesforce, eliminating the need for multiple disconnected tools. It is made up of two assistants working side by side in the same Slack workspace: Slackbot, for natural language conversation, and Nutrition Agent (nutritionbot), for structured commands and translation.
Slackbot lives in direct messages. Field workers and coordinators DM it with questions in Kannada or English, and it uses the Salesforce Hosted MCP Server integration to pull live data and answer in plain language, without anyone needing to open a dashboard or learn a query syntax. It can also mine Slack conversations and give appropriate, structured responses on related queries.
Nutrition Agent (nutritionbot) lives in channels. It is built with Bolt for JavaScript and responds to slash commands for structured actions, and it automatically translates messages from Kannada to English in any channel it is added to, so coordinators can follow field conversations regardless of language. It also sends alerts to appropriate Slack channels whenever a severely malnutrioned child is added to Salesforce.
Slackbot: natural language querying
Coordinators and field workers DM Slackbot directly with questions in Kannada or English. Slackbot uses the Salesforce Hosted MCP Server to retrieve live Salesforce data, respecting field level security and each user's permissions, and responds in the same thread. Field workers only see data from their own assigned projects (This feature has been disabled so that judges can act as both field workers and coordinators). This same conversational layer also powers qualitative field intelligence mining: using Slack's Real Time Search API, Slackbot can also mine the chat history living in Slack itself, searching months of field worker observations on any theme and returning a structured, synthesised answer grounded in actual field worker language, not just structured Salesforce data.
Nutrition Agent: slash commands and translation
Coordinators and field workers use Nutrition Agent's slash commands directly in a channel:
- /project-status and /reports, to pull structured status and analytics reports live from Salesforce.
- /baseline and /endline, to create baseline and endline survey records.
- /counselling, to log a counselling session.
Nutrition Agent also applies automatic Kannada to English translation, using Sarvam AI, to messages posted in any channel it is added to, so field workers can write naturally in their own language while coordinators read along in English.
Nutrition Agent also sends timely alerts whenever a severely affected child is added to Salesforce. As soon as a SAM or SEVERELY STUNTED/UNDERWEIGHT classification is recorded, Nutrition Agent posts the alert to the right channel, so coordinators never have to go looking for it.
Shared, always on capabilities
One capability runs continuously in the background, regardless of which assistant a person is talking to:
- Automated observation summarisation. Field workers post daily experiences in plain language every evening. An Agentforce agent synthesises these into a structured narrative and saves it to Salesforce as a permanent record, replacing manual collation.
How we built it
Nutrition Agent bridges the Salesforce and Slack ecosystem through a lightweight server hosted on Railway, keeping infrastructure minimal and fully managed.
Salesforce is the system of record, housing Questions, Visit, Child, and Field Summary records across multiple data dimensions per child, from anthropometric measurements to maternal health, hygiene, income, and cultural practices.
Salesforce Hosted MCP Server exposes Salesforce data securely to AI clients, respecting field level security and user permissions natively. This is what Slackbot uses to answer natural language questions.
Agentforce is the AI orchestration layer. It receives questions when a person DMs Slackbot, decides whether to query Salesforce structured data or search Slack conversational data, and returns a synthesised answer.
Salesforce Apex Trigger monitors the Visit object for SAM/SEVERELY_UNDERWEIGHT/SEVERELY_STUNTED classifications. When a child is flagged as SAM/SEVERELY_UNDERWEIGHT/SEVERELY_STUNTED, it reads the Slack bot token and target channel from a Custom Metadata record and triggers the Nutrition Agent to post a real-time alert directly to the configured Slack channel.
Slack's Real Time Search API gives Agentforce secure, query based access to field worker messages without storing Slack data externally, respecting existing channel permissions throughout.
Slack Canvases are the onboarding and training layer, made up of nine navigable canvases covering field work training, health training, tools training, and daily responsibilities. We have written a separate canvas for the judges of this Hackathon.
The Nutrition Agent server is built in Node.js with Bolt for JavaScript and deployed on Railway. It connects via Socket Mode with no public URL required, handles the Nutrition Agent slash commands (/project-status, /baseline, /endline, /counselling, /reports), hosts a per workspace admin setup UI in App Home, and applies automatic Kannada to English translation using Sarvam AI to messages in any channel it is added to.
Multi-tenancy is handled through a PostgreSQL database on Railway. Every workspace gets an isolated row in slack_workspace_configs keyed by team_id. Admins connect their own Salesforce org through App Home, credentials are never shared across workspaces, and all credentials are encrypted at rest with AES-256-GCM. Any NGO, anywhere, can install Nutrition Agent and Slackbot, connect their Salesforce org, and have a fully isolated instance running within minutes.
Challenges we ran into
Connectivity reality in the field. We were unable to get Slack to work in remote villages where connectivity is a privilege. So we had to rework the Android app to be used in such areas. It collects data offline and syncs it to Salesforce whenever the phone gets network connectivity. Designing a system that works across Slack when online and the Android app offline, without requiring workers to re-enter data, required careful architecture and clear communication in training materials, and was quite a challenge.
Qualitative data has no schema. Field worker observations written in their own words about everything from a flooded road to a mother's reluctance to discuss her pregnancy had no structure. Designing prompts that synthesise this reliably without hallucinating or losing nuance required significant iteration. -> The feature where we save the summaries to Salesforce has been disabled for now as we felt anthropic api subscriptions can be pretty expensive for NGOs working in rural areas. We can still get the details from Slackbot by mining channel history.
Keeping field workers at the centre. Every design decision, from the onboarding canvases to the tone of Slackbot's and Nutrition Agent's responses, had to be made with the reality of community members navigating a new tool in demanding field conditions, not the convenience of the technology.
Flat organisational structure. Jagruti operates without hierarchies. Designing alerting, escalation, and access controls for a flat, trust based team required rethinking the default assumptions built into most enterprise software.
Splitting responsibility across two assistants. Deciding what belonged in Slackbot's conversational DMs versus Nutrition Agent's slash commands, and making that split feel intuitive rather than confusing to a first time user, took several rounds of testing with actual field workers.
Accomplishments that we're proud of
Eliminating three platforms with one. Field workers now do everything from a single Slack workspace, split naturally between DMs with Slackbot and slash commands to Nutrition Agent. The Android app remains available for offline use and syncs directly with Salesforce, so workers in areas with no connectivity are never blocked.
Built for every NGO, not just one. The multi-tenant architecture means any organisation can install both assistants, connect their own Salesforce org, and get a fully isolated instance without touching anyone else's data. What started as a solution for Jagruti is ready to scale to any community health programme in the world.
Qualitative intelligence is now searchable. Years of field worker observations, previously lost in WhatsApp chat histories, are now searchable through Slackbot, synthesisable, and permanently saved in Salesforce.
Training built into the platform. The nine onboarding canvases live inside the same Slack workspace field workers use every day. Training and work happen in the same place.
Real time SAM alerting with zero delay. A SAM classification triggers an alert within seconds of the record being saved, whether through Slack or the Android app. No daily report, no manual escalation, no delay.
What we learned
Conversational data is as valuable as structured data. The Salesforce dataset tells you what is happening. The field workers' daily observations tell you why. Combining both, through Slackbot, produces answers that neither could produce alone.
The MCP standard changes what integration means. With Salesforce's Hosted MCP Server, the integration layer effectively disappears. No custom API code was required for Slackbot to query Salesforce securely.
Two assistants can be simpler than one. Splitting natural language conversation into Slackbot and structured actions into Nutrition Agent's slash commands made each assistant easier to understand on its own, rather than asking one bot to do everything.
Onboarding is a product, not a document. Field workers needed to understand not just how to use the tools but why they were designed the way they are, what they replace, and what to do when they fail. That level of care is rarely given to enterprise software, but it should be.
Language is infrastructure. Building Sarvam AI translation into Nutrition Agent's message pipeline, rather than asking field workers to adapt to English, changed the entire character of the platform.
What's next for Nutrition Agent
Kannada first interface. Translating all nine canvases into Kannada with a language selector on the home canvas, so field workers can onboard entirely in their primary language. From there, the platform can expand across India with multi-language support and to any country where malnutrition demands urgent action.
Dashboard training integration. Extending Slackbot with richer analytical queries as field workers receive dashboard training, including trend analysis, longitudinal child tracking, and intervention outcome comparisons across districts.
Android app and Slack data unification. Surfacing app collected data directly in Slack through Slack Work Objects, so a field worker can see a child's full visit history, including offline collected data, without leaving Slack.
Voice input for field workers. Integrating voice to text in Kannada for daily observations and for Slackbot conversations, lowering the barrier of typing detailed observations on a smartphone after a long day in the field.
Built With
- aes-256-gcm
- agentforce
- anthropic-claude-(claude-sonnet-4-6)
- apex
- bolt-for-javascript
- javascript-(esm)
- model-context-protocol-(mcp)
- node.js-(esm)
- oauth
- railway
- railway-postgresql
- salesforce
- sarvam-api
- slack
- soql
- websocket-(socket-mode)
Log in or sign up for Devpost to join the conversation.