Samanvay: what we built, and how to try it

For the CRM2 team. 21 Oct 2026. All names and numbers in the demo are invented.

This is a demo. Try it, then send us your notes. Nothing here changes your own code or data.

2main apps: Leads and Teams
5demo accounts, one password
6languages in the home screen
0.97 sto open Leads (was 1.88 s)

1. What this is

Open the demo

Works best on a phone. A desktop browser also works.

Samanvay home screen with the Leads, Wisdom, Resources and Ask AI tiles

2. Try it

Open crm2-proto.anantmb.workers.dev. Sign in with one username below.

Password for every account: Jaigurudev123

PersonaUsernameTry this
Teachertour.teacher
  1. Open Leads. Tap Call on a lead.
  2. Open Survey. Look at your own QR.
  3. Open Teams. See your centre.
Volunteertour.volunteer
  1. Open Seva. Sign up for a shift.
  2. Open Seva Rides. Tap Need a ride.
  3. Open Promote. Share a video.
Second volunteertour.volunteer2
  1. Open Seva Rides. Tap Offer a ride.
  2. Answer the first volunteer's request.
  3. Watch the bell on both phones.
Coordinatortour.coordinator
  1. Open Leads. See the whole centre.
  2. Open Admin. Read Support requests.
  3. Open Announcements. Post a notice.
Admintour.admin
  1. On Home, tap Turn apps on or off.
  2. Switch Promote off.
  3. Go Home. The tile is gone. Switch it on again.

Tip: for the two volunteers, use two phones or two browsers.

3. The apps

Each tile on Home opens one app. You see only the apps your role may use.

An admin can turn any app off. Go to Home > Turn apps on or off. The tile hides at once. No rebuild.

Main apps

Leads

Leads app: list of leads assigned to you

Follow up with people you invited. Call or WhatsApp in one tap.

Try
  1. Tap Leads. Find "Assigned to you".
  2. Tap Call or WhatsApp on a lead.
  3. Tap Keep/share. Keep it, or share it with your centre.

One lead per phoneDo not contact needs a reasonUndo the last stepClosed list with reason

Teams

Teams app: your centre and its team

Your centre and its team. Invite people. Set the centre's place on the map.

Try
  1. Tap Teams. See your centre.
  2. Tap Add team member.
  3. Change "Days before an idle lead returns". Tap Save days.

More apps

Survey

Survey app

The Happiness Survey. Each volunteer has an own QR link.

  1. Tap Survey.
  2. Open your QR.
  3. Tap Results.

Seva

Seva app

Seva you can join near you. Sign up, check in, log hours.

  1. Tap Seva.
  2. Pick This week.
  3. Open a card and sign up.

Seva Rides

Seva Rides app

Shared rides to programs and seva.

  1. Tap Seva Rides.
  2. Tap Search near here.
  3. Tap Need a ride.

My Programs

My Programs app

Programs you run or attend.

  1. Tap My Programs.
  2. Open a program.
  3. See who comes.

Find Programs

Find Programs app

The Art of Living program catalog.

  1. Tap Find Programs.
  2. Search a program name.
  3. Open one.

Announcements

Announcements app

Notices for your centre or region.

  1. Tap Announcements.
  2. Read the newest.
  3. Coordinators: post one.

Promote

Promote app

Videos, posters, your program links and ready messages.

  1. Tap Promote.
  2. Pick Videos.
  3. Tap Share.

Admin (staff only)

Admin hub

Accounts, support requests, return rules, data import, connected apps.

  1. Sign in as coordinator.
  2. Tap Admin.
  3. Open Support requests.

Profile and account

Profile screen

Your details and your language.

  1. Tap the round initial at top right.
  2. Change the language.
  3. Open any app. It uses your language.

Apps from the CRM2 team

These tiles show demo data in this demo.

Wisdom · talks by GurudevResources · posters, videos, templatesAsk AI · find or create anythingVTP · Volunteer Training ProgramCentres · find a centreEvents · events and sign-up

4. How it fits together

Before Home screen tile list fixed in code CRM2 modules only Postgres New tile? code change and a new deploy After Home + one top bar reads the app list when you sign in CRM2 modules own data, Postgres Added apps own data, D1 Admin switch any app on or off, no rebuild
  1. One home. All apps open from one tile screen.
  2. One top bar. Back, app name and account look the same in every app.
  3. Your tiles only. The app list is read at sign-in. Your role decides the tiles.
  4. Off without a rebuild. An admin switch hides a tile. The app then answers "not found".
  5. Two teams, no clash. CRM2 modules and added apps keep separate data. They meet only in the home screen and through APIs.

5. What changed in CRM2

ItemBeforeAfterWhy
App listThe tile list was fixed in code.Home reads the list at sign-in.A team adds an app without editing Home.
On/off switchEvery person saw every tile.Each app has a permission and a switch.An admin hides an unready app in one tap.
Top bar and app frameEach module drew its own header.One shared top bar. The app shows below it.Every app looks like one product. App teams build no header.
One web addressThe shell talked to CRM2's own backend only.Added apps run under the same address.One sign-in, one cookie, no cross-site setup.
Icons and languagesGeneric icons. English and Hindi.Sunburst icons. Six languages: English, Hindi, Marathi, Telugu, Gujarati, Kannada.One look, and the languages volunteers speak. The last four are drafts.
SpeedSign-in 1.12 s. Open Leads 1.88 s.Sign-in 0.57 s. Open Leads 0.97 s.A tile tap no longer reloads the whole page.

Speed: median of 3 runs, desktop browser at phone size. Phones were not measured.

6. User manual

How to read this. Each block is one app. Steps are in order. Each picture shows the screen for that step. All names and numbers are invented demo data.

Leads for volunteers and teachers

Goal: Add a person, call them, log what happened.

  1. Open Leads. Active leads show first. Closed leads have their own tab.
    Leads: Open Leads. Active leads show first. Closed leads have their
  2. Tap + Leads. Type a name and a mobile number. Pick how you know them, and write a short comment. The comment is required.
    Leads: Tap + Leads. Type a name and a mobile number. Pick how you kLeads: Tap + Leads. Type a name and a mobile number. Pick how you k
  3. Tap Send 1 to my team. A number your organisation already holds is skipped, and the screen says so.
    Leads: Tap Send 1 to my team. A number your organisation already hoLeads: Tap Send 1 to my team. A number your organisation already hoLeads: Tap Send 1 to my team. A number your organisation already ho
  4. Search by name or phone. Tap Filters to narrow by status, program or source.
    Leads: Search by name or phone. Tap Filters to narrow by status, prLeads: Search by name or phone. Tap Filters to narrow by status, prLeads: Search by name or phone. Tap Filters to narrow by status, prLeads: Search by name or phone. Tap Filters to narrow by status, pr
  5. Open a lead. Tap Call or WhatsApp. WhatsApp fills a message from a template. Tap Open WhatsApp to send.
    Leads: Open a lead. Tap Call or WhatsApp. WhatsApp fills a message Leads: Open a lead. Tap Call or WhatsApp. WhatsApp fills a message
  6. Tap Log. Pick the outcome, add a comment, then tap Save update. Tap Undo in the bar if you tapped wrong.
    Leads: Tap Log. Pick the outcome, add a comment, then tap Save updaLeads: Tap Log. Pick the outcome, add a comment, then tap Save updaLeads: Tap Log. Pick the outcome, add a comment, then tap Save updaLeads: Tap Log. Pick the outcome, add a comment, then tap Save upda
  7. To stop all contact, pick Not interested and tick the do-not-contact box. The lead closes and shows Do not contact.
    Leads: To stop all contact, pick Not interested and tick the do-notLeads: To stop all contact, pick Not interested and tick the do-notLeads: To stop all contact, pick Not interested and tick the do-not
  8. Tap Keep/share to keep a lead, show it to your team, or open it to the team. Tap Save.
    Leads: Tap Keep/share to keep a lead, show it to your team, or openLeads: Tap Keep/share to keep a lead, show it to your team, or openLeads: Tap Keep/share to keep a lead, show it to your team, or open
  9. Tap Assign to give a lead to someone else. Pick a team or a person, then tap Take this one or the assign button.
    Leads: Tap Assign to give a lead to someone else. Pick a team or a Leads: Tap Assign to give a lead to someone else. Pick a team or a Leads: Tap Assign to give a lead to someone else. Pick a team or a Leads: Tap Assign to give a lead to someone else. Pick a team or a
Teams for team coordinators

Goal: See your teams, add a team, add a person.

  1. Open Teams. You see each team with its calls and registrations, and the people in your area.
    Teams: Open Teams. You see each team with its calls and registratio
  2. Tap Add a new team. Type a name. Pick a map place if you want one. Tap Add team.
    Teams: Tap Add a new team. Type a name. Pick a map place if you wanTeams: Tap Add a new team. Type a name. Pick a map place if you wanTeams: Tap Add a new team. Type a name. Pick a map place if you wanTeams: Tap Add a new team. Type a name. Pick a map place if you wan
  3. Tap Add team member. Type a mobile number and pick a role. Tap Add. The person gets an invitation on WhatsApp.
    Teams: Tap Add team member. Type a mobile number and pick a role. TTeams: Tap Add team member. Type a mobile number and pick a role. T
Announcements for teachers

Goal: Post a notice to one team or all teams.

  1. Open Announcements. Tap New announcement.
    Announcements: Open Announcements. Tap New announcement.
  2. Pick the team. Type a title and a message. Tap Post.
    Announcements: Pick the team. Type a title and a message. Tap Post.Announcements: Pick the team. Type a title and a message. Tap Post.
  3. Everyone on the team reads it in the same screen. You can edit or remove your notice.
    Announcements: Everyone on the team reads it in the same screen. You can ed
Find Programs for everyone

Goal: Find a program by place, language or PIN code.

  1. Open Find Programs. Sessions for the next 30 days show first, grouped by when.
    Find Programs: Open Find Programs. Sessions for the next 30 days show first
  2. Type a place, language or PIN code in the search box.
    Find Programs: Type a place, language or PIN code in the search box.
  3. Tap the chat button on a session to share it on WhatsApp.
    Find Programs: Tap the chat button on a session to share it on WhatsApp.
My Programs for teachers

Goal: See your sessions and share them.

  1. Open My Programs. You see coming up and running sessions, and weekly sessions.
    My Programs: Open My Programs. You see coming up and running sessions, an
  2. Tap a session for dates, place, contribution and who to contact.
    My Programs: Tap a session for dates, place, contribution and who to cont
  3. Tap Share on WhatsApp to invite people. You can also set a map place or look at rides and seva for the session.
    My Programs: Tap Share on WhatsApp to invite people. You can also set a m
Promote for volunteers

Goal: Find links and material to share.

  1. Open Promote. Tap My links to see your own link and how many clicks and registrations it has.
    Promote: Open Promote. Tap My links to see your own link and how many
  2. Tap Videos to find a video. Use Kind, Language and Max minutes. Tap Share.
    Promote: Tap Videos to find a video. Use Kind, Language and Max minut
  3. Posters and Messages are in this demo with sample data. The real posters and texts come later.
    Promote: Posters and Messages are in this demo with sample data. The Promote: Posters and Messages are in this demo with sample data. The
Seva Rides for volunteers and riders

Goal: Offer or ask for a ride to a session.

  1. Open Seva Rides. Pick My location, My centre or PIN code, and a distance.
    Seva Rides: Open Seva Rides. Pick My location, My centre or PIN code, an
  2. Tap Search near here. Pick Going or Coming back. Open a ride to ask for a seat.
    Seva Rides: Tap Search near here. Pick Going or Coming back. Open a ride
Seva for volunteers and coordinators

Goal: Find seva near you and sign up. Coordinators add seva.

  1. Open Seva. Tap Near me or Near my centre. Use Any date, This week or 30 days to narrow it.
    Seva: Open Seva. Tap Near me or Near my centre. Use Any date, This
  2. Open a seva. Tap I will do this. Tick that you are 18 or older. Tap I will do this again.
    Seva: Open a seva. Tap I will do this. Tick that you are 18 or oldSeva: Open a seva. Tap I will do this. Tick that you are 18 or old
  3. Coordinators: tap Add seva opportunity. Pick the team, the kind of seva, the time and how many people. Tap Add a shift for more times.
    Seva: Coordinators: tap Add seva opportunity. Pick the team, the kSeva: Coordinators: tap Add seva opportunity. Pick the team, the kSeva: Coordinators: tap Add seva opportunity. Pick the team, the k
  4. Tap Publish. The seva shows in the list.
    Seva: Tap Publish. The seva shows in the list.
Survey for teachers

Goal: Make a link or QR code for a survey and read the answers.

  1. Open Survey. Ready-made forms are listed. Tap Survey for another source.
    Survey: Open Survey. Ready-made forms are listed. Tap Survey for ano
  2. Pick a form and a source. Set how many days the link works. Tap Make the QR.
    Survey: Pick a form and a source. Set how many days the link works. Survey: Pick a form and a source. Set how many days the link works.
  3. Share the link or the QR. Tap Copy link or Share on WhatsApp. Tap Stop this link to close it.
    Survey: Share the link or the QR. Tap Copy link or Share on WhatsApp
  4. Tap Results to see the answers and the new leads that came from the survey.
    Survey: Tap Results to see the answers and the new leads that came f
Profile and account for everyone

Goal: Change your language, see your profile, ask for a change.

  1. Tap your round account button at the top right. Pick a language from the six listed. The screen changes at once.
    Profile and account: Tap your round account button at the top right. Pick a languProfile and account: Tap your round account button at the top right. Pick a langu
  2. Open Profile and Account. To change your name, areas or PIN codes, send a request. An admin approves it.
    Profile and account: Open Profile and Account. To change your name, areas or PIN

Not in this manual yet: Admin, Wisdom, Resources, Ask AI, VTP. Posters, messages and videos in Promote show sample data.

7. For developers

Architecture now

Phone browser Samanvay shell (volunteer2-fe) sign-in · top bar · tile grid · app frame one address: one cookie, no CORS HTTP Worker link CRM2 modules volunteer-be, /api/v1/* Added apps AOL-Connect Worker Postgres (CRM2 team) D1 (added apps) The two sides share no tables. They meet only in the shell and through APIs.
  1. The shell (apps/volunteer2-fe) owns sign-in, the top bar, the tile grid and the app frame.
  2. CRM2 modules use volunteer-be and Postgres, as before.
  3. Added apps run in the AOL-Connect Worker on D1.
  4. A Worker link (service binding) puts them under the shell's address. One cookie works for both.

How an app plugs in

1. A row in the app list id, entry, permission, switch 2. A tile on Home GET /api/apps: only your rows 3. The door /x/<id>/ checks session and switch 4. The app in the frame top bar, app page below Switch off? tile hidden door: 404
  1. Add one row to the app list (packages/app-registry): id, entry, permission, switch.
  2. GET /api/apps returns only the rows this person may open.
  3. A tap opens /x/<id>/. This "door" checks the session and the switch.
  4. The shell draws the top bar. The app page loads below it, with no bar of its own.
  5. The page talks back with 4 messages only: back, title, badge, language. Each is checked.
  6. Switch off: the tile hides. The door and the app's API answer 404.

The PR plan: 21 branches, app by app

Shell AOL core Leads, Teams Other apps Last Merge same time any order 1 app-registry2 shell-bar-frame3 brand-icons-i18n3b brand-samanvay4 shell-speed5 shell-flows 6 core-tooling7 aol-core8 aol-core-ui 9a leads9b leads-intake9c leads-bulk10 teams 11 programs12 survey13 seva14 seva-rides15 announcements16 promote 17 admin-profile18 aol-integration feature/samanvayevery PR goes here devone final PR Arrow = must merge first. Shell and AOL core both finish before Leads. 14 lands after 13. 17 lands after all apps. 18 lands last.
  1. Every branch opens a PR into feature/samanvay, not into dev. One bad PR then cannot break dev for the team.
  2. When all 21 are merged and the team agrees, one PR merges feature/samanvay into dev.
  3. Shell (1 to 5) and AOL core (6 to 8) go at the same time. Then Leads and Teams.
  4. Leads is too big for one PR. It goes as three stacked PRs: 9a, 9b, 9c. Each passes its own tests.
  5. Teams comes after Leads. Its centre view reads the Leads API.
  6. All database steps (77 migrations) go in the AOL core PR. D1 applies them in one fixed order.
  7. AOL code stays outside the team's pnpm workspace. Its own CI lane runs its build and tests.
#BranchWhat it addsLines
1feat/app-registryRuntime app list, permission per tile, switches, Admin › Apps~1.9k
2feat/shell-bar-frameTop bar, app frame, door, Home and Back, sign-in handoff~2.1k
3feat/shell-brand-icons-i18nSamanvay brand, Sunburst icons, six-language shell~5.3k
3bchore/brand-samanvaySeva → Samanvay in team apps (the team may refuse this one alone)~0.2k
4perf/shell-speedCached assets, boot data in the page, one chunk per module~0.3k
5test/shell-flowsBrowser flows for the shell~0.7k
6chore/aol-core-toolingPackage, seeds, invented test data, boundary check, CI lane~16k
7feat/aol-coreAuth, session, scope, roles, people, lead store, all migrations~25k
8feat/aol-core-uiUI kit, router, store, core texts~14k
9afeat/app-leadsLead queue, detail, follow-ups, status~32k
9bfeat/app-leads-intakeIntake, ads, coverage, lead sources and fields~27k
9cfeat/app-leads-bulkImport, export, refer, offline book~12k
10feat/app-teamsTeam tree, members, invites, centre profile~10k
11feat/app-programsMy Programs and Find Programs~21k
12feat/app-surveyHappiness Survey and form builder~11k
13feat/app-sevaSeva callouts, shifts, roster, safety~14k
14feat/app-seva-ridesRide offers, needs, notices~10k
15feat/app-announcementsAnnouncements tile~1k
16feat/app-promoteVideos, posters, program links, messages~2.3k
17feat/app-admin-profileStaff hub and own profile~12k
18test/aol-integrationTests that cross two or more apps~26k
TotalLines are added lines, ±30%, tests and texts included≈245k

What stays in the demo only

Stays in the demoWhat the team uses
Demo sign-in (stub code and stub session)CRM2's own sign-in. The added apps accept the shell's handoff.
Our AOL sign-in screens inside the shellNone. A CRM2 person maps to an AOL user by verified phone. A handoff never creates an account.
Local stub of the CI SDK and the demo Worker configThe real CI SDK and the team's own config.
The link to our own demo databaseThe team links its own AOL-Connect Worker and D1 per environment.
The name "Samanvay" in team-owned appsOnly if the group agrees (branch 3b).

8. What is next

  1. The team tries the demo and sends notes.
  2. PRs open app by app. Leads and Teams first.
  3. The user manual covers Admin, Wisdom, Resources, Ask AI and VTP.
  4. Hindi is checked. Then Marathi, Telugu, Gujarati and Kannada.
  5. The group decides on the name, and on D1 for new apps.